openmetadata-ingestion 1.5.13.0__py3-none-any.whl → 1.6.0.0rc2__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 (1009) hide show
  1. _openmetadata_testutils/dict.py +23 -0
  2. _openmetadata_testutils/pydantic/test_utils.py +22 -2
  3. _openmetadata_testutils/pytest_openmetadata/plugin.py +86 -0
  4. _openmetadata_testutils/pytest_openmetadata/test_utils.py +99 -0
  5. metadata/cli/app.py +1 -0
  6. metadata/cli/classify.py +52 -0
  7. metadata/cli/dataquality.py +4 -1
  8. metadata/cli/ingest.py +2 -1
  9. metadata/cli/lineage.py +2 -1
  10. metadata/cli/profile.py +4 -1
  11. metadata/cli/usage.py +2 -1
  12. metadata/cmd.py +9 -0
  13. metadata/config/common.py +3 -1
  14. metadata/data_quality/api/models.py +2 -1
  15. metadata/data_quality/builders/{i_validator_builder.py → validator_builder.py} +45 -31
  16. metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +25 -24
  17. metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +23 -49
  18. metadata/data_quality/interface/test_suite_interface.py +36 -52
  19. metadata/data_quality/processor/test_case_runner.py +9 -9
  20. metadata/data_quality/runner/base_test_suite_source.py +52 -26
  21. metadata/data_quality/source/test_suite.py +1 -1
  22. metadata/data_quality/validations/base_test_handler.py +13 -8
  23. metadata/data_quality/validations/column/base/columnValuesToBeInSet.py +4 -2
  24. metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +1 -1
  25. metadata/data_quality/validations/column/sqlalchemy/columnValueMaxToBeBetween.py +1 -1
  26. metadata/data_quality/validations/column/sqlalchemy/columnValueMeanToBeBetween.py +1 -1
  27. metadata/data_quality/validations/column/sqlalchemy/columnValueMedianToBeBetween.py +1 -1
  28. metadata/data_quality/validations/column/sqlalchemy/columnValueMinToBeBetween.py +1 -1
  29. metadata/data_quality/validations/column/sqlalchemy/columnValueStdDevToBeBetween.py +1 -1
  30. metadata/data_quality/validations/column/sqlalchemy/columnValuesMissingCount.py +1 -1
  31. metadata/data_quality/validations/column/sqlalchemy/columnValuesSumToBeBetween.py +1 -1
  32. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeAtExpectedLocation.py +1 -1
  33. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +1 -1
  34. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +1 -1
  35. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +1 -1
  36. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +1 -1
  37. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +2 -8
  38. metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
  39. metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +1 -1
  40. metadata/data_quality/validations/models.py +6 -1
  41. metadata/data_quality/validations/runtime_param_setter/param_setter.py +2 -3
  42. metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +45 -17
  43. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +26 -16
  44. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +192 -17
  45. metadata/data_quality/validations/table/sqlalchemy/tableRowInsertedCountToBeBetween.py +2 -2
  46. metadata/examples/workflows/bigquery_classifier.yaml +56 -0
  47. metadata/examples/workflows/bigquery_profiler.yaml +1 -2
  48. metadata/examples/workflows/datafactory.yaml +29 -0
  49. metadata/examples/workflows/db2_profiler.yaml +1 -2
  50. metadata/examples/workflows/dbtcloud.yaml +2 -1
  51. metadata/examples/workflows/matillion.yaml +31 -0
  52. metadata/examples/workflows/{mstr.yaml → microstrategy.yaml} +3 -2
  53. metadata/examples/workflows/mysql_profiler.yaml +0 -1
  54. metadata/examples/workflows/redshift_classifier.yaml +38 -0
  55. metadata/examples/workflows/redshift_profiler.yaml +2 -3
  56. metadata/examples/workflows/rest.yaml +20 -0
  57. metadata/examples/workflows/sigma.yaml +25 -0
  58. metadata/examples/workflows/trino_profiler.yaml +20 -0
  59. metadata/generated/antlr/EntityLinkLexer.py +70 -99
  60. metadata/generated/schema/analytics/__init__.py +1 -1
  61. metadata/generated/schema/analytics/basic.py +1 -1
  62. metadata/generated/schema/analytics/reportData.py +1 -1
  63. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  64. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  65. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  66. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  67. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  68. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  69. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  70. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  71. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  72. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  73. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  74. metadata/generated/schema/api/__init__.py +1 -1
  75. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  76. metadata/generated/schema/api/addTagToAssetsRequest.py +43 -0
  77. metadata/generated/schema/api/analytics/__init__.py +1 -1
  78. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  79. metadata/generated/schema/api/automations/__init__.py +1 -1
  80. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  81. metadata/generated/schema/api/bulkAssets.py +1 -1
  82. metadata/generated/schema/api/classification/__init__.py +1 -1
  83. metadata/generated/schema/api/classification/createClassification.py +1 -1
  84. metadata/generated/schema/api/classification/createTag.py +1 -1
  85. metadata/generated/schema/api/classification/loadTags.py +1 -1
  86. metadata/generated/schema/api/createBot.py +1 -1
  87. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  88. metadata/generated/schema/api/createType.py +1 -1
  89. metadata/generated/schema/api/data/__init__.py +1 -1
  90. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  91. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  92. metadata/generated/schema/api/data/createChart.py +1 -1
  93. metadata/generated/schema/api/data/createContainer.py +1 -1
  94. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  95. metadata/generated/schema/api/data/createDashboard.py +1 -1
  96. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  97. metadata/generated/schema/api/data/createDatabase.py +1 -1
  98. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  99. metadata/generated/schema/api/data/createGlossary.py +1 -1
  100. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  101. metadata/generated/schema/api/data/createMetric.py +83 -0
  102. metadata/generated/schema/api/data/createMlModel.py +1 -1
  103. metadata/generated/schema/api/data/createPipeline.py +1 -1
  104. metadata/generated/schema/api/data/createQuery.py +1 -1
  105. metadata/generated/schema/api/data/createSearchIndex.py +8 -1
  106. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  107. metadata/generated/schema/api/data/createTable.py +1 -1
  108. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  109. metadata/generated/schema/api/data/createTopic.py +1 -1
  110. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  111. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  112. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  113. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  114. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  115. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  116. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  117. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  118. metadata/generated/schema/api/docStore/__init__.py +1 -1
  119. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  120. metadata/generated/schema/api/domains/__init__.py +1 -1
  121. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  122. metadata/generated/schema/api/domains/createDomain.py +1 -1
  123. metadata/generated/schema/api/feed/__init__.py +1 -1
  124. metadata/generated/schema/api/feed/closeTask.py +1 -1
  125. metadata/generated/schema/api/feed/createPost.py +1 -1
  126. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  127. metadata/generated/schema/api/feed/createThread.py +1 -1
  128. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  129. metadata/generated/schema/api/feed/threadCount.py +1 -1
  130. metadata/generated/schema/api/governance/__init__.py +3 -0
  131. metadata/generated/schema/api/governance/createWorkflowDefinition.py +83 -0
  132. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +22 -0
  133. metadata/generated/schema/api/lineage/__init__.py +1 -1
  134. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  135. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  136. metadata/generated/schema/api/policies/__init__.py +1 -1
  137. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  138. metadata/generated/schema/api/services/__init__.py +1 -1
  139. metadata/generated/schema/api/services/createApiService.py +2 -2
  140. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  141. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  142. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  143. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  144. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  145. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  146. metadata/generated/schema/api/services/createSearchService.py +1 -1
  147. metadata/generated/schema/api/services/createStorageService.py +1 -1
  148. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  149. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  150. metadata/generated/schema/api/setOwner.py +1 -1
  151. metadata/generated/schema/api/teams/__init__.py +1 -1
  152. metadata/generated/schema/api/teams/createPersona.py +1 -1
  153. metadata/generated/schema/api/teams/createRole.py +1 -1
  154. metadata/generated/schema/api/teams/createTeam.py +1 -1
  155. metadata/generated/schema/api/teams/createUser.py +1 -1
  156. metadata/generated/schema/api/tests/__init__.py +1 -1
  157. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  158. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  159. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  160. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  161. metadata/generated/schema/api/tests/createTestCaseResult.py +71 -0
  162. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  163. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  164. metadata/generated/schema/api/voteRequest.py +1 -1
  165. metadata/generated/schema/auth/__init__.py +1 -1
  166. metadata/generated/schema/auth/basicAuth.py +1 -1
  167. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  168. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  169. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  170. metadata/generated/schema/auth/emailRequest.py +1 -1
  171. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  172. metadata/generated/schema/auth/generateToken.py +1 -1
  173. metadata/generated/schema/auth/jwtAuth.py +1 -1
  174. metadata/generated/schema/auth/loginRequest.py +1 -1
  175. metadata/generated/schema/auth/logoutRequest.py +1 -1
  176. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  177. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  178. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  179. metadata/generated/schema/auth/refreshToken.py +1 -1
  180. metadata/generated/schema/auth/registrationRequest.py +1 -1
  181. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  182. metadata/generated/schema/auth/revokeToken.py +1 -1
  183. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  184. metadata/generated/schema/auth/ssoAuth.py +1 -1
  185. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  186. metadata/generated/schema/configuration/__init__.py +1 -1
  187. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  188. metadata/generated/schema/configuration/assetCertificationSettings.py +22 -0
  189. metadata/generated/schema/configuration/authConfig.py +1 -1
  190. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  192. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  200. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  201. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  202. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  203. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  204. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  205. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  206. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  207. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  208. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  209. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  210. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  211. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  212. metadata/generated/schema/configuration/searchSettings.py +1 -1
  213. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -14
  214. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  215. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  216. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  217. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  218. metadata/generated/schema/dataInsight/__init__.py +1 -1
  219. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  220. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  221. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +9 -1
  222. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  223. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  224. metadata/generated/schema/dataInsight/custom/lineChart.py +23 -8
  225. metadata/generated/schema/dataInsight/custom/summaryCard.py +20 -9
  226. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  227. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  228. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  229. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  230. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  231. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  232. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  233. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  234. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  235. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  236. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  237. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  238. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  239. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  240. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  241. metadata/generated/schema/email/__init__.py +1 -1
  242. metadata/generated/schema/email/emailRequest.py +1 -1
  243. metadata/generated/schema/email/emailTemplate.py +1 -1
  244. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  245. metadata/generated/schema/email/smtpSettings.py +1 -1
  246. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  247. metadata/generated/schema/entity/__init__.py +1 -1
  248. metadata/generated/schema/entity/applications/__init__.py +1 -1
  249. metadata/generated/schema/entity/applications/app.py +9 -1
  250. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  251. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +4 -2
  254. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +54 -2
  262. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +22 -0
  271. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  277. metadata/generated/schema/entity/applications/createAppRequest.py +8 -1
  278. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  279. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  280. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  281. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +8 -1
  282. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +8 -1
  283. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  284. metadata/generated/schema/entity/automations/__init__.py +1 -1
  285. metadata/generated/schema/entity/automations/testServiceConnection.py +3 -1
  286. metadata/generated/schema/entity/automations/workflow.py +1 -1
  287. metadata/generated/schema/entity/bot.py +1 -1
  288. metadata/generated/schema/entity/classification/__init__.py +1 -1
  289. metadata/generated/schema/entity/classification/classification.py +2 -2
  290. metadata/generated/schema/entity/classification/tag.py +2 -2
  291. metadata/generated/schema/entity/data/__init__.py +1 -1
  292. metadata/generated/schema/entity/data/apiCollection.py +4 -2
  293. metadata/generated/schema/entity/data/apiEndpoint.py +4 -2
  294. metadata/generated/schema/entity/data/chart.py +4 -3
  295. metadata/generated/schema/entity/data/container.py +4 -2
  296. metadata/generated/schema/entity/data/dashboard.py +4 -2
  297. metadata/generated/schema/entity/data/dashboardDataModel.py +5 -2
  298. metadata/generated/schema/entity/data/database.py +7 -7
  299. metadata/generated/schema/entity/data/databaseSchema.py +5 -2
  300. metadata/generated/schema/entity/data/glossary.py +2 -2
  301. metadata/generated/schema/entity/data/glossaryTerm.py +3 -2
  302. metadata/generated/schema/entity/data/metric.py +196 -0
  303. metadata/generated/schema/entity/data/mlmodel.py +4 -2
  304. metadata/generated/schema/entity/data/pipeline.py +4 -3
  305. metadata/generated/schema/entity/data/query.py +3 -5
  306. metadata/generated/schema/entity/data/report.py +1 -1
  307. metadata/generated/schema/entity/data/searchIndex.py +16 -2
  308. metadata/generated/schema/entity/data/storedProcedure.py +4 -2
  309. metadata/generated/schema/entity/data/table.py +36 -3
  310. metadata/generated/schema/entity/data/topic.py +4 -3
  311. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  312. metadata/generated/schema/entity/docStore/document.py +1 -1
  313. metadata/generated/schema/entity/domains/__init__.py +1 -1
  314. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  315. metadata/generated/schema/entity/domains/domain.py +1 -1
  316. metadata/generated/schema/entity/events/__init__.py +1 -1
  317. metadata/generated/schema/entity/events/webhook.py +19 -2
  318. metadata/generated/schema/entity/feed/__init__.py +1 -1
  319. metadata/generated/schema/entity/feed/assets.py +1 -1
  320. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  321. metadata/generated/schema/entity/feed/description.py +1 -1
  322. metadata/generated/schema/entity/feed/domain.py +1 -1
  323. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  324. metadata/generated/schema/entity/feed/owner.py +1 -1
  325. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  326. metadata/generated/schema/entity/feed/tag.py +1 -1
  327. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  328. metadata/generated/schema/entity/feed/thread.py +1 -1
  329. metadata/generated/schema/entity/policies/__init__.py +1 -1
  330. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  331. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +4 -1
  332. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  333. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  334. metadata/generated/schema/entity/policies/filters.py +1 -1
  335. metadata/generated/schema/entity/policies/policy.py +1 -1
  336. metadata/generated/schema/entity/services/__init__.py +1 -1
  337. metadata/generated/schema/entity/services/apiService.py +7 -7
  338. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  339. metadata/generated/schema/entity/services/connections/{apiService → api}/__init__.py +1 -1
  340. metadata/generated/schema/entity/services/connections/{apiService → api}/restConnection.py +15 -7
  341. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  342. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  343. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  344. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  345. metadata/generated/schema/entity/services/connections/connectionBasicType.py +29 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +67 -0
  353. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  358. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  359. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  360. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  361. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +41 -0
  366. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +5 -1
  370. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +9 -1
  372. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +11 -0
  380. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/db2Connection.py +4 -1
  389. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/druidConnection.py +4 -1
  396. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +84 -0
  398. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +4 -1
  400. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +4 -1
  401. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +4 -1
  410. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +4 -1
  411. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +3 -2
  412. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +5 -1
  413. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +11 -7
  414. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +5 -1
  415. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +4 -1
  416. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +5 -1
  417. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +9 -1
  419. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +5 -1
  425. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +4 -1
  427. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +9 -1
  428. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +4 -1
  429. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +4 -1
  431. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +7 -2
  432. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  435. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  441. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  442. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  449. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +69 -0
  462. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +17 -5
  463. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +65 -0
  469. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +43 -0
  474. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  479. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/serviceConnection.py +3 -3
  482. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  483. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  488. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  489. metadata/generated/schema/entity/services/dashboardService.py +8 -5
  490. metadata/generated/schema/entity/services/databaseService.py +5 -2
  491. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  492. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +2 -1
  493. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  494. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  495. metadata/generated/schema/entity/services/messagingService.py +2 -2
  496. metadata/generated/schema/entity/services/metadataService.py +2 -2
  497. metadata/generated/schema/entity/services/mlmodelService.py +2 -2
  498. metadata/generated/schema/entity/services/pipelineService.py +11 -2
  499. metadata/generated/schema/entity/services/searchService.py +2 -2
  500. metadata/generated/schema/entity/services/serviceType.py +2 -2
  501. metadata/generated/schema/entity/services/storageService.py +2 -2
  502. metadata/generated/schema/entity/teams/__init__.py +1 -1
  503. metadata/generated/schema/entity/teams/persona.py +1 -1
  504. metadata/generated/schema/entity/teams/role.py +1 -1
  505. metadata/generated/schema/entity/teams/team.py +1 -1
  506. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  507. metadata/generated/schema/entity/teams/user.py +1 -1
  508. metadata/generated/schema/entity/type.py +1 -1
  509. metadata/generated/schema/entity/utils/__init__.py +1 -1
  510. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  511. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  512. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  513. metadata/generated/schema/events/__init__.py +1 -1
  514. metadata/generated/schema/events/alertMetrics.py +1 -1
  515. metadata/generated/schema/events/api/__init__.py +1 -1
  516. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  517. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +69 -0
  518. metadata/generated/schema/events/api/eventsRecord.py +37 -0
  519. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -4
  520. metadata/generated/schema/events/api/typedEvent.py +46 -0
  521. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  522. metadata/generated/schema/events/eventFilterRule.py +1 -1
  523. metadata/generated/schema/events/eventSubscription.py +15 -46
  524. metadata/generated/schema/events/eventSubscriptionOffset.py +7 -2
  525. metadata/generated/schema/events/failedEvent.py +1 -1
  526. metadata/generated/schema/events/failedEventResponse.py +38 -0
  527. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  528. metadata/generated/schema/events/statusContext.py +43 -0
  529. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  530. metadata/generated/schema/events/subscriptionStatus.py +78 -0
  531. metadata/generated/schema/events/testDestinationStatus.py +88 -0
  532. metadata/generated/schema/governance/workflows/__init__.py +3 -0
  533. metadata/generated/schema/governance/workflows/elements/__init__.py +5 -0
  534. metadata/generated/schema/governance/workflows/elements/edge.py +29 -0
  535. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +16 -0
  536. metadata/generated/schema/governance/workflows/elements/nodeType.py +14 -0
  537. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +3 -0
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +5 -0
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +44 -0
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +49 -0
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +42 -0
  542. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +3 -0
  543. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +30 -0
  544. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +3 -0
  545. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +30 -0
  546. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +3 -0
  547. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +57 -0
  548. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +3 -0
  549. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +43 -0
  550. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +44 -0
  551. metadata/generated/schema/{entity/data/metrics.py → governance/workflows/workflowDefinition.py} +36 -49
  552. metadata/generated/schema/governance/workflows/workflowInstance.py +50 -0
  553. metadata/generated/schema/governance/workflows/workflowInstanceState.py +73 -0
  554. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  555. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +53 -0
  556. metadata/generated/schema/metadataIngestion/application.py +1 -1
  557. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  558. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  559. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +127 -0
  561. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -9
  562. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +28 -17
  563. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +42 -1
  564. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  565. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  567. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  568. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  569. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  570. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  571. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +9 -1
  572. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +9 -1
  573. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  574. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  575. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  576. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  577. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  578. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +9 -1
  579. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  580. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  581. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  582. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  583. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  584. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  585. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  586. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  587. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  588. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  589. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +4 -1
  590. metadata/generated/schema/metadataIngestion/workflow.py +15 -1
  591. metadata/generated/schema/monitoring/__init__.py +1 -1
  592. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  593. metadata/generated/schema/security/__init__.py +1 -1
  594. metadata/generated/schema/security/client/__init__.py +1 -1
  595. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  596. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  597. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  598. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  599. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  600. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  601. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  602. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  603. metadata/generated/schema/security/credentials/__init__.py +1 -1
  604. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  605. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  606. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  607. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  608. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  609. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  610. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  611. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  612. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  613. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  614. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  615. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  616. metadata/generated/schema/security/sasl/__init__.py +1 -1
  617. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  618. metadata/generated/schema/security/secrets/__init__.py +1 -1
  619. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  620. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  621. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  622. metadata/generated/schema/security/securityConfiguration.py +1 -1
  623. metadata/generated/schema/security/ssl/__init__.py +1 -1
  624. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  625. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  626. metadata/generated/schema/settings/__init__.py +1 -1
  627. metadata/generated/schema/settings/settings.py +7 -1
  628. metadata/generated/schema/system/__init__.py +1 -1
  629. metadata/generated/schema/system/entityError.py +1 -1
  630. metadata/generated/schema/system/eventPublisherJob.py +2 -1
  631. metadata/generated/schema/system/indexingError.py +1 -1
  632. metadata/generated/schema/system/limitsResponse.py +1 -1
  633. metadata/generated/schema/system/ui/__init__.py +1 -1
  634. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  635. metadata/generated/schema/system/ui/page.py +1 -1
  636. metadata/generated/schema/system/validationResponse.py +1 -1
  637. metadata/generated/schema/tests/__init__.py +1 -1
  638. metadata/generated/schema/tests/assigned.py +1 -1
  639. metadata/generated/schema/tests/basic.py +19 -4
  640. metadata/generated/schema/tests/customMetric.py +1 -1
  641. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  642. metadata/generated/schema/tests/resolved.py +1 -1
  643. metadata/generated/schema/tests/testCase.py +6 -2
  644. metadata/generated/schema/tests/testCaseResolutionStatus.py +17 -2
  645. metadata/generated/schema/tests/testDefinition.py +1 -1
  646. metadata/generated/schema/tests/testSuite.py +9 -2
  647. metadata/generated/schema/type/__init__.py +1 -1
  648. metadata/generated/schema/type/apiSchema.py +1 -1
  649. metadata/generated/schema/type/assetCertification.py +26 -0
  650. metadata/generated/schema/type/auditLog.py +1 -1
  651. metadata/generated/schema/type/basic.py +1 -1
  652. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  653. metadata/generated/schema/type/changeEvent.py +1 -1
  654. metadata/generated/schema/type/changeEventType.py +1 -1
  655. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  656. metadata/generated/schema/type/csvDocumentation.py +1 -1
  657. metadata/generated/schema/type/csvErrorType.py +1 -1
  658. metadata/generated/schema/type/csvFile.py +1 -1
  659. metadata/generated/schema/type/csvImportResult.py +1 -1
  660. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  661. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  662. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  663. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  664. metadata/generated/schema/type/customProperty.py +8 -1
  665. metadata/generated/schema/type/dailyCount.py +1 -1
  666. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  667. metadata/generated/schema/type/entityHierarchy.py +1 -1
  668. metadata/generated/schema/type/entityHistory.py +1 -1
  669. metadata/generated/schema/type/entityLineage.py +1 -1
  670. metadata/generated/schema/type/entityReference.py +1 -1
  671. metadata/generated/schema/type/entityReferenceList.py +1 -1
  672. metadata/generated/schema/type/entityRelationship.py +1 -1
  673. metadata/generated/schema/type/entityUsage.py +1 -1
  674. metadata/generated/schema/type/filterPattern.py +1 -1
  675. metadata/generated/schema/type/function.py +1 -1
  676. metadata/generated/schema/type/include.py +1 -1
  677. metadata/generated/schema/type/jdbcConnection.py +1 -1
  678. metadata/generated/schema/type/lifeCycle.py +1 -1
  679. metadata/generated/schema/type/paging.py +1 -1
  680. metadata/generated/schema/type/profile.py +1 -1
  681. metadata/generated/schema/type/queryParserData.py +1 -1
  682. metadata/generated/schema/type/reaction.py +1 -1
  683. metadata/generated/schema/type/schedule.py +1 -1
  684. metadata/generated/schema/type/schema.py +1 -1
  685. metadata/generated/schema/type/tableQuery.py +1 -1
  686. metadata/generated/schema/type/tableUsageCount.py +1 -1
  687. metadata/generated/schema/type/tagLabel.py +1 -1
  688. metadata/generated/schema/type/usageDetails.py +1 -1
  689. metadata/generated/schema/type/usageRequest.py +1 -1
  690. metadata/generated/schema/type/votes.py +1 -1
  691. metadata/ingestion/api/models.py +9 -5
  692. metadata/ingestion/api/parser.py +14 -0
  693. metadata/ingestion/lineage/parser.py +4 -6
  694. metadata/ingestion/lineage/sql_lineage.py +29 -185
  695. metadata/ingestion/models/custom_basemodel_validation.py +80 -0
  696. metadata/ingestion/models/custom_pydantic.py +33 -1
  697. metadata/ingestion/models/custom_types.py +2 -0
  698. metadata/ingestion/models/entity_interface.py +71 -0
  699. metadata/ingestion/models/patch_request.py +0 -1
  700. metadata/ingestion/ometa/mixins/es_mixin.py +66 -8
  701. metadata/ingestion/ometa/models.py +1 -0
  702. metadata/ingestion/ometa/ometa_api.py +6 -3
  703. metadata/ingestion/ometa/routes.py +4 -2
  704. metadata/ingestion/processor/query_parser.py +2 -2
  705. metadata/ingestion/sink/metadata_rest.py +23 -18
  706. metadata/ingestion/source/api/api_service.py +212 -0
  707. metadata/ingestion/source/api/rest/connection.py +93 -0
  708. metadata/ingestion/source/api/rest/metadata.py +278 -0
  709. metadata/ingestion/source/api/rest/models.py +41 -0
  710. metadata/ingestion/source/api/rest/service_spec.py +4 -0
  711. metadata/ingestion/source/dashboard/domodashboard/service_spec.py +6 -0
  712. metadata/ingestion/source/dashboard/lightdash/service_spec.py +4 -0
  713. metadata/ingestion/source/dashboard/looker/metadata.py +33 -4
  714. metadata/ingestion/source/dashboard/looker/service_spec.py +4 -0
  715. metadata/ingestion/source/dashboard/metabase/service_spec.py +4 -0
  716. metadata/ingestion/source/dashboard/microstrategy/__init__.py +0 -0
  717. metadata/ingestion/source/dashboard/{mstr → microstrategy}/client.py +27 -32
  718. metadata/ingestion/source/dashboard/{mstr → microstrategy}/connection.py +7 -10
  719. metadata/ingestion/source/dashboard/{mstr → microstrategy}/metadata.py +18 -14
  720. metadata/ingestion/source/dashboard/{mstr → microstrategy}/models.py +1 -1
  721. metadata/ingestion/source/dashboard/microstrategy/service_spec.py +6 -0
  722. metadata/ingestion/source/dashboard/mode/service_spec.py +4 -0
  723. metadata/ingestion/source/dashboard/powerbi/client.py +1 -2
  724. metadata/ingestion/source/dashboard/powerbi/service_spec.py +4 -0
  725. metadata/ingestion/source/dashboard/qlikcloud/service_spec.py +4 -0
  726. metadata/ingestion/source/dashboard/qliksense/service_spec.py +4 -0
  727. metadata/ingestion/source/dashboard/quicksight/service_spec.py +4 -0
  728. metadata/ingestion/source/dashboard/redash/service_spec.py +4 -0
  729. metadata/ingestion/source/dashboard/sigma/__init__.py +0 -0
  730. metadata/ingestion/source/dashboard/sigma/client.py +186 -0
  731. metadata/ingestion/source/dashboard/sigma/connection.py +67 -0
  732. metadata/ingestion/source/dashboard/sigma/metadata.py +331 -0
  733. metadata/ingestion/source/dashboard/sigma/models.py +97 -0
  734. metadata/ingestion/source/dashboard/sigma/service_spec.py +4 -0
  735. metadata/ingestion/source/dashboard/superset/service_spec.py +4 -0
  736. metadata/ingestion/source/dashboard/tableau/service_spec.py +4 -0
  737. metadata/ingestion/source/database/athena/service_spec.py +10 -0
  738. metadata/ingestion/source/database/azuresql/service_spec.py +12 -0
  739. metadata/ingestion/source/database/bigquery/connection.py +28 -2
  740. metadata/ingestion/source/database/bigquery/lineage.py +29 -2
  741. metadata/ingestion/source/database/bigquery/metadata.py +1 -25
  742. metadata/ingestion/source/database/bigquery/profiler/__init__.py +0 -0
  743. metadata/ingestion/source/database/bigquery/profiler/profiler.py +30 -0
  744. metadata/ingestion/source/database/bigquery/profiler/system.py +165 -0
  745. metadata/ingestion/source/database/bigquery/queries.py +69 -1
  746. metadata/ingestion/source/database/bigquery/service_spec.py +16 -0
  747. metadata/ingestion/source/database/bigtable/service_spec.py +4 -0
  748. metadata/ingestion/source/database/clickhouse/service_spec.py +12 -0
  749. metadata/ingestion/source/database/common_db_source.py +150 -147
  750. metadata/ingestion/source/database/common_nosql_source.py +0 -14
  751. metadata/ingestion/source/database/couchbase/metadata.py +62 -2
  752. metadata/{data_quality/builders/sqa_validator_builder.py → ingestion/source/database/couchbase/models.py} +15 -9
  753. metadata/ingestion/source/database/couchbase/queries.py +6 -1
  754. metadata/ingestion/source/database/couchbase/service_spec.py +4 -0
  755. metadata/ingestion/source/database/database_service.py +15 -22
  756. metadata/ingestion/source/database/databricks/metadata.py +12 -1
  757. metadata/ingestion/source/database/databricks/service_spec.py +20 -0
  758. metadata/ingestion/source/database/datalake/clients/azure_blob.py +0 -3
  759. metadata/ingestion/source/database/datalake/clients/base.py +10 -1
  760. metadata/ingestion/source/database/datalake/clients/gcs.py +10 -6
  761. metadata/ingestion/source/database/datalake/clients/s3.py +0 -3
  762. metadata/ingestion/source/database/datalake/metadata.py +2 -13
  763. metadata/ingestion/source/database/datalake/service_spec.py +16 -0
  764. metadata/ingestion/source/database/db2/lineage.py +46 -0
  765. metadata/ingestion/source/database/db2/service_spec.py +9 -0
  766. metadata/ingestion/source/database/dbt/constants.py +4 -0
  767. metadata/ingestion/source/database/dbt/dbt_config.py +19 -1
  768. metadata/ingestion/source/database/dbt/dbt_service.py +8 -1
  769. metadata/ingestion/source/database/dbt/dbt_utils.py +29 -0
  770. metadata/ingestion/source/database/dbt/metadata.py +73 -7
  771. metadata/ingestion/source/database/dbt/models.py +2 -0
  772. metadata/ingestion/source/database/dbt/service_spec.py +4 -0
  773. metadata/ingestion/source/database/deltalake/metadata.py +1 -12
  774. metadata/ingestion/source/database/deltalake/service_spec.py +4 -0
  775. metadata/ingestion/source/database/domodatabase/metadata.py +1 -12
  776. metadata/ingestion/source/database/domodatabase/service_spec.py +4 -0
  777. metadata/ingestion/source/database/doris/metadata.py +1 -1
  778. metadata/ingestion/source/database/doris/service_spec.py +4 -0
  779. metadata/ingestion/source/database/druid/lineage.py +46 -0
  780. metadata/ingestion/source/database/druid/service_spec.py +4 -0
  781. metadata/ingestion/source/database/dynamodb/service_spec.py +10 -0
  782. metadata/ingestion/source/database/exasol/__init__.py +0 -0
  783. metadata/ingestion/source/database/exasol/connection.py +87 -0
  784. metadata/ingestion/source/database/exasol/metadata.py +27 -0
  785. metadata/ingestion/source/database/exasol/service_spec.py +4 -0
  786. metadata/ingestion/source/database/glue/metadata.py +49 -19
  787. metadata/ingestion/source/database/glue/models.py +8 -0
  788. metadata/ingestion/source/database/glue/service_spec.py +4 -0
  789. metadata/ingestion/source/database/greenplum/lineage.py +46 -0
  790. metadata/ingestion/source/database/greenplum/service_spec.py +4 -0
  791. metadata/ingestion/source/database/hive/lineage.py +46 -0
  792. metadata/ingestion/source/database/hive/service_spec.py +4 -0
  793. metadata/ingestion/source/database/iceberg/metadata.py +1 -16
  794. metadata/ingestion/source/database/iceberg/service_spec.py +4 -0
  795. metadata/ingestion/source/database/impala/lineage.py +46 -0
  796. metadata/ingestion/source/database/impala/service_spec.py +4 -0
  797. metadata/ingestion/source/database/life_cycle_query_mixin.py +3 -5
  798. metadata/ingestion/source/database/lineage_source.py +124 -32
  799. metadata/ingestion/source/database/mariadb/lineage.py +46 -0
  800. metadata/ingestion/source/database/mariadb/service_spec.py +4 -0
  801. metadata/ingestion/source/database/mongodb/service_spec.py +10 -0
  802. metadata/ingestion/source/database/mssql/lineage.py +51 -2
  803. metadata/ingestion/source/database/mssql/metadata.py +2 -44
  804. metadata/ingestion/source/database/mssql/service_spec.py +10 -0
  805. metadata/ingestion/source/database/mysql/lineage.py +0 -2
  806. metadata/ingestion/source/database/mysql/queries.py +0 -2
  807. metadata/ingestion/source/database/mysql/service_spec.py +10 -0
  808. metadata/ingestion/source/database/mysql/usage.py +0 -2
  809. metadata/ingestion/source/database/oracle/lineage.py +28 -1
  810. metadata/ingestion/source/database/oracle/metadata.py +2 -23
  811. metadata/ingestion/source/database/oracle/service_spec.py +10 -0
  812. metadata/ingestion/source/database/pinotdb/lineage.py +46 -0
  813. metadata/ingestion/source/database/pinotdb/service_spec.py +4 -0
  814. metadata/ingestion/source/database/postgres/metadata.py +4 -13
  815. metadata/ingestion/source/database/postgres/service_spec.py +10 -0
  816. metadata/ingestion/source/database/postgres/utils.py +26 -0
  817. metadata/ingestion/source/database/presto/service_spec.py +4 -0
  818. metadata/ingestion/source/database/query/service_spec.py +9 -0
  819. metadata/ingestion/source/database/query_parser_source.py +1 -0
  820. metadata/ingestion/source/database/redshift/connection.py +9 -2
  821. metadata/ingestion/source/database/redshift/lineage.py +27 -3
  822. metadata/ingestion/source/database/redshift/metadata.py +2 -27
  823. metadata/ingestion/source/database/redshift/profiler/__init__.py +0 -0
  824. metadata/ingestion/source/database/redshift/profiler/profiler.py +14 -0
  825. metadata/ingestion/source/database/redshift/profiler/system.py +148 -0
  826. metadata/ingestion/source/database/redshift/queries.py +99 -8
  827. metadata/ingestion/source/database/redshift/service_spec.py +14 -0
  828. metadata/ingestion/source/database/redshift/utils.py +3 -3
  829. metadata/ingestion/source/database/salesforce/metadata.py +1 -12
  830. metadata/ingestion/source/database/salesforce/service_spec.py +4 -0
  831. metadata/ingestion/source/database/sample_data.py +129 -34
  832. metadata/ingestion/source/database/saperp/service_spec.py +4 -0
  833. metadata/ingestion/source/database/saphana/service_spec.py +7 -0
  834. metadata/ingestion/source/database/sas/metadata.py +1 -10
  835. metadata/ingestion/source/database/sas/service_spec.py +4 -0
  836. metadata/ingestion/source/database/singlestore/lineage.py +46 -0
  837. metadata/ingestion/source/database/singlestore/service_spec.py +9 -0
  838. metadata/ingestion/source/database/snowflake/connection.py +6 -1
  839. metadata/ingestion/source/database/snowflake/lineage.py +31 -2
  840. metadata/ingestion/source/database/snowflake/metadata.py +20 -62
  841. metadata/ingestion/source/database/snowflake/models.py +50 -2
  842. metadata/ingestion/source/database/snowflake/profiler/__init__.py +0 -0
  843. metadata/ingestion/source/database/snowflake/profiler/profiler.py +26 -0
  844. metadata/ingestion/source/database/snowflake/profiler/system.py +436 -0
  845. metadata/ingestion/source/database/snowflake/queries.py +28 -22
  846. metadata/ingestion/source/database/snowflake/service_spec.py +20 -0
  847. metadata/ingestion/source/database/sql_column_handler.py +26 -0
  848. metadata/ingestion/source/database/sqlite/lineage.py +46 -0
  849. metadata/ingestion/source/database/sqlite/service_spec.py +4 -0
  850. metadata/ingestion/source/database/stored_procedures_mixin.py +78 -52
  851. metadata/ingestion/source/database/teradata/lineage.py +46 -0
  852. metadata/ingestion/source/database/teradata/service_spec.py +4 -0
  853. metadata/ingestion/source/database/trino/connection.py +60 -23
  854. metadata/ingestion/source/database/trino/profiler/__init__.py +0 -0
  855. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +167 -0
  856. metadata/ingestion/source/database/trino/service_spec.py +16 -0
  857. metadata/ingestion/source/database/unitycatalog/metadata.py +3 -24
  858. metadata/ingestion/source/database/unitycatalog/service_spec.py +22 -0
  859. metadata/ingestion/source/database/usage_source.py +4 -1
  860. metadata/ingestion/source/database/vertica/service_spec.py +10 -0
  861. metadata/ingestion/source/messaging/kafka/service_spec.py +4 -0
  862. metadata/ingestion/source/messaging/kinesis/service_spec.py +4 -0
  863. metadata/ingestion/source/messaging/redpanda/service_spec.py +4 -0
  864. metadata/ingestion/source/metadata/alationsink/service_spec.py +4 -0
  865. metadata/ingestion/source/metadata/amundsen/service_spec.py +4 -0
  866. metadata/ingestion/source/metadata/atlas/service_spec.py +4 -0
  867. metadata/ingestion/source/mlmodel/mlflow/service_spec.py +4 -0
  868. metadata/ingestion/source/mlmodel/sagemaker/service_spec.py +4 -0
  869. metadata/ingestion/source/pipeline/airbyte/service_spec.py +4 -0
  870. metadata/ingestion/source/pipeline/airflow/connection.py +45 -2
  871. metadata/ingestion/source/pipeline/airflow/metadata.py +71 -27
  872. metadata/ingestion/source/pipeline/airflow/service_spec.py +4 -0
  873. metadata/ingestion/source/pipeline/dagster/metadata.py +3 -1
  874. metadata/ingestion/source/pipeline/dagster/service_spec.py +4 -0
  875. metadata/ingestion/source/pipeline/databrickspipeline/service_spec.py +6 -0
  876. metadata/ingestion/source/pipeline/dbtcloud/client.py +67 -28
  877. metadata/ingestion/source/pipeline/dbtcloud/connection.py +1 -3
  878. metadata/ingestion/source/pipeline/dbtcloud/models.py +1 -1
  879. metadata/ingestion/source/pipeline/dbtcloud/service_spec.py +4 -0
  880. metadata/ingestion/source/pipeline/domopipeline/service_spec.py +4 -0
  881. metadata/ingestion/source/pipeline/fivetran/service_spec.py +4 -0
  882. metadata/ingestion/source/pipeline/flink/service_spec.py +4 -0
  883. metadata/ingestion/source/pipeline/gluepipeline/service_spec.py +4 -0
  884. metadata/ingestion/source/pipeline/kafkaconnect/client.py +1 -1
  885. metadata/ingestion/source/pipeline/kafkaconnect/service_spec.py +4 -0
  886. metadata/ingestion/source/pipeline/nifi/service_spec.py +4 -0
  887. metadata/ingestion/source/pipeline/openlineage/service_spec.py +4 -0
  888. metadata/ingestion/source/pipeline/pipeline_service.py +3 -1
  889. metadata/ingestion/source/pipeline/spline/service_spec.py +4 -0
  890. metadata/ingestion/source/search/elasticsearch/metadata.py +53 -0
  891. metadata/ingestion/source/search/elasticsearch/service_spec.py +4 -0
  892. metadata/ingestion/source/search/search_service.py +44 -1
  893. metadata/ingestion/source/storage/gcs/metadata.py +2 -2
  894. metadata/ingestion/source/storage/gcs/service_spec.py +4 -0
  895. metadata/ingestion/source/storage/s3/service_spec.py +4 -0
  896. metadata/mixins/pandas/pandas_mixin.py +2 -31
  897. metadata/mixins/sqalchemy/sqa_mixin.py +18 -17
  898. metadata/parsers/avro_parser.py +51 -16
  899. metadata/parsers/json_schema_parser.py +45 -16
  900. metadata/pii/processor.py +10 -9
  901. metadata/pii/scanners/ner_scanner.py +2 -1
  902. metadata/profiler/api/models.py +4 -75
  903. metadata/profiler/config.py +39 -0
  904. metadata/profiler/interface/nosql/profiler_interface.py +1 -26
  905. metadata/profiler/interface/pandas/profiler_interface.py +37 -77
  906. metadata/profiler/interface/profiler_interface.py +25 -279
  907. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +0 -19
  908. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +2 -17
  909. metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +1 -1
  910. metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +7 -5
  911. metadata/profiler/interface/sqlalchemy/profiler_interface.py +73 -125
  912. metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +5 -5
  913. metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +1 -1
  914. metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +145 -0
  915. metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +9 -4
  916. metadata/profiler/metrics/system/system.py +69 -374
  917. metadata/profiler/orm/converter/base.py +23 -13
  918. metadata/profiler/orm/converter/bigquery/converter.py +1 -1
  919. metadata/profiler/orm/functions/count.py +9 -0
  920. metadata/profiler/orm/functions/md5.py +39 -0
  921. metadata/{data_quality/builders/pandas_validator_builder.py → profiler/orm/functions/substr.py} +13 -10
  922. metadata/profiler/orm/functions/table_metric_computer.py +6 -5
  923. metadata/profiler/orm/functions/unique_count.py +6 -0
  924. metadata/profiler/orm/registry.py +27 -2
  925. metadata/profiler/processor/core.py +13 -62
  926. metadata/profiler/processor/handle_partition.py +0 -48
  927. metadata/profiler/processor/processor.py +1 -1
  928. metadata/profiler/processor/runner.py +111 -35
  929. metadata/profiler/processor/sample_data_handler.py +7 -4
  930. metadata/profiler/source/database/base/profiler_source.py +215 -0
  931. metadata/profiler/source/{bigquery → database/bigquery}/profiler_source.py +4 -4
  932. metadata/profiler/source/{databricks → database/databricks}/profiler_source.py +6 -7
  933. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/first_quartile.py +1 -1
  934. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/median.py +1 -1
  935. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/third_quartile.py +1 -1
  936. metadata/profiler/source/{single_store → database/single_store}/metrics/window/first_quartile.py +3 -1
  937. metadata/profiler/source/{single_store → database/single_store}/metrics/window/median.py +3 -1
  938. metadata/profiler/source/{single_store → database/single_store}/metrics/window/third_quartile.py +3 -1
  939. metadata/profiler/source/fetcher/config.py +44 -0
  940. metadata/profiler/source/fetcher/entity_fetcher.py +62 -0
  941. metadata/profiler/source/fetcher/fetcher_strategy.py +299 -0
  942. metadata/profiler/source/fetcher/profiler_source_factory.py +89 -0
  943. metadata/profiler/source/metadata.py +16 -201
  944. metadata/profiler/source/metadata_ext.py +23 -18
  945. metadata/profiler/source/model.py +29 -0
  946. metadata/sampler/config.py +237 -0
  947. metadata/sampler/models.py +106 -0
  948. metadata/{profiler/processor/sampler → sampler}/nosql/sampler.py +44 -12
  949. metadata/sampler/pandas/sampler.py +239 -0
  950. metadata/{utils → sampler}/partition.py +66 -51
  951. metadata/sampler/processor.py +158 -0
  952. metadata/sampler/sampler_interface.py +251 -0
  953. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/azuresql/sampler.py +1 -1
  954. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/bigquery/sampler.py +55 -26
  955. metadata/sampler/sqlalchemy/postgres/sampler.py +91 -0
  956. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/sampler.py +90 -98
  957. metadata/sampler/sqlalchemy/snowflake/sampler.py +95 -0
  958. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/trino/sampler.py +5 -3
  959. metadata/utils/class_helper.py +5 -0
  960. metadata/utils/collaborative_super.py +28 -0
  961. metadata/utils/constants.py +65 -0
  962. metadata/utils/constraints.py +65 -0
  963. metadata/utils/dict.py +8 -0
  964. metadata/utils/dispatch.py +1 -53
  965. metadata/utils/entity_link.py +8 -2
  966. metadata/utils/entity_utils.py +93 -0
  967. metadata/utils/filters.py +15 -0
  968. metadata/utils/fqn.py +15 -0
  969. metadata/utils/helpers.py +3 -2
  970. metadata/utils/importer.py +12 -24
  971. metadata/utils/logger.py +31 -1
  972. metadata/utils/lru_cache.py +76 -15
  973. metadata/utils/profiler_utils.py +43 -9
  974. metadata/utils/service_spec/__init__.py +5 -0
  975. metadata/utils/service_spec/default.py +21 -0
  976. metadata/utils/service_spec/service_spec.py +146 -0
  977. metadata/utils/ssl_manager.py +33 -0
  978. metadata/utils/time_utils.py +33 -5
  979. metadata/workflow/application.py +7 -36
  980. metadata/workflow/base.py +47 -17
  981. metadata/workflow/classification.py +53 -0
  982. metadata/workflow/ingestion.py +6 -38
  983. metadata/workflow/profiler.py +1 -17
  984. metadata/workflow/workflow_output_handler.py +11 -8
  985. metadata/workflow/workflow_status_mixin.py +0 -2
  986. openmetadata_ingestion-1.6.0.0rc2.dist-info/LICENSE +114 -0
  987. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/METADATA +473 -548
  988. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/RECORD +995 -809
  989. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/entry_points.txt +3 -0
  990. metadata/data_quality/interface/test_suite_interface_factory.py +0 -128
  991. metadata/data_quality/runner/test_suite_source_factory.py +0 -38
  992. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +0 -54
  993. metadata/profiler/interface/profiler_interface_factory.py +0 -107
  994. metadata/profiler/metrics/system/queries/bigquery.py +0 -54
  995. metadata/profiler/metrics/system/queries/redshift.py +0 -103
  996. metadata/profiler/metrics/system/queries/snowflake.py +0 -191
  997. metadata/profiler/processor/sampler/pandas/sampler.py +0 -170
  998. metadata/profiler/processor/sampler/sampler_factory.py +0 -100
  999. metadata/profiler/processor/sampler/sampler_interface.py +0 -74
  1000. metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +0 -60
  1001. metadata/profiler/source/base/profiler_source.py +0 -299
  1002. metadata/profiler/source/profiler_source_factory.py +0 -54
  1003. openmetadata_ingestion-1.5.13.0.dist-info/LICENSE +0 -201
  1004. {metadata/ingestion/source/dashboard/mstr → _openmetadata_testutils/pytest_openmetadata}/__init__.py +0 -0
  1005. /metadata/profiler/source/{bigquery → database/bigquery}/type_mapper.py +0 -0
  1006. /metadata/profiler/source/{mariadb → database/mariadb}/functions/median.py +0 -0
  1007. /metadata/profiler/source/{single_store → database/single_store}/functions/median.py +0 -0
  1008. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/WHEEL +0 -0
  1009. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,167 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.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
+ # http://www.apache.org/licenses/LICENSE-2.0
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
+ System table profiler
13
+ """
14
+ from datetime import datetime
15
+ from decimal import Decimal
16
+ from typing import Any, Dict, List, Optional, Set, Union
17
+
18
+ from more_itertools import partition
19
+ from pydantic import field_validator
20
+ from sqlalchemy import Table, text
21
+ from sqlalchemy.engine import Engine
22
+
23
+ from metadata.ingestion.models.custom_pydantic import BaseModel
24
+ from metadata.profiler.interface.sqlalchemy.stored_statistics_profiler import (
25
+ StoredStatisticsSource,
26
+ )
27
+ from metadata.profiler.metrics.core import Metric
28
+ from metadata.profiler.metrics.registry import Metrics
29
+ from metadata.utils.logger import profiler_logger
30
+ from metadata.utils.lru_cache import LRU_CACHE_SIZE, LRUCache
31
+ from metadata.utils.ssl_manager import get_ssl_connection
32
+
33
+ logger = profiler_logger()
34
+
35
+
36
+ class ColumnStats(BaseModel):
37
+ """Based on https://trino.io/docs/current/sql/show-stats.html"""
38
+
39
+ column_name: Optional[str] = None
40
+ data_size: Optional[int] = None
41
+ distinct_values_count: Optional[int] = None
42
+ nulls_fraction: Optional[float] = None
43
+ low_value: Optional[Union[int, float, datetime, Decimal]] = None
44
+ high_value: Optional[Union[int, float, datetime, Decimal]] = None
45
+
46
+ @field_validator("data_size", mode="before")
47
+ @classmethod
48
+ def data_size_validator(cls, value):
49
+ """Data size validator
50
+
51
+ Args:
52
+ value: value
53
+ """
54
+ if value is None:
55
+ return None
56
+ return int(value)
57
+
58
+
59
+ class TableStats(BaseModel):
60
+ row_count: Optional[int] = None
61
+ columns: Dict[str, ColumnStats] = {}
62
+
63
+
64
+ class TrinoStoredStatisticsSource(StoredStatisticsSource):
65
+ """Trino system profile source"""
66
+
67
+ metric_stats_map: Dict[Metrics, str] = {
68
+ Metrics.NULL_RATIO: "nulls_fractions",
69
+ Metrics.DISTINCT_COUNT: "distinct_values_count",
70
+ Metrics.ROW_COUNT: "row_count",
71
+ Metrics.MAX: "high_value",
72
+ Metrics.MIN: "low_value",
73
+ }
74
+
75
+ metric_stats_by_name: Dict[str, str] = {
76
+ k.name: v for k, v in metric_stats_map.items()
77
+ }
78
+
79
+ def get_statistics_metrics(self) -> Set[Metrics]:
80
+ return set(self.metric_stats_map.keys())
81
+
82
+ def __init__(self, **kwargs):
83
+ super().__init__(**kwargs)
84
+ service_connection_config = kwargs["service_connection_config"]
85
+ self.session: Engine = get_ssl_connection(service_connection_config)
86
+ self.stats_cache = LRUCache(capacity=LRU_CACHE_SIZE)
87
+
88
+ def get_column_statistics(
89
+ self, metric: List[Metric], schema: str, table_name: Table, column: str
90
+ ) -> Dict[str, Any]:
91
+ table_stats = self._get_cached_stats(schema, table_name)
92
+ try:
93
+ column_stats = table_stats.columns[column]
94
+ except KeyError:
95
+ raise RuntimeError(
96
+ f"Column {column} not found in table {table_name}. Statistics might be stale or missing."
97
+ )
98
+ result = {
99
+ m.name(): getattr(column_stats, self.metric_stats_by_name[m.name()])
100
+ for m in metric
101
+ }
102
+ result.update(self.get_hybrid_statistics(table_stats, column_stats))
103
+ self.warn_for_missing_stats(schema, table_name, column_stats)
104
+ return result
105
+
106
+ def get_table_statistics(
107
+ self, metric: List[Metric], schema: str, table_name: Table
108
+ ) -> dict:
109
+ table_stats = self._get_cached_stats(schema, table_name)
110
+ return {
111
+ m.name(): getattr(table_stats, self.metric_stats_by_name[m.name()])
112
+ for m in metric
113
+ }
114
+
115
+ def warn_for_missing_stats(self, schema: str, table: str, stats: BaseModel):
116
+ if (
117
+ isinstance(stats, ColumnStats)
118
+ and all(map(lambda x: x is None, stats.model_dump().values()))
119
+ ) or (
120
+ isinstance(stats, TableStats)
121
+ and all(
122
+ map(
123
+ lambda x: x is None,
124
+ [v for k, v in stats.model_dump().items() if k != "columns"],
125
+ )
126
+ )
127
+ ):
128
+ logger.warning(
129
+ 'Statistics are missing for table "{schema}.{table}". Profiling might be inaccurate.\n'
130
+ "Gather statistics for the table by running:"
131
+ f" ANALYZE {schema}.{table}"
132
+ )
133
+
134
+ def _get_cached_stats(self, schema: str, table: str) -> TableStats:
135
+ path = f"{schema}.{table}"
136
+ if path in self.stats_cache:
137
+ return self.stats_cache.get(path)
138
+ stats = self._get_db_stats(schema, table)
139
+ self.stats_cache.put(path, stats)
140
+ return stats
141
+
142
+ def _get_db_stats(self, schema, table) -> TableStats:
143
+ rows = self.session.execute(text(f'SHOW STATS FOR "{schema}"."{table}"'))
144
+ table_rows, column_rows = map(
145
+ list, partition(lambda row: row.get("column_name"), map(dict, rows))
146
+ )
147
+ if len(table_rows) != 1:
148
+ raise RuntimeError(
149
+ f"Expected one row for table {table}, got {len(table_rows)}"
150
+ )
151
+ table = table_rows[0]
152
+ columns_dict = {
153
+ row.get("column_name"): ColumnStats(**row) for row in column_rows
154
+ }
155
+ return TableStats(row_count=table["row_count"], columns=columns_dict)
156
+
157
+ def get_hybrid_statistics(
158
+ self, table_stats: TableStats, column_stats: ColumnStats
159
+ ) -> Dict[str, Any]:
160
+ return {
161
+ # trino stats are in fractions, so we need to convert them to counts (unlike our default profiler)
162
+ Metrics.NULL_COUNT.name: (
163
+ int(table_stats.row_count * column_stats.nulls_fraction)
164
+ if None not in [table_stats.row_count, column_stats.nulls_fraction]
165
+ else None
166
+ ),
167
+ }
@@ -0,0 +1,16 @@
1
+ from metadata.ingestion.source.database.trino.lineage import TrinoLineageSource
2
+ from metadata.ingestion.source.database.trino.metadata import TrinoSource
3
+ from metadata.ingestion.source.database.trino.usage import TrinoUsageSource
4
+ from metadata.profiler.interface.sqlalchemy.trino.profiler_interface import (
5
+ TrinoProfilerInterface,
6
+ )
7
+ from metadata.sampler.sqlalchemy.trino.sampler import TrinoSampler
8
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
9
+
10
+ ServiceSpec = DefaultDatabaseSpec(
11
+ metadata_source_class=TrinoSource,
12
+ lineage_source_class=TrinoLineageSource,
13
+ usage_source_class=TrinoUsageSource,
14
+ profiler_class=TrinoProfilerInterface,
15
+ sampler_class=TrinoSampler,
16
+ )
@@ -13,7 +13,7 @@ Databricks Unity Catalog Source source methods.
13
13
  """
14
14
  import json
15
15
  import traceback
16
- from typing import Any, Iterable, List, Optional, Tuple, Union
16
+ from typing import Any, Iterable, List, Optional, Tuple
17
17
 
18
18
  from databricks.sdk.service.catalog import ColumnInfo
19
19
  from databricks.sdk.service.catalog import TableConstraint as DBTableConstraint
@@ -22,12 +22,10 @@ from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequ
22
22
  from metadata.generated.schema.api.data.createDatabaseSchema import (
23
23
  CreateDatabaseSchemaRequest,
24
24
  )
25
- from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
26
25
  from metadata.generated.schema.api.data.createStoredProcedure import (
27
26
  CreateStoredProcedureRequest,
28
27
  )
29
28
  from metadata.generated.schema.api.data.createTable import CreateTableRequest
30
- from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
31
29
  from metadata.generated.schema.entity.data.database import Database
32
30
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
33
31
  from metadata.generated.schema.entity.data.table import (
@@ -76,7 +74,6 @@ from metadata.ingestion.source.database.unitycatalog.models import (
76
74
  )
77
75
  from metadata.ingestion.source.models import TableView
78
76
  from metadata.utils import fqn
79
- from metadata.utils.db_utils import get_view_lineage
80
77
  from metadata.utils.filters import filter_by_database, filter_by_schema, filter_by_table
81
78
  from metadata.utils.logger import ingestion_logger
82
79
 
@@ -325,7 +322,7 @@ class UnitycatalogSource(
325
322
  ) = self.get_table_constraints(table.table_constraints)
326
323
 
327
324
  table_constraints = self.update_table_constraints(
328
- primary_constraints, foreign_constraints
325
+ primary_constraints, foreign_constraints, columns
329
326
  )
330
327
 
331
328
  table_request = CreateTableRequest(
@@ -436,7 +433,7 @@ class UnitycatalogSource(
436
433
  return table_constraints
437
434
 
438
435
  def update_table_constraints(
439
- self, table_constraints, foreign_columns
436
+ self, table_constraints, foreign_columns, columns
440
437
  ) -> List[TableConstraint]:
441
438
  """
442
439
  From topology.
@@ -521,18 +518,6 @@ class UnitycatalogSource(
521
518
  )
522
519
  yield parsed_column
523
520
 
524
- def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
525
- logger.info("Processing Lineage for Views")
526
- for view in [
527
- v for v in self.context.get().table_views if v.view_definition is not None
528
- ]:
529
- yield from get_view_lineage(
530
- view=view,
531
- metadata=self.metadata,
532
- service_name=self.context.get().database_service,
533
- connection_type=self.service_connection.type.value,
534
- )
535
-
536
521
  def yield_tag(
537
522
  self, schema_name: str
538
523
  ) -> Iterable[Either[OMetaTagAndClassification]]:
@@ -549,12 +534,6 @@ class UnitycatalogSource(
549
534
  def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
550
535
  """Not Implemented"""
551
536
 
552
- def yield_procedure_lineage_and_queries(
553
- self,
554
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
555
- """Not Implemented"""
556
- yield from []
557
-
558
537
  def close(self):
559
538
  """Nothing to close"""
560
539
 
@@ -0,0 +1,22 @@
1
+ from metadata.data_quality.interface.sqlalchemy.unity_catalog.test_suite_interface import (
2
+ UnityCatalogTestSuiteInterface,
3
+ )
4
+ from metadata.ingestion.source.database.unitycatalog.lineage import (
5
+ UnitycatalogLineageSource,
6
+ )
7
+ from metadata.ingestion.source.database.unitycatalog.metadata import UnitycatalogSource
8
+ from metadata.ingestion.source.database.unitycatalog.usage import (
9
+ UnitycatalogUsageSource,
10
+ )
11
+ from metadata.profiler.interface.sqlalchemy.unity_catalog.profiler_interface import (
12
+ UnityCatalogProfilerInterface,
13
+ )
14
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
15
+
16
+ ServiceSpec = DefaultDatabaseSpec(
17
+ metadata_source_class=UnitycatalogSource,
18
+ lineage_source_class=UnitycatalogLineageSource,
19
+ usage_source_class=UnitycatalogUsageSource,
20
+ profiler_class=UnityCatalogProfilerInterface,
21
+ test_suite_class=UnityCatalogTestSuiteInterface,
22
+ )
@@ -152,7 +152,10 @@ class UsageSource(QueryParserSource, ABC):
152
152
  except Exception as exc:
153
153
  if query:
154
154
  logger.debug(
155
- f"###### USAGE QUERY #######\n{mask_query(query, self.dialect.value)}\n##########################"
155
+ (
156
+ f"###### USAGE QUERY #######\n{mask_query(query, self.dialect.value)}"
157
+ "\n##########################"
158
+ )
156
159
  )
157
160
  logger.debug(traceback.format_exc())
158
161
  logger.error(f"Source usage processing error: {exc}")
@@ -0,0 +1,10 @@
1
+ from metadata.ingestion.source.database.vertica.lineage import VerticaLineageSource
2
+ from metadata.ingestion.source.database.vertica.metadata import VerticaSource
3
+ from metadata.ingestion.source.database.vertica.usage import VerticaUsageSource
4
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
5
+
6
+ ServiceSpec = DefaultDatabaseSpec(
7
+ metadata_source_class=VerticaSource,
8
+ lineage_source_class=VerticaLineageSource,
9
+ usage_source_class=VerticaUsageSource,
10
+ )
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.messaging.kafka.metadata import KafkaSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=KafkaSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.messaging.kinesis.metadata import KinesisSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=KinesisSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.messaging.redpanda.metadata import RedpandaSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=RedpandaSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.metadata.alationsink.metadata import AlationsinkSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=AlationsinkSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.metadata.amundsen.metadata import AmundsenSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=AmundsenSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.metadata.atlas.metadata import AtlasSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=AtlasSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.mlmodel.mlflow.metadata import MlflowSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=MlflowSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.mlmodel.sagemaker.metadata import SagemakerSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=SagemakerSource)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.pipeline.airbyte.metadata import AirbyteSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=AirbyteSource)
@@ -16,7 +16,9 @@ from functools import partial, singledispatch
16
16
  from typing import Optional
17
17
 
18
18
  from airflow import settings
19
+ from airflow.models.serialized_dag import SerializedDagModel
19
20
  from sqlalchemy.engine import Engine
21
+ from sqlalchemy.orm import sessionmaker
20
22
 
21
23
  from metadata.generated.schema.entity.automations.workflow import (
22
24
  Workflow as AutomationWorkflow,
@@ -102,6 +104,18 @@ def get_connection(connection: AirflowConnection) -> Engine:
102
104
  raise SourceConnectionException(msg) from exc
103
105
 
104
106
 
107
+ class AirflowPipelineDetailsAccessError(Exception):
108
+ """
109
+ Raise when Pipeline information is not retrieved
110
+ """
111
+
112
+
113
+ class AirflowTaskDetailsAccessError(Exception):
114
+ """
115
+ Raise when Task detail information is not retrieved
116
+ """
117
+
118
+
105
119
  def test_connection(
106
120
  metadata: OpenMetadata,
107
121
  engine: Engine,
@@ -114,8 +128,37 @@ def test_connection(
114
128
  of a metadata workflow or during an Automation Workflow
115
129
  """
116
130
 
117
- test_fn = {"CheckAccess": partial(test_connection_engine_step, engine)}
118
-
131
+ session_maker = sessionmaker(bind=engine)
132
+ session = session_maker()
133
+
134
+ def test_pipeline_details_access(session):
135
+ try:
136
+ result = session.query(SerializedDagModel).first()
137
+ return result
138
+ except Exception as e:
139
+ raise AirflowPipelineDetailsAccessError(
140
+ f"Pipeline details access error: {e}"
141
+ )
142
+
143
+ def test_task_detail_access(session):
144
+ try:
145
+ json_data_column = (
146
+ SerializedDagModel._data # For 2.3.0 onwards # pylint: disable=protected-access
147
+ if hasattr(SerializedDagModel, "_data")
148
+ else SerializedDagModel.data # For 2.2.5 and 2.1.4
149
+ )
150
+ result = session.query(json_data_column).first()
151
+
152
+ retrieved_tasks = result[0]["dag"]["tasks"]
153
+ return retrieved_tasks
154
+ except Exception as e:
155
+ raise AirflowTaskDetailsAccessError(f"Task details access error : {e}")
156
+
157
+ test_fn = {
158
+ "CheckAccess": partial(test_connection_engine_step, engine),
159
+ "PipelineDetailsAccess": partial(test_pipeline_details_access, session),
160
+ "TaskDetailAccess": partial(test_task_detail_access, session),
161
+ }
119
162
  return test_connection_steps(
120
163
  metadata=metadata,
121
164
  test_fn=test_fn,
@@ -17,7 +17,7 @@ from datetime import datetime
17
17
  from enum import Enum
18
18
  from typing import Dict, Iterable, List, Optional, cast
19
19
 
20
- from airflow.models import BaseOperator, DagRun, TaskInstance
20
+ from airflow.models import BaseOperator, DagRun, DagTag, TaskInstance
21
21
  from airflow.models.dag import DagModel
22
22
  from airflow.models.serialized_dag import SerializedDagModel
23
23
  from airflow.serialization.serialized_objects import SerializedDAG
@@ -57,6 +57,7 @@ from metadata.generated.schema.type.entityReferenceList import EntityReferenceLi
57
57
  from metadata.ingestion.api.models import Either
58
58
  from metadata.ingestion.api.steps import InvalidSourceException
59
59
  from metadata.ingestion.connections.session import create_and_bind_session
60
+ from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
60
61
  from metadata.ingestion.models.pipeline_status import OMetaPipelineStatus
61
62
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
62
63
  from metadata.ingestion.source.pipeline.airflow.lineage_parser import (
@@ -74,9 +75,12 @@ from metadata.utils import fqn
74
75
  from metadata.utils.constants import ENTITY_REFERENCE_TYPE_MAP
75
76
  from metadata.utils.helpers import clean_uri, datetime_to_ts
76
77
  from metadata.utils.logger import ingestion_logger
78
+ from metadata.utils.tag_utils import get_ometa_tag_and_classification, get_tag_labels
77
79
 
78
80
  logger = ingestion_logger()
79
81
 
82
+ AIRFLOW_TAG_CATEGORY = "AirflowTags"
83
+
80
84
 
81
85
  class AirflowTaskStatus(Enum):
82
86
  SUCCESS = "success"
@@ -152,6 +156,31 @@ class AirflowSource(PipelineServiceSource):
152
156
  return task["__var"]
153
157
  return task
154
158
 
159
+ def get_all_tags(self, dag_id: str) -> List[str]:
160
+ try:
161
+ tag_query = (
162
+ self.session.query(DagTag.name)
163
+ .filter(DagTag.dag_id == dag_id)
164
+ .distinct()
165
+ .all()
166
+ )
167
+ return [tag[0] for tag in tag_query]
168
+ except Exception as exc:
169
+ logger.debug(traceback.format_exc())
170
+ logger.warning(f"Could not extract tags details due to {exc}")
171
+ return []
172
+
173
+ def yield_tag(
174
+ self, pipeline_details: AirflowDagDetails
175
+ ) -> Iterable[Either[OMetaTagAndClassification]]:
176
+ yield from get_ometa_tag_and_classification(
177
+ tags=self.get_all_tags(dag_id=pipeline_details.dag_id),
178
+ classification_name=AIRFLOW_TAG_CATEGORY,
179
+ tag_description="Airflow Tag",
180
+ classification_description="Tags associated with airflow entities.",
181
+ include_tags=self.source_config.includeTags,
182
+ )
183
+
155
184
  def get_pipeline_status(self, dag_id: str) -> List[DagRun]:
156
185
  """
157
186
  Return the DagRuns of given dag
@@ -328,32 +357,42 @@ class AirflowSource(PipelineServiceSource):
328
357
  ).filter(
329
358
  DagModel.is_paused == False # pylint: disable=singleton-comparison
330
359
  )
331
- for serialized_dag in session_query.yield_per(100):
332
- try:
333
- data = serialized_dag[1]["dag"]
334
- dag = AirflowDagDetails(
335
- dag_id=serialized_dag[0],
336
- fileloc=serialized_dag[2],
337
- data=AirflowDag.model_validate(serialized_dag[1]),
338
- max_active_runs=data.get("max_active_runs", None),
339
- description=data.get("_description", None),
340
- start_date=data.get("start_date", None),
341
- tasks=list(
342
- map(self._extract_serialized_task, data.get("tasks", []))
343
- ),
344
- schedule_interval=get_schedule_interval(data),
345
- owner=self.fetch_dag_owners(data),
346
- )
360
+ limit = 100 # Number of records per batch
361
+ offset = 0 # Start
362
+
363
+ while True:
364
+ paginated_query = session_query.limit(limit).offset(offset)
365
+ results = paginated_query.all()
366
+ if not results:
367
+ break
368
+ for serialized_dag in results:
369
+ try:
370
+ data = serialized_dag[1]["dag"]
371
+ dag = AirflowDagDetails(
372
+ dag_id=serialized_dag[0],
373
+ fileloc=serialized_dag[2],
374
+ data=AirflowDag.model_validate(serialized_dag[1]),
375
+ max_active_runs=data.get("max_active_runs", None),
376
+ description=data.get("_description", None),
377
+ start_date=data.get("start_date", None),
378
+ tasks=list(
379
+ map(self._extract_serialized_task, data.get("tasks", []))
380
+ ),
381
+ schedule_interval=get_schedule_interval(data),
382
+ owner=self.fetch_dag_owners(data),
383
+ )
347
384
 
348
- yield dag
349
- except ValidationError as err:
350
- logger.debug(traceback.format_exc())
351
- logger.warning(
352
- f"Error building pydantic model for {serialized_dag} - {err}"
353
- )
354
- except Exception as err:
355
- logger.debug(traceback.format_exc())
356
- logger.warning(f"Wild error yielding dag {serialized_dag} - {err}")
385
+ yield dag
386
+ except ValidationError as err:
387
+ logger.debug(traceback.format_exc())
388
+ logger.warning(
389
+ f"Error building pydantic model for {serialized_dag} - {err}"
390
+ )
391
+ except Exception as err:
392
+ logger.debug(traceback.format_exc())
393
+ logger.warning(f"Wild error yielding dag {serialized_dag} - {err}")
394
+
395
+ offset += limit
357
396
 
358
397
  def fetch_dag_owners(self, data) -> Optional[str]:
359
398
  """
@@ -441,7 +480,6 @@ class AirflowSource(PipelineServiceSource):
441
480
  try:
442
481
  # Airflow uses /dags/dag_id/grid to show pipeline / dag
443
482
  source_url = f"{clean_uri(self.service_connection.hostPort)}/dags/{pipeline_details.dag_id}/grid"
444
-
445
483
  pipeline_request = CreatePipelineRequest(
446
484
  name=EntityName(pipeline_details.dag_id),
447
485
  description=Markdown(pipeline_details.description)
@@ -459,6 +497,12 @@ class AirflowSource(PipelineServiceSource):
459
497
  service=FullyQualifiedEntityName(self.context.get().pipeline_service),
460
498
  owners=self.get_owner(pipeline_details.owner),
461
499
  scheduleInterval=pipeline_details.schedule_interval,
500
+ tags=get_tag_labels(
501
+ metadata=self.metadata,
502
+ tags=pipeline_details.data.dag.tags,
503
+ classification_name=AIRFLOW_TAG_CATEGORY,
504
+ include_tags=self.source_config.includeTags,
505
+ ),
462
506
  )
463
507
  yield Either(right=pipeline_request)
464
508
  self.register_record(pipeline_request=pipeline_request)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.pipeline.airflow.metadata import AirflowSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=AirflowSource)
@@ -161,7 +161,9 @@ class DagsterSource(PipelineServiceSource):
161
161
  )
162
162
  )
163
163
 
164
- def yield_tag(self, *_, **__) -> Iterable[Either[OMetaTagAndClassification]]:
164
+ def yield_tag(
165
+ self, pipeline_details: DagsterPipeline
166
+ ) -> Iterable[Either[OMetaTagAndClassification]]:
165
167
  yield from get_ometa_tag_and_classification(
166
168
  tags=[self.context.get().repository_name],
167
169
  classification_name=DAGSTER_TAG_CATEGORY,
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.pipeline.dagster.metadata import DagsterSource
2
+ from metadata.utils.service_spec import BaseSpec
3
+
4
+ ServiceSpec = BaseSpec(metadata_source_class=DagsterSource)
@@ -0,0 +1,6 @@
1
+ from metadata.ingestion.source.pipeline.databrickspipeline.metadata import (
2
+ DatabrickspipelineSource,
3
+ )
4
+ from metadata.utils.service_spec import BaseSpec
5
+
6
+ ServiceSpec = BaseSpec(metadata_source_class=DatabrickspipelineSource)