openmetadata-ingestion 1.6.9.0__py3-none-any.whl → 1.6.11.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openmetadata-ingestion might be problematic. Click here for more details.

Files changed (682) hide show
  1. metadata/data_quality/validations/models.py +3 -0
  2. metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +120 -0
  3. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +61 -47
  4. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +24 -0
  5. metadata/generated/schema/analytics/__init__.py +1 -1
  6. metadata/generated/schema/analytics/basic.py +1 -1
  7. metadata/generated/schema/analytics/reportData.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  15. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  16. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  17. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  19. metadata/generated/schema/api/__init__.py +1 -1
  20. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  21. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  22. metadata/generated/schema/api/analytics/__init__.py +1 -1
  23. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  24. metadata/generated/schema/api/automations/__init__.py +1 -1
  25. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  26. metadata/generated/schema/api/bulkAssets.py +1 -1
  27. metadata/generated/schema/api/classification/__init__.py +1 -1
  28. metadata/generated/schema/api/classification/createClassification.py +1 -1
  29. metadata/generated/schema/api/classification/createTag.py +1 -1
  30. metadata/generated/schema/api/classification/loadTags.py +1 -1
  31. metadata/generated/schema/api/createBot.py +1 -1
  32. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  33. metadata/generated/schema/api/createType.py +1 -1
  34. metadata/generated/schema/api/data/__init__.py +1 -1
  35. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  36. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  37. metadata/generated/schema/api/data/createChart.py +1 -1
  38. metadata/generated/schema/api/data/createContainer.py +1 -1
  39. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  40. metadata/generated/schema/api/data/createDashboard.py +1 -1
  41. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  42. metadata/generated/schema/api/data/createDatabase.py +1 -1
  43. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  44. metadata/generated/schema/api/data/createGlossary.py +1 -1
  45. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  46. metadata/generated/schema/api/data/createMetric.py +1 -1
  47. metadata/generated/schema/api/data/createMlModel.py +1 -1
  48. metadata/generated/schema/api/data/createPipeline.py +1 -1
  49. metadata/generated/schema/api/data/createQuery.py +1 -1
  50. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  51. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  52. metadata/generated/schema/api/data/createTable.py +1 -1
  53. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  54. metadata/generated/schema/api/data/createTopic.py +1 -1
  55. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  56. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  57. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  58. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  59. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  60. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  61. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  62. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  63. metadata/generated/schema/api/docStore/__init__.py +1 -1
  64. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  65. metadata/generated/schema/api/domains/__init__.py +1 -1
  66. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  67. metadata/generated/schema/api/domains/createDomain.py +1 -1
  68. metadata/generated/schema/api/feed/__init__.py +1 -1
  69. metadata/generated/schema/api/feed/closeTask.py +1 -1
  70. metadata/generated/schema/api/feed/createPost.py +1 -1
  71. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  72. metadata/generated/schema/api/feed/createThread.py +1 -1
  73. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  74. metadata/generated/schema/api/feed/threadCount.py +1 -1
  75. metadata/generated/schema/api/governance/__init__.py +1 -1
  76. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  77. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  78. metadata/generated/schema/api/lineage/__init__.py +1 -1
  79. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  80. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  81. metadata/generated/schema/api/policies/__init__.py +1 -1
  82. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  83. metadata/generated/schema/api/services/__init__.py +1 -1
  84. metadata/generated/schema/api/services/createApiService.py +1 -1
  85. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  86. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  87. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  88. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  89. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  90. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  91. metadata/generated/schema/api/services/createSearchService.py +1 -1
  92. metadata/generated/schema/api/services/createStorageService.py +1 -1
  93. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  94. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  95. metadata/generated/schema/api/setOwner.py +1 -1
  96. metadata/generated/schema/api/teams/__init__.py +1 -1
  97. metadata/generated/schema/api/teams/createPersona.py +1 -1
  98. metadata/generated/schema/api/teams/createRole.py +1 -1
  99. metadata/generated/schema/api/teams/createTeam.py +1 -1
  100. metadata/generated/schema/api/teams/createUser.py +1 -1
  101. metadata/generated/schema/api/tests/__init__.py +1 -1
  102. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  103. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  104. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  105. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  106. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  107. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  108. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  109. metadata/generated/schema/api/voteRequest.py +1 -1
  110. metadata/generated/schema/auth/__init__.py +1 -1
  111. metadata/generated/schema/auth/basicAuth.py +1 -1
  112. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  113. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  114. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  115. metadata/generated/schema/auth/emailRequest.py +1 -1
  116. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  117. metadata/generated/schema/auth/generateToken.py +1 -1
  118. metadata/generated/schema/auth/jwtAuth.py +1 -1
  119. metadata/generated/schema/auth/loginRequest.py +1 -1
  120. metadata/generated/schema/auth/logoutRequest.py +1 -1
  121. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  122. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  123. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  124. metadata/generated/schema/auth/refreshToken.py +1 -1
  125. metadata/generated/schema/auth/registrationRequest.py +1 -1
  126. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  127. metadata/generated/schema/auth/revokeToken.py +1 -1
  128. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  129. metadata/generated/schema/auth/ssoAuth.py +1 -1
  130. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  131. metadata/generated/schema/configuration/__init__.py +1 -1
  132. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  133. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  134. metadata/generated/schema/configuration/authConfig.py +1 -1
  135. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  136. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  137. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  138. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  139. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  142. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  143. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  144. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  145. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  146. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  147. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  148. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  149. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  150. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  151. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  152. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  153. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  154. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  155. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  156. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/searchSettings.py +1 -1
  158. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  163. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  164. metadata/generated/schema/dataInsight/__init__.py +1 -1
  165. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  166. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  167. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  168. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  169. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  170. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  171. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  172. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  173. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  174. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  175. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  176. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  177. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  178. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  179. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  180. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  181. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  182. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  183. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  184. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  185. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  186. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  187. metadata/generated/schema/email/__init__.py +1 -1
  188. metadata/generated/schema/email/emailRequest.py +1 -1
  189. metadata/generated/schema/email/emailTemplate.py +1 -1
  190. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  191. metadata/generated/schema/email/smtpSettings.py +1 -1
  192. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  193. metadata/generated/schema/entity/__init__.py +1 -1
  194. metadata/generated/schema/entity/applications/__init__.py +1 -1
  195. metadata/generated/schema/entity/applications/app.py +1 -1
  196. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  197. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  198. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  199. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  200. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  201. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  202. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  203. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  204. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  205. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  206. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  207. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  208. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  209. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  210. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  211. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  212. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  213. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  214. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  215. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  216. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  217. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  218. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  219. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  220. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  222. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  224. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  226. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  227. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  228. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  229. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  230. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  231. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  232. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  233. metadata/generated/schema/entity/automations/__init__.py +1 -1
  234. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  235. metadata/generated/schema/entity/automations/workflow.py +1 -1
  236. metadata/generated/schema/entity/bot.py +1 -1
  237. metadata/generated/schema/entity/classification/__init__.py +1 -1
  238. metadata/generated/schema/entity/classification/classification.py +1 -1
  239. metadata/generated/schema/entity/classification/tag.py +1 -1
  240. metadata/generated/schema/entity/data/__init__.py +1 -1
  241. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  242. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  243. metadata/generated/schema/entity/data/chart.py +1 -1
  244. metadata/generated/schema/entity/data/container.py +1 -1
  245. metadata/generated/schema/entity/data/dashboard.py +1 -1
  246. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  247. metadata/generated/schema/entity/data/database.py +1 -1
  248. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  249. metadata/generated/schema/entity/data/glossary.py +1 -1
  250. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  251. metadata/generated/schema/entity/data/metric.py +1 -1
  252. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  253. metadata/generated/schema/entity/data/pipeline.py +1 -1
  254. metadata/generated/schema/entity/data/query.py +1 -1
  255. metadata/generated/schema/entity/data/report.py +1 -1
  256. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  257. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  258. metadata/generated/schema/entity/data/table.py +1 -1
  259. metadata/generated/schema/entity/data/topic.py +1 -1
  260. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  261. metadata/generated/schema/entity/docStore/document.py +1 -1
  262. metadata/generated/schema/entity/domains/__init__.py +1 -1
  263. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  264. metadata/generated/schema/entity/domains/domain.py +1 -1
  265. metadata/generated/schema/entity/events/__init__.py +1 -1
  266. metadata/generated/schema/entity/events/webhook.py +1 -1
  267. metadata/generated/schema/entity/feed/__init__.py +1 -1
  268. metadata/generated/schema/entity/feed/assets.py +1 -1
  269. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  270. metadata/generated/schema/entity/feed/description.py +1 -1
  271. metadata/generated/schema/entity/feed/domain.py +1 -1
  272. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  273. metadata/generated/schema/entity/feed/owner.py +1 -1
  274. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  275. metadata/generated/schema/entity/feed/tag.py +1 -1
  276. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  277. metadata/generated/schema/entity/feed/thread.py +1 -1
  278. metadata/generated/schema/entity/policies/__init__.py +1 -1
  279. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  280. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  281. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  282. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  283. metadata/generated/schema/entity/policies/filters.py +1 -1
  284. metadata/generated/schema/entity/policies/policy.py +1 -1
  285. metadata/generated/schema/entity/services/__init__.py +1 -1
  286. metadata/generated/schema/entity/services/apiService.py +1 -1
  287. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  288. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  289. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  290. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  291. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  292. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  293. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  294. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  295. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  296. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  297. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  302. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  303. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  304. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  305. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  306. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  307. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  308. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  309. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  310. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  314. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  318. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  319. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  320. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  321. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  322. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  324. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  325. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  326. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  327. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  328. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  329. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  330. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  332. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  333. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  334. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  335. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  336. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  340. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  341. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  342. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  351. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  384. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  390. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  398. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  404. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  418. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  419. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  421. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  422. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  423. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  430. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  432. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  433. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  434. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  438. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  443. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  444. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  445. metadata/generated/schema/entity/services/databaseService.py +1 -1
  446. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  447. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  448. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  449. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  450. metadata/generated/schema/entity/services/messagingService.py +1 -1
  451. metadata/generated/schema/entity/services/metadataService.py +1 -1
  452. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  453. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  454. metadata/generated/schema/entity/services/searchService.py +1 -1
  455. metadata/generated/schema/entity/services/serviceType.py +1 -1
  456. metadata/generated/schema/entity/services/storageService.py +1 -1
  457. metadata/generated/schema/entity/teams/__init__.py +1 -1
  458. metadata/generated/schema/entity/teams/persona.py +1 -1
  459. metadata/generated/schema/entity/teams/role.py +1 -1
  460. metadata/generated/schema/entity/teams/team.py +1 -1
  461. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  462. metadata/generated/schema/entity/teams/user.py +1 -1
  463. metadata/generated/schema/entity/type.py +1 -1
  464. metadata/generated/schema/entity/utils/__init__.py +1 -1
  465. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  466. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  467. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  468. metadata/generated/schema/events/__init__.py +1 -1
  469. metadata/generated/schema/events/alertMetrics.py +1 -1
  470. metadata/generated/schema/events/api/__init__.py +1 -1
  471. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  472. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  473. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  474. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  475. metadata/generated/schema/events/api/typedEvent.py +1 -1
  476. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  477. metadata/generated/schema/events/eventFilterRule.py +1 -1
  478. metadata/generated/schema/events/eventSubscription.py +1 -1
  479. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  480. metadata/generated/schema/events/failedEvent.py +1 -1
  481. metadata/generated/schema/events/failedEventResponse.py +1 -1
  482. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  483. metadata/generated/schema/events/statusContext.py +1 -1
  484. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  485. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  486. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  487. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  488. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  489. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  490. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  491. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  492. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  493. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  494. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  495. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  496. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  497. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  498. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  499. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  500. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  501. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  502. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  503. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  504. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  505. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  506. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  507. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  508. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  509. metadata/generated/schema/jobs/__init__.py +1 -1
  510. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  511. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  512. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  513. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  514. metadata/generated/schema/metadataIngestion/application.py +1 -1
  515. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  516. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  517. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  518. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  519. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  520. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  521. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  522. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  523. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  524. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  525. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  526. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  527. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  528. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  529. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  530. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  531. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  532. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  533. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  534. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  535. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  536. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  537. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  538. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  539. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  540. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  541. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  542. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  543. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  544. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  545. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  546. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  547. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  548. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  549. metadata/generated/schema/monitoring/__init__.py +1 -1
  550. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  551. metadata/generated/schema/security/__init__.py +1 -1
  552. metadata/generated/schema/security/client/__init__.py +1 -1
  553. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  554. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  555. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  556. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  557. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  558. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  559. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  560. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  561. metadata/generated/schema/security/credentials/__init__.py +1 -1
  562. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  563. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  564. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  565. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  566. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  567. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  568. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  569. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  570. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  571. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  572. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  573. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  574. metadata/generated/schema/security/sasl/__init__.py +1 -1
  575. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  576. metadata/generated/schema/security/secrets/__init__.py +1 -1
  577. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  578. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  579. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  580. metadata/generated/schema/security/securityConfiguration.py +1 -1
  581. metadata/generated/schema/security/ssl/__init__.py +1 -1
  582. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  583. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  584. metadata/generated/schema/settings/__init__.py +1 -1
  585. metadata/generated/schema/settings/settings.py +1 -1
  586. metadata/generated/schema/system/__init__.py +1 -1
  587. metadata/generated/schema/system/entityError.py +1 -1
  588. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  589. metadata/generated/schema/system/indexingError.py +1 -1
  590. metadata/generated/schema/system/limitsResponse.py +1 -1
  591. metadata/generated/schema/system/ui/__init__.py +1 -1
  592. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  593. metadata/generated/schema/system/ui/page.py +1 -1
  594. metadata/generated/schema/system/validationResponse.py +1 -1
  595. metadata/generated/schema/tests/__init__.py +1 -1
  596. metadata/generated/schema/tests/assigned.py +1 -1
  597. metadata/generated/schema/tests/basic.py +1 -1
  598. metadata/generated/schema/tests/customMetric.py +1 -1
  599. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  600. metadata/generated/schema/tests/resolved.py +1 -1
  601. metadata/generated/schema/tests/testCase.py +1 -1
  602. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  603. metadata/generated/schema/tests/testDefinition.py +1 -1
  604. metadata/generated/schema/tests/testSuite.py +1 -1
  605. metadata/generated/schema/type/__init__.py +1 -1
  606. metadata/generated/schema/type/apiSchema.py +1 -1
  607. metadata/generated/schema/type/assetCertification.py +1 -1
  608. metadata/generated/schema/type/auditLog.py +1 -1
  609. metadata/generated/schema/type/basic.py +1 -1
  610. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  611. metadata/generated/schema/type/changeEvent.py +1 -1
  612. metadata/generated/schema/type/changeEventType.py +1 -1
  613. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  614. metadata/generated/schema/type/csvDocumentation.py +1 -1
  615. metadata/generated/schema/type/csvErrorType.py +1 -1
  616. metadata/generated/schema/type/csvFile.py +1 -1
  617. metadata/generated/schema/type/csvImportResult.py +1 -1
  618. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  619. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  620. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  621. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  622. metadata/generated/schema/type/customProperty.py +1 -1
  623. metadata/generated/schema/type/dailyCount.py +1 -1
  624. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  625. metadata/generated/schema/type/entityHierarchy.py +1 -1
  626. metadata/generated/schema/type/entityHistory.py +1 -1
  627. metadata/generated/schema/type/entityLineage.py +1 -1
  628. metadata/generated/schema/type/entityReference.py +1 -1
  629. metadata/generated/schema/type/entityReferenceList.py +1 -1
  630. metadata/generated/schema/type/entityRelationship.py +1 -1
  631. metadata/generated/schema/type/entityUsage.py +1 -1
  632. metadata/generated/schema/type/filterPattern.py +1 -1
  633. metadata/generated/schema/type/function.py +1 -1
  634. metadata/generated/schema/type/include.py +1 -1
  635. metadata/generated/schema/type/jdbcConnection.py +1 -1
  636. metadata/generated/schema/type/lifeCycle.py +1 -1
  637. metadata/generated/schema/type/paging.py +1 -1
  638. metadata/generated/schema/type/profile.py +1 -1
  639. metadata/generated/schema/type/queryParserData.py +1 -1
  640. metadata/generated/schema/type/reaction.py +1 -1
  641. metadata/generated/schema/type/schedule.py +1 -1
  642. metadata/generated/schema/type/schema.py +1 -1
  643. metadata/generated/schema/type/tableQuery.py +1 -1
  644. metadata/generated/schema/type/tableUsageCount.py +1 -1
  645. metadata/generated/schema/type/tagLabel.py +1 -1
  646. metadata/generated/schema/type/usageDetails.py +1 -1
  647. metadata/generated/schema/type/usageRequest.py +1 -1
  648. metadata/generated/schema/type/votes.py +1 -1
  649. metadata/ingestion/lineage/masker.py +8 -1
  650. metadata/ingestion/lineage/parser.py +6 -2
  651. metadata/ingestion/lineage/sql_lineage.py +98 -22
  652. metadata/ingestion/models/topology.py +9 -0
  653. metadata/ingestion/ometa/mixins/es_mixin.py +2 -0
  654. metadata/ingestion/ometa/ometa_api.py +36 -0
  655. metadata/ingestion/source/api/rest/metadata.py +15 -2
  656. metadata/ingestion/source/database/db2/service_spec.py +4 -1
  657. metadata/ingestion/source/database/druid/service_spec.py +5 -1
  658. metadata/ingestion/source/database/greenplum/service_spec.py +5 -1
  659. metadata/ingestion/source/database/hive/service_spec.py +5 -1
  660. metadata/ingestion/source/database/impala/service_spec.py +5 -1
  661. metadata/ingestion/source/database/lineage_processors.py +336 -0
  662. metadata/ingestion/source/database/lineage_source.py +134 -133
  663. metadata/ingestion/source/database/mariadb/service_spec.py +9 -1
  664. metadata/ingestion/source/database/pinotdb/service_spec.py +5 -1
  665. metadata/ingestion/source/database/singlestore/service_spec.py +6 -1
  666. metadata/ingestion/source/database/snowflake/data_diff/__init__.py +0 -0
  667. metadata/ingestion/source/database/snowflake/data_diff/data_diff.py +37 -0
  668. metadata/ingestion/source/database/snowflake/service_spec.py +4 -0
  669. metadata/ingestion/source/database/sqlite/service_spec.py +5 -1
  670. metadata/ingestion/source/database/stored_procedures_mixin.py +21 -158
  671. metadata/ingestion/source/database/teradata/service_spec.py +5 -1
  672. metadata/utils/db_utils.py +11 -1
  673. metadata/utils/execution_time_tracker.py +30 -0
  674. metadata/utils/lru_cache.py +14 -0
  675. metadata/utils/service_spec/default.py +4 -0
  676. metadata/utils/service_spec/service_spec.py +1 -0
  677. {openmetadata_ingestion-1.6.9.0.dist-info → openmetadata_ingestion-1.6.11.0.dist-info}/METADATA +358 -358
  678. {openmetadata_ingestion-1.6.9.0.dist-info → openmetadata_ingestion-1.6.11.0.dist-info}/RECORD +682 -678
  679. {openmetadata_ingestion-1.6.9.0.dist-info → openmetadata_ingestion-1.6.11.0.dist-info}/LICENSE +0 -0
  680. {openmetadata_ingestion-1.6.9.0.dist-info → openmetadata_ingestion-1.6.11.0.dist-info}/WHEEL +0 -0
  681. {openmetadata_ingestion-1.6.9.0.dist-info → openmetadata_ingestion-1.6.11.0.dist-info}/entry_points.txt +0 -0
  682. {openmetadata_ingestion-1.6.9.0.dist-info → openmetadata_ingestion-1.6.11.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,336 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ Mixin class with common Stored Procedures logic aimed at lineage.
13
+ """
14
+ import re
15
+ import time
16
+ import traceback
17
+ from copy import deepcopy
18
+ from datetime import datetime
19
+ from multiprocessing import Queue
20
+ from typing import Iterable, List, Optional, Union
21
+
22
+ import networkx as nx
23
+ from pydantic import BaseModel, ConfigDict, Field
24
+
25
+ from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
26
+ from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
27
+ from metadata.generated.schema.entity.data.storedProcedure import StoredProcedure
28
+ from metadata.generated.schema.entity.data.table import Table
29
+ from metadata.generated.schema.type.basic import SqlQuery, Timestamp
30
+ from metadata.generated.schema.type.entityLineage import Source as LineageSource
31
+ from metadata.generated.schema.type.entityReference import EntityReference
32
+ from metadata.generated.schema.type.tableQuery import TableQuery
33
+ from metadata.ingestion.api.models import Either
34
+ from metadata.ingestion.lineage.models import Dialect
35
+ from metadata.ingestion.lineage.sql_lineage import get_lineage_by_query
36
+ from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
37
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
38
+ from metadata.ingestion.source.models import TableView
39
+ from metadata.utils import fqn
40
+ from metadata.utils.db_utils import get_view_lineage
41
+ from metadata.utils.logger import ingestion_logger
42
+ from metadata.utils.time_utils import datetime_to_timestamp
43
+
44
+ logger = ingestion_logger()
45
+
46
+ # pylint: disable=invalid-name
47
+
48
+
49
+ class QueryByProcedure(BaseModel):
50
+ """
51
+ Query(ies) executed by each stored procedure
52
+ """
53
+
54
+ procedure_name: str = Field(None, alias="PROCEDURE_NAME")
55
+ query_type: str = Field(..., alias="QUERY_TYPE")
56
+ query_database_name: Optional[str] = Field(None, alias="QUERY_DATABASE_NAME")
57
+ query_schema_name: Optional[str] = Field(None, alias="QUERY_SCHEMA_NAME")
58
+ procedure_text: str = Field(..., alias="PROCEDURE_TEXT")
59
+ procedure_start_time: datetime = Field(..., alias="PROCEDURE_START_TIME")
60
+ procedure_end_time: datetime = Field(..., alias="PROCEDURE_END_TIME")
61
+ query_start_time: Optional[datetime] = Field(None, alias="QUERY_START_TIME")
62
+ query_duration: Optional[float] = Field(None, alias="QUERY_DURATION")
63
+ query_text: str = Field(..., alias="QUERY_TEXT")
64
+ query_user_name: Optional[str] = Field(None, alias="QUERY_USER_NAME")
65
+
66
+ model_config = ConfigDict(populate_by_name=True)
67
+
68
+
69
+ class ProcedureAndQuery(BaseModel):
70
+ """
71
+ Model to hold the procedure and its queries
72
+ """
73
+
74
+ procedure: StoredProcedure
75
+ query_by_procedure: QueryByProcedure
76
+
77
+ model_config = ConfigDict(populate_by_name=True)
78
+
79
+
80
+ def is_lineage_query(query_type: str, query_text: str) -> bool:
81
+ """Check if it's worth it to parse the query for lineage"""
82
+
83
+ logger.debug(
84
+ f"Validating query lineage for type [{query_type}] and text [{query_text}]"
85
+ )
86
+
87
+ if query_type in ("MERGE", "UPDATE", "CREATE_TABLE_AS_SELECT"):
88
+ return True
89
+
90
+ if query_type == "INSERT" and re.search(
91
+ "^.*insert.*into.*select.*$", query_text.replace("\n", " "), re.IGNORECASE
92
+ ):
93
+ return True
94
+
95
+ return False
96
+
97
+
98
+ def _yield_procedure_lineage(
99
+ metadata: OpenMetadata,
100
+ service_name: str,
101
+ dialect: Dialect,
102
+ parsingTimeoutLimit: int,
103
+ query_by_procedure: QueryByProcedure,
104
+ procedure: StoredProcedure,
105
+ ) -> Iterable[Either[AddLineageRequest]]:
106
+ """Add procedure lineage from its query"""
107
+ if is_lineage_query(
108
+ query_type=query_by_procedure.query_type,
109
+ query_text=query_by_procedure.query_text,
110
+ ):
111
+ for either_lineage in get_lineage_by_query(
112
+ metadata,
113
+ query=query_by_procedure.query_text,
114
+ service_name=service_name,
115
+ database_name=query_by_procedure.query_database_name,
116
+ schema_name=query_by_procedure.query_schema_name,
117
+ dialect=dialect,
118
+ timeout_seconds=parsingTimeoutLimit,
119
+ lineage_source=LineageSource.QueryLineage,
120
+ ):
121
+ if either_lineage.left is None and either_lineage.right.edge.lineageDetails:
122
+ either_lineage.right.edge.lineageDetails.pipeline = EntityReference(
123
+ id=procedure.id,
124
+ type="storedProcedure",
125
+ )
126
+
127
+ yield either_lineage
128
+
129
+
130
+ def procedure_lineage_processor(
131
+ procedure_and_queries: List[ProcedureAndQuery],
132
+ queue: Queue,
133
+ metadata: OpenMetadata,
134
+ service_name: str,
135
+ dialect: Dialect,
136
+ parsingTimeoutLimit: int,
137
+ ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
138
+ """
139
+ Process the procedure and its queries to add lineage
140
+ """
141
+ for procedure_and_query in procedure_and_queries:
142
+ try:
143
+ for lineage in _yield_procedure_lineage(
144
+ query_by_procedure=procedure_and_query.query_by_procedure,
145
+ procedure=procedure_and_query.procedure,
146
+ metadata=deepcopy(metadata),
147
+ service_name=service_name,
148
+ dialect=dialect,
149
+ parsingTimeoutLimit=parsingTimeoutLimit,
150
+ ):
151
+ if lineage and lineage.right is not None:
152
+ queue.put(
153
+ Either(
154
+ right=OMetaLineageRequest(
155
+ override_lineage=False,
156
+ lineage_request=lineage.right,
157
+ entity=StoredProcedure,
158
+ entity_fqn=procedure_and_query.procedure.fullyQualifiedName.root,
159
+ )
160
+ )
161
+ )
162
+ else:
163
+ queue.put(lineage)
164
+ except Exception as exc:
165
+ logger.debug(traceback.format_exc())
166
+ logger.warning(
167
+ f"Could not get lineage for store procedure "
168
+ f"'{procedure_and_query.procedure.fullyQualifiedName}' due to [{exc}]."
169
+ )
170
+ try:
171
+ for lineage in yield_procedure_query(
172
+ query_by_procedure=procedure_and_query.query_by_procedure,
173
+ procedure=procedure_and_query.procedure,
174
+ service_name=service_name,
175
+ ):
176
+ queue.put(lineage)
177
+ except Exception as exc:
178
+ logger.debug(traceback.format_exc())
179
+ logger.warning(
180
+ f"Could not get query for store procedure "
181
+ f"'{procedure_and_query.procedure.fullyQualifiedName}' due to [{exc}]."
182
+ )
183
+
184
+
185
+ def yield_procedure_query(
186
+ query_by_procedure: QueryByProcedure, procedure: StoredProcedure, service_name: str
187
+ ) -> Iterable[Either[CreateQueryRequest]]:
188
+ """Check the queries triggered by the procedure and add their lineage, if any"""
189
+ stored_procedure_query_lineage = is_lineage_query(
190
+ query_type=query_by_procedure.query_type,
191
+ query_text=query_by_procedure.query_text,
192
+ )
193
+
194
+ yield Either(
195
+ right=CreateQueryRequest(
196
+ query=SqlQuery(query_by_procedure.query_text),
197
+ query_type=query_by_procedure.query_type,
198
+ duration=query_by_procedure.query_duration,
199
+ queryDate=Timestamp(
200
+ root=datetime_to_timestamp(query_by_procedure.query_start_time, True)
201
+ ),
202
+ triggeredBy=EntityReference(
203
+ id=procedure.id,
204
+ type="storedProcedure",
205
+ ),
206
+ processedLineage=bool(stored_procedure_query_lineage),
207
+ service=service_name,
208
+ )
209
+ )
210
+
211
+
212
+ # Function that will run in separate processes - defined at module level for pickling
213
+ def _process_chunk_in_subprocess(chunk, processor_fn, queue, *args):
214
+ """
215
+ Process a chunk of data in a subprocess.
216
+
217
+ Args:
218
+ chunk_and_processor_fn: Tuple containing (chunk, processor_fn, queue, *args)
219
+
220
+ Returns:
221
+ True if processing succeeded, False otherwise
222
+ """
223
+ try:
224
+ # Process each item in the chunk
225
+ processor_fn(chunk, queue, *args)
226
+ time.sleep(0.1)
227
+ return True
228
+ except Exception as e:
229
+ logger.error(f"Error processing chunk in subprocess: {e}")
230
+ logger.error(traceback.format_exc())
231
+ return False
232
+
233
+
234
+ def _query_already_processed(metadata: OpenMetadata, table_query: TableQuery) -> bool:
235
+ """
236
+ Check if a query has already been processed by validating if exists
237
+ in ES with lineageProcessed as True
238
+ """
239
+ checksums = metadata.es_get_queries_with_lineage(
240
+ service_name=table_query.serviceName,
241
+ )
242
+ return fqn.get_query_checksum(table_query.query) in checksums or {}
243
+
244
+
245
+ def query_lineage_generator(
246
+ table_queries: List[TableQuery],
247
+ queue: Queue,
248
+ metadata: OpenMetadata,
249
+ dialect: Dialect,
250
+ graph: nx.DiGraph,
251
+ parsingTimeoutLimit: int,
252
+ serviceName: str,
253
+ ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
254
+ """
255
+ Generate lineage for a list of table queries
256
+ """
257
+
258
+ for table_query in table_queries or []:
259
+ if not _query_already_processed(
260
+ metadata=deepcopy(metadata), table_query=table_query
261
+ ):
262
+ lineages: Iterable[Either[AddLineageRequest]] = get_lineage_by_query(
263
+ metadata=deepcopy(metadata),
264
+ query=table_query.query,
265
+ service_name=table_query.serviceName,
266
+ database_name=table_query.databaseName,
267
+ schema_name=table_query.databaseSchema,
268
+ dialect=dialect,
269
+ timeout_seconds=parsingTimeoutLimit,
270
+ graph=graph,
271
+ )
272
+
273
+ for lineage_request in lineages or []:
274
+ queue.put(lineage_request)
275
+
276
+ # If we identified lineage properly, ingest the original query
277
+ if lineage_request.right:
278
+ queue.put(
279
+ Either(
280
+ right=CreateQueryRequest(
281
+ query=SqlQuery(table_query.query),
282
+ query_type=table_query.query_type,
283
+ duration=table_query.duration,
284
+ processedLineage=True,
285
+ service=serviceName,
286
+ )
287
+ )
288
+ )
289
+
290
+
291
+ def view_lineage_generator(
292
+ views: List[TableView],
293
+ queue: Queue,
294
+ metadata: OpenMetadata,
295
+ serviceName: str,
296
+ connectionType: str,
297
+ parsingTimeoutLimit: int,
298
+ overrideViewLineage: bool,
299
+ ) -> Iterable[Either[AddLineageRequest]]:
300
+ """
301
+ Generate lineage for a list of views
302
+ """
303
+ try:
304
+ for view in views:
305
+ for lineage in get_view_lineage(
306
+ view=view,
307
+ metadata=deepcopy(metadata),
308
+ service_name=serviceName,
309
+ connection_type=connectionType,
310
+ timeout_seconds=parsingTimeoutLimit,
311
+ ):
312
+ if lineage.right is not None:
313
+ view_fqn = fqn.build(
314
+ metadata=deepcopy(metadata),
315
+ entity_type=Table,
316
+ service_name=serviceName,
317
+ database_name=view.db_name,
318
+ schema_name=view.schema_name,
319
+ table_name=view.table_name,
320
+ skip_es_search=True,
321
+ )
322
+ queue.put(
323
+ Either(
324
+ right=OMetaLineageRequest(
325
+ lineage_request=lineage.right,
326
+ override_lineage=overrideViewLineage,
327
+ entity_fqn=view_fqn,
328
+ entity=Table,
329
+ )
330
+ )
331
+ )
332
+ else:
333
+ queue.put(lineage)
334
+ except Exception as exc:
335
+ logger.debug(traceback.format_exc())
336
+ logger.warning(f"Error processing view {view}: {exc}")
@@ -16,35 +16,40 @@ import os
16
16
  import time
17
17
  import traceback
18
18
  from abc import ABC
19
- from concurrent.futures import ThreadPoolExecutor
19
+ from concurrent.futures import ProcessPoolExecutor
20
20
  from functools import partial
21
- from typing import Any, Callable, Iterable, Iterator, List, Union
21
+ from multiprocessing import Queue
22
+ from typing import Any, Callable, Iterable, Iterator, List, Optional, Tuple, Union
23
+
24
+ import networkx as nx
22
25
 
23
26
  from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
24
27
  from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
25
28
  from metadata.generated.schema.entity.data.table import Table
26
- from metadata.generated.schema.type.basic import FullyQualifiedEntityName, SqlQuery
29
+ from metadata.generated.schema.type.basic import Uuid
30
+ from metadata.generated.schema.type.entityLineage import (
31
+ ColumnLineage,
32
+ EntitiesEdge,
33
+ LineageDetails,
34
+ Source,
35
+ )
36
+ from metadata.generated.schema.type.entityReference import EntityReference
27
37
  from metadata.generated.schema.type.tableQuery import TableQuery
28
38
  from metadata.ingestion.api.models import Either
29
39
  from metadata.ingestion.lineage.models import ConnectionTypeDialectMapper, Dialect
30
- from metadata.ingestion.lineage.sql_lineage import (
31
- get_lineage_by_graph,
32
- get_lineage_by_query,
40
+ from metadata.ingestion.lineage.sql_lineage import get_column_fqn, get_lineage_by_graph
41
+ from metadata.ingestion.source.database.lineage_processors import (
42
+ _process_chunk_in_subprocess,
43
+ query_lineage_generator,
44
+ view_lineage_generator,
33
45
  )
34
- from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
35
- from metadata.ingestion.models.topology import Queue
36
46
  from metadata.ingestion.source.database.query_parser_source import QueryParserSource
37
- from metadata.ingestion.source.models import TableView
38
- from metadata.utils import fqn
39
- from metadata.utils.db_utils import get_view_lineage
40
47
  from metadata.utils.logger import ingestion_logger
41
48
 
42
49
  logger = ingestion_logger()
43
50
 
44
51
 
45
- CHUNK_SIZE = 200
46
-
47
- THREAD_TIMEOUT = 600
52
+ CHUNK_SIZE = 100
48
53
 
49
54
 
50
55
  class LineageSource(QueryParserSource, ABC):
@@ -107,10 +112,11 @@ class LineageSource(QueryParserSource, ABC):
107
112
  )
108
113
  yield from self.yield_table_query()
109
114
 
110
- def generate_lineage_in_thread(
115
+ def generate_lineage_with_processes(
111
116
  self,
112
117
  producer_fn: Callable[[], Iterable[Any]],
113
- processor_fn: Callable[[Any], Iterable[Any]],
118
+ processor_fn: Callable[[Any, Queue], None],
119
+ args: Tuple[Any, ...],
114
120
  chunk_size: int = CHUNK_SIZE,
115
121
  ):
116
122
  """
@@ -123,6 +129,7 @@ class LineageSource(QueryParserSource, ABC):
123
129
  """
124
130
 
125
131
  def chunk_generator():
132
+
126
133
  temp_chunk = []
127
134
  for chunk in producer_fn():
128
135
  temp_chunk.append(chunk)
@@ -133,34 +140,38 @@ class LineageSource(QueryParserSource, ABC):
133
140
  if temp_chunk:
134
141
  yield temp_chunk
135
142
 
136
- thread_pool = ThreadPoolExecutor(max_workers=self.source_config.threads)
137
- queue = Queue()
143
+ from multiprocessing import Manager
144
+
145
+ manager = Manager()
146
+ queue = manager.Queue()
147
+
148
+ process_pool = ProcessPoolExecutor(max_workers=self.source_config.threads)
138
149
 
139
150
  futures = [
140
- thread_pool.submit(
141
- processor_fn,
142
- chunk,
143
- queue,
151
+ process_pool.submit(
152
+ _process_chunk_in_subprocess, chunk, processor_fn, queue, *args
144
153
  )
145
154
  for chunk in chunk_generator()
146
155
  ]
147
156
  while True:
148
- if queue.has_tasks():
149
- yield from queue.process()
150
-
151
- else:
152
- if not futures:
153
- break
154
-
155
- for i, future in enumerate(futures):
156
- if future.done():
157
- try:
158
- future.result(timeout=THREAD_TIMEOUT)
159
- except Exception as e:
160
- logger.debug(f"Error in future: {e}")
161
- logger.debug(traceback.format_exc())
162
- futures.pop(i)
163
-
157
+ try:
158
+ while not queue.empty():
159
+ yield queue.get_nowait()
160
+ except Exception as exc:
161
+ logger.warning(f"Error processing queue: {exc}")
162
+ logger.debug(traceback.format_exc())
163
+
164
+ if not futures:
165
+ break
166
+
167
+ for i, future in enumerate(futures):
168
+ if future.done():
169
+ try:
170
+ future.result(timeout=0)
171
+ except Exception as e:
172
+ logger.debug(f"Error in future: {e}")
173
+ logger.debug(traceback.format_exc())
174
+ futures.pop(i)
164
175
  time.sleep(0.01)
165
176
 
166
177
  def yield_table_query(self) -> Iterator[TableQuery]:
@@ -193,57 +204,6 @@ class LineageSource(QueryParserSource, ABC):
193
204
  f"Error processing query_dict {query_dict}: {exc}"
194
205
  )
195
206
 
196
- def _query_already_processed(self, table_query: TableQuery) -> bool:
197
- """
198
- Check if a query has already been processed by validating if exists
199
- in ES with lineageProcessed as True
200
- """
201
- checksums = self.metadata.es_get_queries_with_lineage(
202
- service_name=table_query.serviceName,
203
- )
204
- return fqn.get_query_checksum(table_query.query) in checksums or {}
205
-
206
- def query_lineage_generator(
207
- self, table_queries: List[TableQuery], queue: Queue
208
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
209
- if self.graph is None and self.source_config.enableTempTableLineage:
210
- import networkx as nx
211
-
212
- # Create a directed graph
213
- self.graph = nx.DiGraph()
214
-
215
- for table_query in table_queries or []:
216
- if not self._query_already_processed(table_query):
217
- lineages: Iterable[Either[AddLineageRequest]] = get_lineage_by_query(
218
- self.metadata,
219
- query=table_query.query,
220
- service_name=table_query.serviceName,
221
- database_name=table_query.databaseName,
222
- schema_name=table_query.databaseSchema,
223
- dialect=self.dialect,
224
- timeout_seconds=self.source_config.parsingTimeoutLimit,
225
- graph=self.graph,
226
- )
227
-
228
- for lineage_request in lineages or []:
229
- queue.put(lineage_request)
230
-
231
- # If we identified lineage properly, ingest the original query
232
- if lineage_request.right:
233
- queue.put(
234
- Either(
235
- right=CreateQueryRequest(
236
- query=SqlQuery(table_query.query),
237
- query_type=table_query.query_type,
238
- duration=table_query.duration,
239
- processedLineage=True,
240
- service=FullyQualifiedEntityName(
241
- self.config.serviceName
242
- ),
243
- )
244
- )
245
- )
246
-
247
207
  def yield_query_lineage(
248
208
  self,
249
209
  ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
@@ -255,48 +215,19 @@ class LineageSource(QueryParserSource, ABC):
255
215
  connection_type = str(self.service_connection.type.value)
256
216
  self.dialect = ConnectionTypeDialectMapper.dialect_of(connection_type)
257
217
  producer_fn = self.get_table_query
258
- processor_fn = self.query_lineage_generator
259
- yield from self.generate_lineage_in_thread(
260
- producer_fn, processor_fn, CHUNK_SIZE
218
+ processor_fn = query_lineage_generator
219
+ args = (
220
+ self.metadata,
221
+ self.dialect,
222
+ self.graph,
223
+ self.source_config.parsingTimeoutLimit,
224
+ self.config.serviceName,
225
+ )
226
+ yield from self.generate_lineage_with_processes(
227
+ producer_fn,
228
+ processor_fn,
229
+ args,
261
230
  )
262
-
263
- def view_lineage_generator(
264
- self, views: List[TableView], queue: Queue
265
- ) -> Iterable[Either[AddLineageRequest]]:
266
- try:
267
- for view in views:
268
- for lineage in get_view_lineage(
269
- view=view,
270
- metadata=self.metadata,
271
- service_name=self.config.serviceName,
272
- connection_type=self.service_connection.type.value,
273
- timeout_seconds=self.source_config.parsingTimeoutLimit,
274
- ):
275
- if lineage.right is not None:
276
- view_fqn = fqn.build(
277
- metadata=self.metadata,
278
- entity_type=Table,
279
- service_name=self.service_name,
280
- database_name=view.db_name,
281
- schema_name=view.schema_name,
282
- table_name=view.table_name,
283
- skip_es_search=True,
284
- )
285
- queue.put(
286
- Either(
287
- right=OMetaLineageRequest(
288
- lineage_request=lineage.right,
289
- override_lineage=self.source_config.overrideViewLineage,
290
- entity_fqn=view_fqn,
291
- entity=Table,
292
- )
293
- )
294
- )
295
- else:
296
- queue.put(lineage)
297
- except Exception as exc:
298
- logger.debug(traceback.format_exc())
299
- logger.warning(f"Error processing view {view}: {exc}")
300
231
 
301
232
  def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
302
233
  logger.info("Processing View Lineage")
@@ -305,19 +236,86 @@ class LineageSource(QueryParserSource, ABC):
305
236
  self.config.serviceName,
306
237
  self.source_config.incrementalLineageProcessing,
307
238
  )
308
- processor_fn = self.view_lineage_generator
309
- yield from self.generate_lineage_in_thread(producer_fn, processor_fn)
239
+ processor_fn = view_lineage_generator
240
+ args = (
241
+ self.metadata,
242
+ self.config.serviceName,
243
+ self.service_connection.type.value,
244
+ self.source_config.parsingTimeoutLimit,
245
+ self.source_config.overrideViewLineage,
246
+ )
247
+ yield from self.generate_lineage_with_processes(producer_fn, processor_fn, args)
310
248
 
311
249
  def yield_procedure_lineage(
312
250
  self,
313
251
  ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
314
252
  """
315
- By default stored procedure lineage is not supported.
253
+ By default stored procedure lineage is not supported.
316
254
  """
317
255
  logger.info(
318
256
  f"Processing Procedure Lineage not supported for {str(self.service_connection.type.value)}"
319
257
  )
320
258
 
259
+ def get_column_lineage(
260
+ self, from_table: Table, to_table: Table
261
+ ) -> List[ColumnLineage]:
262
+ """
263
+ Get the column lineage from the fields
264
+ """
265
+ try:
266
+ column_lineage = []
267
+ for column in from_table.columns:
268
+ field = column.name.root
269
+ from_column = get_column_fqn(table_entity=from_table, column=field)
270
+ to_column = get_column_fqn(table_entity=to_table, column=field)
271
+ if from_column and to_column:
272
+ column_lineage.append(
273
+ ColumnLineage(fromColumns=[from_column], toColumn=to_column)
274
+ )
275
+
276
+ return column_lineage
277
+ except Exception as exc:
278
+ logger.debug(f"Error to get column lineage: {exc}")
279
+ logger.debug(traceback.format_exc())
280
+ return []
281
+
282
+ def get_add_cross_database_lineage_request(
283
+ self,
284
+ from_entity: Table,
285
+ to_entity: Table,
286
+ column_lineage: List[ColumnLineage] = None,
287
+ ) -> Optional[Either[AddLineageRequest]]:
288
+ """
289
+ Get the add cross database lineage request
290
+ """
291
+ if from_entity and to_entity:
292
+ return Either(
293
+ right=AddLineageRequest(
294
+ edge=EntitiesEdge(
295
+ fromEntity=EntityReference(
296
+ id=Uuid(from_entity.id.root), type="table"
297
+ ),
298
+ toEntity=EntityReference(
299
+ id=Uuid(to_entity.id.root), type="table"
300
+ ),
301
+ lineageDetails=LineageDetails(
302
+ source=Source.CrossDatabaseLineage,
303
+ columnsLineage=column_lineage,
304
+ ),
305
+ )
306
+ )
307
+ )
308
+
309
+ return None
310
+
311
+ def yield_cross_database_lineage(self) -> Iterable[Either[AddLineageRequest]]:
312
+ """
313
+ By default cross database lineage is not supported.
314
+ """
315
+ logger.info(
316
+ f"Processing Cross Database Lineage not supported for {str(self.service_connection.type.value)}"
317
+ )
318
+
321
319
  def _iter(
322
320
  self, *_, **__
323
321
  ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
@@ -325,6 +323,9 @@ class LineageSource(QueryParserSource, ABC):
325
323
  Based on the query logs, prepare the lineage
326
324
  and send it to the sink
327
325
  """
326
+ if self.graph is None and self.source_config.enableTempTableLineage:
327
+ # Create a directed graph
328
+ self.graph = nx.DiGraph()
328
329
  if self.source_config.processViewLineage:
329
330
  yield from self.yield_view_lineage() or []
330
331
  if self.source_config.processStoredProcedureLineage: