openmetadata-ingestion 1.5.13.1__py3-none-any.whl → 1.6.0.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (1026) 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/clients/aws_client.py +2 -2
  13. metadata/cmd.py +9 -0
  14. metadata/config/common.py +3 -1
  15. metadata/data_quality/api/models.py +2 -1
  16. metadata/data_quality/builders/{i_validator_builder.py → validator_builder.py} +45 -31
  17. metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +25 -24
  18. metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +23 -49
  19. metadata/data_quality/interface/test_suite_interface.py +36 -52
  20. metadata/data_quality/processor/test_case_runner.py +9 -9
  21. metadata/data_quality/runner/base_test_suite_source.py +52 -26
  22. metadata/data_quality/source/test_suite.py +1 -1
  23. metadata/data_quality/validations/base_test_handler.py +17 -12
  24. metadata/data_quality/validations/column/base/columnValuesToBeInSet.py +4 -2
  25. metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +1 -1
  26. metadata/data_quality/validations/column/sqlalchemy/columnValueMaxToBeBetween.py +1 -1
  27. metadata/data_quality/validations/column/sqlalchemy/columnValueMeanToBeBetween.py +1 -1
  28. metadata/data_quality/validations/column/sqlalchemy/columnValueMedianToBeBetween.py +1 -1
  29. metadata/data_quality/validations/column/sqlalchemy/columnValueMinToBeBetween.py +1 -1
  30. metadata/data_quality/validations/column/sqlalchemy/columnValueStdDevToBeBetween.py +1 -1
  31. metadata/data_quality/validations/column/sqlalchemy/columnValuesMissingCount.py +1 -1
  32. metadata/data_quality/validations/column/sqlalchemy/columnValuesSumToBeBetween.py +1 -1
  33. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeAtExpectedLocation.py +1 -1
  34. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +1 -1
  35. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +1 -1
  36. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +1 -1
  37. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +1 -1
  38. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +2 -8
  39. metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
  40. metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +1 -1
  41. metadata/data_quality/validations/models.py +6 -1
  42. metadata/data_quality/validations/runtime_param_setter/param_setter.py +2 -3
  43. metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +45 -17
  44. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +26 -16
  45. metadata/data_quality/validations/table/sqlalchemy/tableCustomSQLQuery.py +7 -1
  46. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +193 -17
  47. metadata/data_quality/validations/table/sqlalchemy/tableRowInsertedCountToBeBetween.py +2 -2
  48. metadata/examples/workflows/bigquery_classifier.yaml +56 -0
  49. metadata/examples/workflows/bigquery_profiler.yaml +1 -2
  50. metadata/examples/workflows/datafactory.yaml +29 -0
  51. metadata/examples/workflows/db2_profiler.yaml +1 -2
  52. metadata/examples/workflows/dbtcloud.yaml +2 -1
  53. metadata/examples/workflows/matillion.yaml +31 -0
  54. metadata/examples/workflows/{mstr.yaml → microstrategy.yaml} +3 -2
  55. metadata/examples/workflows/mysql_profiler.yaml +0 -1
  56. metadata/examples/workflows/redshift_classifier.yaml +38 -0
  57. metadata/examples/workflows/redshift_profiler.yaml +2 -3
  58. metadata/examples/workflows/rest.yaml +20 -0
  59. metadata/examples/workflows/sigma.yaml +25 -0
  60. metadata/examples/workflows/trino_profiler.yaml +20 -0
  61. metadata/generated/antlr/EntityLinkLexer.py +70 -99
  62. metadata/generated/schema/analytics/__init__.py +1 -1
  63. metadata/generated/schema/analytics/basic.py +1 -1
  64. metadata/generated/schema/analytics/reportData.py +1 -1
  65. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  66. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  67. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  68. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  69. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  70. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  71. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  72. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  73. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  74. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  75. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  76. metadata/generated/schema/api/__init__.py +1 -1
  77. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  78. metadata/generated/schema/api/addTagToAssetsRequest.py +43 -0
  79. metadata/generated/schema/api/analytics/__init__.py +1 -1
  80. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  81. metadata/generated/schema/api/automations/__init__.py +1 -1
  82. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  83. metadata/generated/schema/api/bulkAssets.py +1 -1
  84. metadata/generated/schema/api/classification/__init__.py +1 -1
  85. metadata/generated/schema/api/classification/createClassification.py +1 -1
  86. metadata/generated/schema/api/classification/createTag.py +1 -1
  87. metadata/generated/schema/api/classification/loadTags.py +1 -1
  88. metadata/generated/schema/api/createBot.py +1 -1
  89. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  90. metadata/generated/schema/api/createType.py +1 -1
  91. metadata/generated/schema/api/data/__init__.py +1 -1
  92. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  93. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  94. metadata/generated/schema/api/data/createChart.py +1 -1
  95. metadata/generated/schema/api/data/createContainer.py +1 -1
  96. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  97. metadata/generated/schema/api/data/createDashboard.py +1 -1
  98. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  99. metadata/generated/schema/api/data/createDatabase.py +1 -1
  100. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  101. metadata/generated/schema/api/data/createGlossary.py +1 -1
  102. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  103. metadata/generated/schema/api/data/createMetric.py +83 -0
  104. metadata/generated/schema/api/data/createMlModel.py +1 -1
  105. metadata/generated/schema/api/data/createPipeline.py +1 -1
  106. metadata/generated/schema/api/data/createQuery.py +1 -1
  107. metadata/generated/schema/api/data/createSearchIndex.py +8 -1
  108. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  109. metadata/generated/schema/api/data/createTable.py +1 -1
  110. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  111. metadata/generated/schema/api/data/createTopic.py +1 -1
  112. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  113. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  114. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  115. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  116. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  117. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  118. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  119. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  120. metadata/generated/schema/api/docStore/__init__.py +1 -1
  121. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  122. metadata/generated/schema/api/domains/__init__.py +1 -1
  123. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  124. metadata/generated/schema/api/domains/createDomain.py +1 -1
  125. metadata/generated/schema/api/feed/__init__.py +1 -1
  126. metadata/generated/schema/api/feed/closeTask.py +1 -1
  127. metadata/generated/schema/api/feed/createPost.py +1 -1
  128. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  129. metadata/generated/schema/api/feed/createThread.py +1 -1
  130. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  131. metadata/generated/schema/api/feed/threadCount.py +1 -1
  132. metadata/generated/schema/api/governance/__init__.py +3 -0
  133. metadata/generated/schema/api/governance/createWorkflowDefinition.py +83 -0
  134. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +22 -0
  135. metadata/generated/schema/api/lineage/__init__.py +1 -1
  136. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  137. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  138. metadata/generated/schema/api/policies/__init__.py +1 -1
  139. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  140. metadata/generated/schema/api/services/__init__.py +1 -1
  141. metadata/generated/schema/api/services/createApiService.py +2 -2
  142. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  143. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  144. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  145. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  146. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  147. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  148. metadata/generated/schema/api/services/createSearchService.py +1 -1
  149. metadata/generated/schema/api/services/createStorageService.py +1 -1
  150. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  151. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  152. metadata/generated/schema/api/setOwner.py +1 -1
  153. metadata/generated/schema/api/teams/__init__.py +1 -1
  154. metadata/generated/schema/api/teams/createPersona.py +1 -1
  155. metadata/generated/schema/api/teams/createRole.py +1 -1
  156. metadata/generated/schema/api/teams/createTeam.py +1 -1
  157. metadata/generated/schema/api/teams/createUser.py +1 -1
  158. metadata/generated/schema/api/tests/__init__.py +1 -1
  159. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  160. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  161. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  162. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  163. metadata/generated/schema/api/tests/createTestCaseResult.py +71 -0
  164. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  165. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  166. metadata/generated/schema/api/voteRequest.py +1 -1
  167. metadata/generated/schema/auth/__init__.py +1 -1
  168. metadata/generated/schema/auth/basicAuth.py +1 -1
  169. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  170. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  171. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  172. metadata/generated/schema/auth/emailRequest.py +1 -1
  173. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  174. metadata/generated/schema/auth/generateToken.py +1 -1
  175. metadata/generated/schema/auth/jwtAuth.py +1 -1
  176. metadata/generated/schema/auth/loginRequest.py +1 -1
  177. metadata/generated/schema/auth/logoutRequest.py +1 -1
  178. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  179. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  180. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  181. metadata/generated/schema/auth/refreshToken.py +1 -1
  182. metadata/generated/schema/auth/registrationRequest.py +1 -1
  183. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  184. metadata/generated/schema/auth/revokeToken.py +1 -1
  185. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  186. metadata/generated/schema/auth/ssoAuth.py +1 -1
  187. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  188. metadata/generated/schema/configuration/__init__.py +1 -1
  189. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  190. metadata/generated/schema/configuration/assetCertificationSettings.py +22 -0
  191. metadata/generated/schema/configuration/authConfig.py +1 -1
  192. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  200. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  201. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  202. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  203. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  204. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  205. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  206. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  207. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  208. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  209. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  210. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  211. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  212. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  213. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  214. metadata/generated/schema/configuration/searchSettings.py +1 -1
  215. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -14
  216. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  217. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  218. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  219. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  220. metadata/generated/schema/dataInsight/__init__.py +1 -1
  221. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  222. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  223. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +9 -1
  224. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  225. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  226. metadata/generated/schema/dataInsight/custom/lineChart.py +23 -8
  227. metadata/generated/schema/dataInsight/custom/summaryCard.py +20 -9
  228. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  229. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  230. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  231. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  232. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  233. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  234. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  235. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  236. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  237. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  238. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  239. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  240. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  241. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  242. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  243. metadata/generated/schema/email/__init__.py +1 -1
  244. metadata/generated/schema/email/emailRequest.py +1 -1
  245. metadata/generated/schema/email/emailTemplate.py +1 -1
  246. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  247. metadata/generated/schema/email/smtpSettings.py +1 -1
  248. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  249. metadata/generated/schema/entity/__init__.py +1 -1
  250. metadata/generated/schema/entity/applications/__init__.py +1 -1
  251. metadata/generated/schema/entity/applications/app.py +9 -1
  252. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  253. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +4 -2
  256. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +54 -2
  264. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +22 -0
  273. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  277. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  278. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  279. metadata/generated/schema/entity/applications/createAppRequest.py +8 -1
  280. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  281. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  282. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  283. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +8 -1
  284. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +8 -1
  285. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  286. metadata/generated/schema/entity/automations/__init__.py +1 -1
  287. metadata/generated/schema/entity/automations/testServiceConnection.py +3 -1
  288. metadata/generated/schema/entity/automations/workflow.py +1 -1
  289. metadata/generated/schema/entity/bot.py +1 -1
  290. metadata/generated/schema/entity/classification/__init__.py +1 -1
  291. metadata/generated/schema/entity/classification/classification.py +2 -2
  292. metadata/generated/schema/entity/classification/tag.py +2 -2
  293. metadata/generated/schema/entity/data/__init__.py +1 -1
  294. metadata/generated/schema/entity/data/apiCollection.py +4 -2
  295. metadata/generated/schema/entity/data/apiEndpoint.py +4 -2
  296. metadata/generated/schema/entity/data/chart.py +4 -3
  297. metadata/generated/schema/entity/data/container.py +4 -2
  298. metadata/generated/schema/entity/data/dashboard.py +4 -2
  299. metadata/generated/schema/entity/data/dashboardDataModel.py +5 -2
  300. metadata/generated/schema/entity/data/database.py +7 -7
  301. metadata/generated/schema/entity/data/databaseSchema.py +5 -2
  302. metadata/generated/schema/entity/data/glossary.py +2 -2
  303. metadata/generated/schema/entity/data/glossaryTerm.py +3 -2
  304. metadata/generated/schema/entity/data/metric.py +196 -0
  305. metadata/generated/schema/entity/data/mlmodel.py +4 -2
  306. metadata/generated/schema/entity/data/pipeline.py +4 -3
  307. metadata/generated/schema/entity/data/query.py +3 -5
  308. metadata/generated/schema/entity/data/report.py +1 -1
  309. metadata/generated/schema/entity/data/searchIndex.py +16 -2
  310. metadata/generated/schema/entity/data/storedProcedure.py +4 -2
  311. metadata/generated/schema/entity/data/table.py +36 -3
  312. metadata/generated/schema/entity/data/topic.py +4 -3
  313. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  314. metadata/generated/schema/entity/docStore/document.py +1 -1
  315. metadata/generated/schema/entity/domains/__init__.py +1 -1
  316. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  317. metadata/generated/schema/entity/domains/domain.py +1 -1
  318. metadata/generated/schema/entity/events/__init__.py +1 -1
  319. metadata/generated/schema/entity/events/webhook.py +19 -2
  320. metadata/generated/schema/entity/feed/__init__.py +1 -1
  321. metadata/generated/schema/entity/feed/assets.py +1 -1
  322. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  323. metadata/generated/schema/entity/feed/description.py +1 -1
  324. metadata/generated/schema/entity/feed/domain.py +1 -1
  325. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  326. metadata/generated/schema/entity/feed/owner.py +1 -1
  327. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  328. metadata/generated/schema/entity/feed/tag.py +1 -1
  329. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  330. metadata/generated/schema/entity/feed/thread.py +1 -1
  331. metadata/generated/schema/entity/policies/__init__.py +1 -1
  332. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  333. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +4 -1
  334. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  335. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  336. metadata/generated/schema/entity/policies/filters.py +1 -1
  337. metadata/generated/schema/entity/policies/policy.py +1 -1
  338. metadata/generated/schema/entity/services/__init__.py +1 -1
  339. metadata/generated/schema/entity/services/apiService.py +7 -7
  340. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  341. metadata/generated/schema/entity/services/connections/{apiService → api}/__init__.py +1 -1
  342. metadata/generated/schema/entity/services/connections/{apiService → api}/restConnection.py +15 -7
  343. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  344. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  345. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  346. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  347. metadata/generated/schema/entity/services/connections/connectionBasicType.py +29 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +67 -0
  355. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  360. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  361. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  362. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +41 -0
  368. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +5 -1
  372. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +9 -1
  374. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +11 -0
  382. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/db2Connection.py +16 -1
  391. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/druidConnection.py +4 -1
  398. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +84 -0
  400. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +4 -1
  402. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +4 -1
  403. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +4 -1
  412. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +4 -1
  413. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +3 -2
  414. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +5 -1
  415. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +11 -7
  416. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +5 -1
  417. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +4 -1
  418. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +5 -1
  419. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +9 -1
  421. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +5 -1
  427. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +4 -1
  429. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +9 -1
  430. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +4 -1
  431. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +4 -1
  433. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +7 -2
  434. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  437. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  443. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  444. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  451. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +69 -0
  464. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +17 -5
  465. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +65 -0
  471. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +43 -0
  476. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  479. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  480. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  481. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/serviceConnection.py +3 -3
  484. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  485. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  490. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  491. metadata/generated/schema/entity/services/dashboardService.py +8 -5
  492. metadata/generated/schema/entity/services/databaseService.py +5 -2
  493. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  494. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +2 -1
  495. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  496. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  497. metadata/generated/schema/entity/services/messagingService.py +2 -2
  498. metadata/generated/schema/entity/services/metadataService.py +2 -2
  499. metadata/generated/schema/entity/services/mlmodelService.py +2 -2
  500. metadata/generated/schema/entity/services/pipelineService.py +11 -2
  501. metadata/generated/schema/entity/services/searchService.py +2 -2
  502. metadata/generated/schema/entity/services/serviceType.py +2 -2
  503. metadata/generated/schema/entity/services/storageService.py +2 -2
  504. metadata/generated/schema/entity/teams/__init__.py +1 -1
  505. metadata/generated/schema/entity/teams/persona.py +1 -1
  506. metadata/generated/schema/entity/teams/role.py +1 -1
  507. metadata/generated/schema/entity/teams/team.py +1 -1
  508. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  509. metadata/generated/schema/entity/teams/user.py +1 -1
  510. metadata/generated/schema/entity/type.py +1 -1
  511. metadata/generated/schema/entity/utils/__init__.py +1 -1
  512. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  513. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  514. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  515. metadata/generated/schema/events/__init__.py +1 -1
  516. metadata/generated/schema/events/alertMetrics.py +1 -1
  517. metadata/generated/schema/events/api/__init__.py +1 -1
  518. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  519. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +69 -0
  520. metadata/generated/schema/events/api/eventsRecord.py +37 -0
  521. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -4
  522. metadata/generated/schema/events/api/typedEvent.py +46 -0
  523. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  524. metadata/generated/schema/events/eventFilterRule.py +1 -1
  525. metadata/generated/schema/events/eventSubscription.py +15 -46
  526. metadata/generated/schema/events/eventSubscriptionOffset.py +7 -2
  527. metadata/generated/schema/events/failedEvent.py +1 -1
  528. metadata/generated/schema/events/failedEventResponse.py +38 -0
  529. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  530. metadata/generated/schema/events/statusContext.py +43 -0
  531. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  532. metadata/generated/schema/events/subscriptionStatus.py +78 -0
  533. metadata/generated/schema/events/testDestinationStatus.py +88 -0
  534. metadata/generated/schema/governance/workflows/__init__.py +3 -0
  535. metadata/generated/schema/governance/workflows/elements/__init__.py +5 -0
  536. metadata/generated/schema/governance/workflows/elements/edge.py +29 -0
  537. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +16 -0
  538. metadata/generated/schema/governance/workflows/elements/nodeType.py +14 -0
  539. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +3 -0
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +5 -0
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +44 -0
  542. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +49 -0
  543. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +42 -0
  544. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +3 -0
  545. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +30 -0
  546. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +3 -0
  547. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +30 -0
  548. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +3 -0
  549. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +57 -0
  550. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +3 -0
  551. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +43 -0
  552. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +44 -0
  553. metadata/generated/schema/{entity/data/metrics.py → governance/workflows/workflowDefinition.py} +36 -49
  554. metadata/generated/schema/governance/workflows/workflowInstance.py +50 -0
  555. metadata/generated/schema/governance/workflows/workflowInstanceState.py +73 -0
  556. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  557. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +53 -0
  558. metadata/generated/schema/metadataIngestion/application.py +1 -1
  559. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  561. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  562. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +111 -0
  563. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -9
  564. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +27 -24
  565. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +42 -1
  566. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  567. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  569. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  570. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  571. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  572. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  573. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +9 -1
  574. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +9 -1
  575. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  576. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  577. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  578. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  579. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  580. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +9 -1
  581. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  582. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  583. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  584. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  585. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  586. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  587. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  588. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  589. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  590. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  591. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +4 -1
  592. metadata/generated/schema/metadataIngestion/workflow.py +15 -1
  593. metadata/generated/schema/monitoring/__init__.py +1 -1
  594. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  595. metadata/generated/schema/security/__init__.py +1 -1
  596. metadata/generated/schema/security/client/__init__.py +1 -1
  597. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  598. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  599. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  600. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  601. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  602. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  603. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  604. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  605. metadata/generated/schema/security/credentials/__init__.py +1 -1
  606. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  607. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  608. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  609. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  610. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  611. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  612. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  613. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  614. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  615. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  616. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  617. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  618. metadata/generated/schema/security/sasl/__init__.py +1 -1
  619. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  620. metadata/generated/schema/security/secrets/__init__.py +1 -1
  621. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  622. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  623. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  624. metadata/generated/schema/security/securityConfiguration.py +1 -1
  625. metadata/generated/schema/security/ssl/__init__.py +1 -1
  626. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  627. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  628. metadata/generated/schema/settings/__init__.py +1 -1
  629. metadata/generated/schema/settings/settings.py +7 -1
  630. metadata/generated/schema/system/__init__.py +1 -1
  631. metadata/generated/schema/system/entityError.py +1 -1
  632. metadata/generated/schema/system/eventPublisherJob.py +2 -1
  633. metadata/generated/schema/system/indexingError.py +1 -1
  634. metadata/generated/schema/system/limitsResponse.py +1 -1
  635. metadata/generated/schema/system/ui/__init__.py +1 -1
  636. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  637. metadata/generated/schema/system/ui/page.py +1 -1
  638. metadata/generated/schema/system/validationResponse.py +1 -1
  639. metadata/generated/schema/tests/__init__.py +1 -1
  640. metadata/generated/schema/tests/assigned.py +1 -1
  641. metadata/generated/schema/tests/basic.py +19 -4
  642. metadata/generated/schema/tests/customMetric.py +1 -1
  643. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  644. metadata/generated/schema/tests/resolved.py +1 -1
  645. metadata/generated/schema/tests/testCase.py +6 -2
  646. metadata/generated/schema/tests/testCaseResolutionStatus.py +17 -2
  647. metadata/generated/schema/tests/testDefinition.py +1 -1
  648. metadata/generated/schema/tests/testSuite.py +9 -2
  649. metadata/generated/schema/type/__init__.py +1 -1
  650. metadata/generated/schema/type/apiSchema.py +1 -1
  651. metadata/generated/schema/type/assetCertification.py +26 -0
  652. metadata/generated/schema/type/auditLog.py +1 -1
  653. metadata/generated/schema/type/basic.py +1 -1
  654. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  655. metadata/generated/schema/type/changeEvent.py +1 -1
  656. metadata/generated/schema/type/changeEventType.py +1 -1
  657. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  658. metadata/generated/schema/type/csvDocumentation.py +1 -1
  659. metadata/generated/schema/type/csvErrorType.py +1 -1
  660. metadata/generated/schema/type/csvFile.py +1 -1
  661. metadata/generated/schema/type/csvImportResult.py +1 -1
  662. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  663. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  664. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  665. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  666. metadata/generated/schema/type/customProperty.py +8 -1
  667. metadata/generated/schema/type/dailyCount.py +1 -1
  668. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  669. metadata/generated/schema/type/entityHierarchy.py +1 -1
  670. metadata/generated/schema/type/entityHistory.py +1 -1
  671. metadata/generated/schema/type/entityLineage.py +1 -1
  672. metadata/generated/schema/type/entityReference.py +1 -1
  673. metadata/generated/schema/type/entityReferenceList.py +1 -1
  674. metadata/generated/schema/type/entityRelationship.py +2 -1
  675. metadata/generated/schema/type/entityUsage.py +1 -1
  676. metadata/generated/schema/type/filterPattern.py +1 -1
  677. metadata/generated/schema/type/function.py +1 -1
  678. metadata/generated/schema/type/include.py +1 -1
  679. metadata/generated/schema/type/jdbcConnection.py +1 -1
  680. metadata/generated/schema/type/lifeCycle.py +1 -1
  681. metadata/generated/schema/type/paging.py +1 -1
  682. metadata/generated/schema/type/profile.py +1 -1
  683. metadata/generated/schema/type/queryParserData.py +1 -1
  684. metadata/generated/schema/type/reaction.py +1 -1
  685. metadata/generated/schema/type/schedule.py +1 -1
  686. metadata/generated/schema/type/schema.py +1 -1
  687. metadata/generated/schema/type/tableQuery.py +1 -1
  688. metadata/generated/schema/type/tableUsageCount.py +1 -1
  689. metadata/generated/schema/type/tagLabel.py +1 -1
  690. metadata/generated/schema/type/usageDetails.py +1 -1
  691. metadata/generated/schema/type/usageRequest.py +1 -1
  692. metadata/generated/schema/type/votes.py +1 -1
  693. metadata/ingestion/api/models.py +9 -5
  694. metadata/ingestion/api/parser.py +14 -0
  695. metadata/ingestion/lineage/parser.py +1 -1
  696. metadata/ingestion/lineage/sql_lineage.py +135 -62
  697. metadata/ingestion/models/custom_basemodel_validation.py +80 -0
  698. metadata/ingestion/models/custom_pydantic.py +33 -1
  699. metadata/ingestion/models/custom_types.py +2 -0
  700. metadata/ingestion/models/entity_interface.py +71 -0
  701. metadata/ingestion/ometa/mixins/data_insight_mixin.py +3 -2
  702. metadata/ingestion/ometa/mixins/es_mixin.py +66 -8
  703. metadata/ingestion/ometa/mixins/ingestion_pipeline_mixin.py +5 -3
  704. metadata/ingestion/ometa/mixins/suggestions_mixin.py +3 -3
  705. metadata/ingestion/ometa/mixins/table_mixin.py +1 -1
  706. metadata/ingestion/ometa/models.py +1 -0
  707. metadata/ingestion/ometa/ometa_api.py +6 -3
  708. metadata/ingestion/ometa/routes.py +4 -2
  709. metadata/ingestion/processor/query_parser.py +2 -2
  710. metadata/ingestion/sink/metadata_rest.py +23 -18
  711. metadata/ingestion/source/api/api_service.py +212 -0
  712. metadata/ingestion/source/api/rest/connection.py +93 -0
  713. metadata/ingestion/source/api/rest/metadata.py +278 -0
  714. metadata/ingestion/source/api/rest/models.py +41 -0
  715. metadata/ingestion/source/api/rest/service_spec.py +4 -0
  716. metadata/ingestion/source/dashboard/dashboard_service.py +2 -0
  717. metadata/ingestion/source/dashboard/domodashboard/service_spec.py +6 -0
  718. metadata/ingestion/source/dashboard/lightdash/service_spec.py +4 -0
  719. metadata/ingestion/source/dashboard/looker/metadata.py +33 -4
  720. metadata/ingestion/source/dashboard/looker/service_spec.py +4 -0
  721. metadata/ingestion/source/dashboard/metabase/service_spec.py +4 -0
  722. metadata/ingestion/source/dashboard/microstrategy/__init__.py +0 -0
  723. metadata/ingestion/source/dashboard/{mstr → microstrategy}/client.py +48 -37
  724. metadata/ingestion/source/dashboard/{mstr → microstrategy}/connection.py +11 -11
  725. metadata/ingestion/source/dashboard/{mstr → microstrategy}/metadata.py +18 -14
  726. metadata/ingestion/source/dashboard/{mstr → microstrategy}/models.py +1 -1
  727. metadata/ingestion/source/dashboard/microstrategy/service_spec.py +6 -0
  728. metadata/ingestion/source/dashboard/mode/service_spec.py +4 -0
  729. metadata/ingestion/source/dashboard/powerbi/service_spec.py +4 -0
  730. metadata/ingestion/source/dashboard/qlikcloud/service_spec.py +4 -0
  731. metadata/ingestion/source/dashboard/qliksense/service_spec.py +4 -0
  732. metadata/ingestion/source/dashboard/quicksight/service_spec.py +4 -0
  733. metadata/ingestion/source/dashboard/redash/service_spec.py +4 -0
  734. metadata/ingestion/source/dashboard/sigma/__init__.py +0 -0
  735. metadata/ingestion/source/dashboard/sigma/client.py +186 -0
  736. metadata/ingestion/source/dashboard/sigma/connection.py +67 -0
  737. metadata/ingestion/source/dashboard/sigma/metadata.py +331 -0
  738. metadata/ingestion/source/dashboard/sigma/models.py +97 -0
  739. metadata/ingestion/source/dashboard/sigma/service_spec.py +4 -0
  740. metadata/ingestion/source/dashboard/superset/service_spec.py +4 -0
  741. metadata/ingestion/source/dashboard/tableau/metadata.py +29 -12
  742. metadata/ingestion/source/dashboard/tableau/models.py +10 -0
  743. metadata/ingestion/source/dashboard/tableau/service_spec.py +4 -0
  744. metadata/ingestion/source/database/athena/service_spec.py +10 -0
  745. metadata/ingestion/source/database/azuresql/service_spec.py +12 -0
  746. metadata/ingestion/source/database/bigquery/connection.py +28 -2
  747. metadata/ingestion/source/database/bigquery/lineage.py +29 -2
  748. metadata/ingestion/source/database/bigquery/metadata.py +1 -25
  749. metadata/ingestion/source/database/bigquery/profiler/__init__.py +0 -0
  750. metadata/ingestion/source/database/bigquery/profiler/profiler.py +30 -0
  751. metadata/ingestion/source/database/bigquery/profiler/system.py +166 -0
  752. metadata/ingestion/source/database/bigquery/queries.py +69 -1
  753. metadata/ingestion/source/database/bigquery/service_spec.py +16 -0
  754. metadata/ingestion/source/database/bigtable/service_spec.py +4 -0
  755. metadata/ingestion/source/database/clickhouse/service_spec.py +12 -0
  756. metadata/ingestion/source/database/common_db_source.py +150 -147
  757. metadata/ingestion/source/database/common_nosql_source.py +0 -14
  758. metadata/ingestion/source/database/couchbase/metadata.py +62 -2
  759. metadata/{data_quality/builders/sqa_validator_builder.py → ingestion/source/database/couchbase/models.py} +15 -9
  760. metadata/ingestion/source/database/couchbase/queries.py +6 -1
  761. metadata/ingestion/source/database/couchbase/service_spec.py +4 -0
  762. metadata/ingestion/source/database/database_service.py +15 -22
  763. metadata/ingestion/source/database/databricks/metadata.py +12 -1
  764. metadata/ingestion/source/database/databricks/service_spec.py +20 -0
  765. metadata/ingestion/source/database/datalake/clients/azure_blob.py +0 -3
  766. metadata/ingestion/source/database/datalake/clients/base.py +10 -1
  767. metadata/ingestion/source/database/datalake/clients/gcs.py +10 -6
  768. metadata/ingestion/source/database/datalake/clients/s3.py +0 -3
  769. metadata/ingestion/source/database/datalake/metadata.py +2 -13
  770. metadata/ingestion/source/database/datalake/service_spec.py +16 -0
  771. metadata/ingestion/source/database/db2/connection.py +14 -1
  772. metadata/ingestion/source/database/db2/lineage.py +46 -0
  773. metadata/ingestion/source/database/db2/service_spec.py +9 -0
  774. metadata/ingestion/source/database/dbt/constants.py +12 -0
  775. metadata/ingestion/source/database/dbt/dbt_config.py +24 -2
  776. metadata/ingestion/source/database/dbt/dbt_service.py +25 -1
  777. metadata/ingestion/source/database/dbt/dbt_utils.py +29 -0
  778. metadata/ingestion/source/database/dbt/metadata.py +73 -7
  779. metadata/ingestion/source/database/dbt/models.py +2 -0
  780. metadata/ingestion/source/database/dbt/service_spec.py +4 -0
  781. metadata/ingestion/source/database/deltalake/metadata.py +1 -12
  782. metadata/ingestion/source/database/deltalake/service_spec.py +4 -0
  783. metadata/ingestion/source/database/domodatabase/metadata.py +1 -12
  784. metadata/ingestion/source/database/domodatabase/service_spec.py +4 -0
  785. metadata/ingestion/source/database/doris/metadata.py +1 -1
  786. metadata/ingestion/source/database/doris/service_spec.py +4 -0
  787. metadata/ingestion/source/database/druid/lineage.py +46 -0
  788. metadata/ingestion/source/database/druid/service_spec.py +4 -0
  789. metadata/ingestion/source/database/dynamodb/service_spec.py +10 -0
  790. metadata/ingestion/source/database/exasol/__init__.py +0 -0
  791. metadata/ingestion/source/database/exasol/connection.py +87 -0
  792. metadata/ingestion/source/database/exasol/metadata.py +27 -0
  793. metadata/ingestion/source/database/exasol/service_spec.py +4 -0
  794. metadata/ingestion/source/database/glue/metadata.py +49 -19
  795. metadata/ingestion/source/database/glue/models.py +8 -0
  796. metadata/ingestion/source/database/glue/service_spec.py +4 -0
  797. metadata/ingestion/source/database/greenplum/lineage.py +46 -0
  798. metadata/ingestion/source/database/greenplum/service_spec.py +4 -0
  799. metadata/ingestion/source/database/hive/lineage.py +46 -0
  800. metadata/ingestion/source/database/hive/service_spec.py +4 -0
  801. metadata/ingestion/source/database/iceberg/metadata.py +1 -16
  802. metadata/ingestion/source/database/iceberg/service_spec.py +4 -0
  803. metadata/ingestion/source/database/impala/lineage.py +46 -0
  804. metadata/ingestion/source/database/impala/service_spec.py +4 -0
  805. metadata/ingestion/source/database/life_cycle_query_mixin.py +3 -5
  806. metadata/ingestion/source/database/lineage_source.py +124 -32
  807. metadata/ingestion/source/database/mariadb/lineage.py +46 -0
  808. metadata/ingestion/source/database/mariadb/service_spec.py +4 -0
  809. metadata/ingestion/source/database/mongodb/service_spec.py +10 -0
  810. metadata/ingestion/source/database/mssql/lineage.py +51 -2
  811. metadata/ingestion/source/database/mssql/metadata.py +2 -44
  812. metadata/ingestion/source/database/mssql/service_spec.py +12 -0
  813. metadata/ingestion/source/database/mysql/lineage.py +0 -2
  814. metadata/ingestion/source/database/mysql/queries.py +0 -2
  815. metadata/ingestion/source/database/mysql/service_spec.py +10 -0
  816. metadata/ingestion/source/database/mysql/usage.py +0 -2
  817. metadata/ingestion/source/database/oracle/lineage.py +28 -1
  818. metadata/ingestion/source/database/oracle/metadata.py +2 -23
  819. metadata/ingestion/source/database/oracle/service_spec.py +10 -0
  820. metadata/ingestion/source/database/pinotdb/lineage.py +46 -0
  821. metadata/ingestion/source/database/pinotdb/service_spec.py +4 -0
  822. metadata/ingestion/source/database/postgres/metadata.py +4 -13
  823. metadata/ingestion/source/database/postgres/service_spec.py +10 -0
  824. metadata/ingestion/source/database/postgres/utils.py +26 -0
  825. metadata/ingestion/source/database/presto/service_spec.py +4 -0
  826. metadata/ingestion/source/database/query/service_spec.py +9 -0
  827. metadata/ingestion/source/database/query_parser_source.py +1 -0
  828. metadata/ingestion/source/database/redshift/connection.py +9 -2
  829. metadata/ingestion/source/database/redshift/lineage.py +27 -3
  830. metadata/ingestion/source/database/redshift/metadata.py +2 -27
  831. metadata/ingestion/source/database/redshift/profiler/__init__.py +0 -0
  832. metadata/ingestion/source/database/redshift/profiler/profiler.py +14 -0
  833. metadata/ingestion/source/database/redshift/profiler/system.py +149 -0
  834. metadata/ingestion/source/database/redshift/queries.py +99 -8
  835. metadata/ingestion/source/database/redshift/service_spec.py +14 -0
  836. metadata/ingestion/source/database/redshift/utils.py +3 -3
  837. metadata/ingestion/source/database/salesforce/metadata.py +1 -12
  838. metadata/ingestion/source/database/salesforce/service_spec.py +4 -0
  839. metadata/ingestion/source/database/sample_data.py +129 -34
  840. metadata/ingestion/source/database/saperp/service_spec.py +4 -0
  841. metadata/ingestion/source/database/saphana/service_spec.py +7 -0
  842. metadata/ingestion/source/database/sas/metadata.py +1 -10
  843. metadata/ingestion/source/database/sas/service_spec.py +4 -0
  844. metadata/ingestion/source/database/singlestore/lineage.py +46 -0
  845. metadata/ingestion/source/database/singlestore/service_spec.py +9 -0
  846. metadata/ingestion/source/database/snowflake/connection.py +13 -3
  847. metadata/ingestion/source/database/snowflake/lineage.py +65 -3
  848. metadata/ingestion/source/database/snowflake/metadata.py +1 -24
  849. metadata/ingestion/source/database/snowflake/models.py +50 -1
  850. metadata/ingestion/source/database/snowflake/profiler/__init__.py +0 -0
  851. metadata/ingestion/source/database/snowflake/profiler/profiler.py +26 -0
  852. metadata/ingestion/source/database/snowflake/profiler/system.py +437 -0
  853. metadata/ingestion/source/database/snowflake/queries.py +27 -0
  854. metadata/ingestion/source/database/snowflake/service_spec.py +20 -0
  855. metadata/ingestion/source/database/sql_column_handler.py +26 -0
  856. metadata/ingestion/source/database/sqlite/lineage.py +46 -0
  857. metadata/ingestion/source/database/sqlite/service_spec.py +4 -0
  858. metadata/ingestion/source/database/stored_procedures_mixin.py +90 -52
  859. metadata/ingestion/source/database/teradata/lineage.py +46 -0
  860. metadata/ingestion/source/database/teradata/service_spec.py +4 -0
  861. metadata/ingestion/source/database/trino/connection.py +60 -23
  862. metadata/ingestion/source/database/trino/profiler/__init__.py +0 -0
  863. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +167 -0
  864. metadata/ingestion/source/database/trino/service_spec.py +16 -0
  865. metadata/ingestion/source/database/unitycatalog/metadata.py +3 -24
  866. metadata/ingestion/source/database/unitycatalog/service_spec.py +22 -0
  867. metadata/ingestion/source/database/usage_source.py +4 -1
  868. metadata/ingestion/source/database/vertica/service_spec.py +10 -0
  869. metadata/ingestion/source/messaging/kafka/service_spec.py +4 -0
  870. metadata/ingestion/source/messaging/kinesis/service_spec.py +4 -0
  871. metadata/ingestion/source/messaging/redpanda/service_spec.py +4 -0
  872. metadata/ingestion/source/metadata/alationsink/service_spec.py +4 -0
  873. metadata/ingestion/source/metadata/amundsen/service_spec.py +4 -0
  874. metadata/ingestion/source/metadata/atlas/service_spec.py +4 -0
  875. metadata/ingestion/source/mlmodel/mlflow/service_spec.py +4 -0
  876. metadata/ingestion/source/mlmodel/sagemaker/service_spec.py +4 -0
  877. metadata/ingestion/source/pipeline/airbyte/service_spec.py +4 -0
  878. metadata/ingestion/source/pipeline/airflow/connection.py +45 -2
  879. metadata/ingestion/source/pipeline/airflow/metadata.py +71 -27
  880. metadata/ingestion/source/pipeline/airflow/service_spec.py +4 -0
  881. metadata/ingestion/source/pipeline/dagster/metadata.py +3 -1
  882. metadata/ingestion/source/pipeline/dagster/service_spec.py +4 -0
  883. metadata/ingestion/source/pipeline/databrickspipeline/service_spec.py +6 -0
  884. metadata/ingestion/source/pipeline/dbtcloud/client.py +67 -28
  885. metadata/ingestion/source/pipeline/dbtcloud/connection.py +1 -3
  886. metadata/ingestion/source/pipeline/dbtcloud/models.py +1 -1
  887. metadata/ingestion/source/pipeline/dbtcloud/service_spec.py +4 -0
  888. metadata/ingestion/source/pipeline/domopipeline/service_spec.py +4 -0
  889. metadata/ingestion/source/pipeline/fivetran/metadata.py +1 -1
  890. metadata/ingestion/source/pipeline/fivetran/service_spec.py +4 -0
  891. metadata/ingestion/source/pipeline/flink/service_spec.py +4 -0
  892. metadata/ingestion/source/pipeline/gluepipeline/service_spec.py +4 -0
  893. metadata/ingestion/source/pipeline/kafkaconnect/client.py +13 -14
  894. metadata/ingestion/source/pipeline/kafkaconnect/connection.py +1 -1
  895. metadata/ingestion/source/pipeline/kafkaconnect/service_spec.py +4 -0
  896. metadata/ingestion/source/pipeline/nifi/service_spec.py +4 -0
  897. metadata/ingestion/source/pipeline/openlineage/service_spec.py +4 -0
  898. metadata/ingestion/source/pipeline/pipeline_service.py +3 -1
  899. metadata/ingestion/source/pipeline/spline/service_spec.py +4 -0
  900. metadata/ingestion/source/search/elasticsearch/metadata.py +53 -0
  901. metadata/ingestion/source/search/elasticsearch/service_spec.py +4 -0
  902. metadata/ingestion/source/search/search_service.py +44 -1
  903. metadata/ingestion/source/storage/gcs/metadata.py +2 -2
  904. metadata/ingestion/source/storage/gcs/service_spec.py +4 -0
  905. metadata/ingestion/source/storage/s3/service_spec.py +4 -0
  906. metadata/mixins/pandas/pandas_mixin.py +2 -31
  907. metadata/mixins/sqalchemy/sqa_mixin.py +18 -17
  908. metadata/parsers/avro_parser.py +51 -16
  909. metadata/parsers/json_schema_parser.py +45 -16
  910. metadata/pii/processor.py +10 -9
  911. metadata/pii/scanners/ner_scanner.py +2 -1
  912. metadata/profiler/api/models.py +4 -75
  913. metadata/profiler/config.py +39 -0
  914. metadata/profiler/interface/nosql/profiler_interface.py +1 -26
  915. metadata/profiler/interface/pandas/profiler_interface.py +37 -77
  916. metadata/profiler/interface/profiler_interface.py +25 -279
  917. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +0 -19
  918. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +2 -17
  919. metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +1 -1
  920. metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +7 -5
  921. metadata/profiler/interface/sqlalchemy/profiler_interface.py +73 -125
  922. metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +5 -5
  923. metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +1 -1
  924. metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +145 -0
  925. metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +9 -4
  926. metadata/profiler/metrics/static/max.py +4 -2
  927. metadata/profiler/metrics/static/min.py +4 -2
  928. metadata/profiler/metrics/system/system.py +69 -374
  929. metadata/profiler/orm/converter/base.py +23 -13
  930. metadata/profiler/orm/converter/bigquery/converter.py +1 -1
  931. metadata/profiler/orm/converter/converter_registry.py +2 -0
  932. metadata/profiler/orm/converter/mssql/converter.py +15 -1
  933. metadata/profiler/orm/functions/count.py +9 -0
  934. metadata/profiler/orm/functions/md5.py +42 -0
  935. metadata/{data_quality/builders/pandas_validator_builder.py → profiler/orm/functions/substr.py} +13 -10
  936. metadata/profiler/orm/functions/table_metric_computer.py +10 -9
  937. metadata/profiler/orm/functions/unique_count.py +6 -0
  938. metadata/profiler/orm/registry.py +27 -2
  939. metadata/profiler/orm/types/custom_timestamp.py +4 -2
  940. metadata/profiler/processor/core.py +13 -62
  941. metadata/profiler/processor/handle_partition.py +0 -48
  942. metadata/profiler/processor/processor.py +1 -1
  943. metadata/profiler/processor/runner.py +116 -35
  944. metadata/profiler/processor/sample_data_handler.py +7 -4
  945. metadata/profiler/source/database/base/profiler_source.py +214 -0
  946. metadata/profiler/source/{bigquery → database/bigquery}/profiler_source.py +4 -4
  947. metadata/profiler/source/{databricks → database/databricks}/profiler_source.py +6 -7
  948. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/first_quartile.py +1 -1
  949. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/median.py +1 -1
  950. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/third_quartile.py +1 -1
  951. metadata/profiler/source/{single_store → database/single_store}/metrics/window/first_quartile.py +3 -1
  952. metadata/profiler/source/{single_store → database/single_store}/metrics/window/median.py +3 -1
  953. metadata/profiler/source/{single_store → database/single_store}/metrics/window/third_quartile.py +3 -1
  954. metadata/profiler/source/fetcher/config.py +44 -0
  955. metadata/profiler/source/fetcher/entity_fetcher.py +62 -0
  956. metadata/profiler/source/fetcher/fetcher_strategy.py +299 -0
  957. metadata/profiler/source/fetcher/profiler_source_factory.py +89 -0
  958. metadata/profiler/source/metadata.py +16 -201
  959. metadata/profiler/source/metadata_ext.py +23 -18
  960. metadata/profiler/source/model.py +29 -0
  961. metadata/sampler/config.py +237 -0
  962. metadata/sampler/models.py +106 -0
  963. metadata/{profiler/processor/sampler → sampler}/nosql/sampler.py +44 -12
  964. metadata/sampler/pandas/sampler.py +239 -0
  965. metadata/{utils → sampler}/partition.py +66 -51
  966. metadata/sampler/processor.py +154 -0
  967. metadata/sampler/sampler_interface.py +251 -0
  968. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/azuresql/sampler.py +1 -1
  969. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/bigquery/sampler.py +55 -26
  970. metadata/sampler/sqlalchemy/mssql/sampler.py +50 -0
  971. metadata/sampler/sqlalchemy/postgres/sampler.py +91 -0
  972. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/sampler.py +93 -98
  973. metadata/sampler/sqlalchemy/snowflake/sampler.py +95 -0
  974. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/trino/sampler.py +5 -3
  975. metadata/utils/class_helper.py +12 -0
  976. metadata/utils/collaborative_super.py +28 -0
  977. metadata/utils/constants.py +65 -0
  978. metadata/utils/constraints.py +65 -0
  979. metadata/utils/dict.py +8 -0
  980. metadata/utils/dispatch.py +1 -53
  981. metadata/utils/entity_link.py +8 -2
  982. metadata/utils/entity_utils.py +93 -0
  983. metadata/utils/filters.py +15 -0
  984. metadata/utils/fqn.py +15 -0
  985. metadata/utils/helpers.py +3 -2
  986. metadata/utils/importer.py +12 -24
  987. metadata/utils/logger.py +31 -1
  988. metadata/utils/lru_cache.py +76 -15
  989. metadata/utils/profiler_utils.py +43 -9
  990. metadata/utils/service_spec/__init__.py +5 -0
  991. metadata/utils/service_spec/default.py +21 -0
  992. metadata/utils/service_spec/service_spec.py +146 -0
  993. metadata/utils/ssl_manager.py +33 -0
  994. metadata/utils/time_utils.py +33 -5
  995. metadata/workflow/application.py +7 -36
  996. metadata/workflow/base.py +47 -17
  997. metadata/workflow/classification.py +53 -0
  998. metadata/workflow/data_quality.py +5 -1
  999. metadata/workflow/ingestion.py +6 -38
  1000. metadata/workflow/profiler.py +1 -17
  1001. metadata/workflow/workflow_output_handler.py +11 -8
  1002. metadata/workflow/workflow_status_mixin.py +0 -2
  1003. openmetadata_ingestion-1.6.0.0.dist-info/LICENSE +114 -0
  1004. {openmetadata_ingestion-1.5.13.1.dist-info → openmetadata_ingestion-1.6.0.0.dist-info}/METADATA +498 -573
  1005. {openmetadata_ingestion-1.5.13.1.dist-info → openmetadata_ingestion-1.6.0.0.dist-info}/RECORD +1012 -825
  1006. {openmetadata_ingestion-1.5.13.1.dist-info → openmetadata_ingestion-1.6.0.0.dist-info}/entry_points.txt +3 -0
  1007. metadata/data_quality/interface/test_suite_interface_factory.py +0 -128
  1008. metadata/data_quality/runner/test_suite_source_factory.py +0 -38
  1009. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +0 -54
  1010. metadata/profiler/interface/profiler_interface_factory.py +0 -107
  1011. metadata/profiler/metrics/system/queries/bigquery.py +0 -54
  1012. metadata/profiler/metrics/system/queries/redshift.py +0 -103
  1013. metadata/profiler/metrics/system/queries/snowflake.py +0 -191
  1014. metadata/profiler/processor/sampler/pandas/sampler.py +0 -170
  1015. metadata/profiler/processor/sampler/sampler_factory.py +0 -100
  1016. metadata/profiler/processor/sampler/sampler_interface.py +0 -74
  1017. metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +0 -60
  1018. metadata/profiler/source/base/profiler_source.py +0 -299
  1019. metadata/profiler/source/profiler_source_factory.py +0 -54
  1020. openmetadata_ingestion-1.5.13.1.dist-info/LICENSE +0 -201
  1021. {metadata/ingestion/source/dashboard/mstr → _openmetadata_testutils/pytest_openmetadata}/__init__.py +0 -0
  1022. /metadata/profiler/source/{bigquery → database/bigquery}/type_mapper.py +0 -0
  1023. /metadata/profiler/source/{mariadb → database/mariadb}/functions/median.py +0 -0
  1024. /metadata/profiler/source/{single_store → database/single_store}/functions/median.py +0 -0
  1025. {openmetadata_ingestion-1.5.13.1.dist-info → openmetadata_ingestion-1.6.0.0.dist-info}/WHEEL +0 -0
  1026. {openmetadata_ingestion-1.5.13.1.dist-info → openmetadata_ingestion-1.6.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,46 @@
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
+ Greenplum lineage module
13
+ """
14
+ from typing import Optional
15
+
16
+ from metadata.generated.schema.entity.services.connections.database.greenplumConnection import (
17
+ GreenplumConnection,
18
+ )
19
+ from metadata.generated.schema.metadataIngestion.workflow import (
20
+ Source as WorkflowSource,
21
+ )
22
+ from metadata.ingestion.api.steps import InvalidSourceException
23
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
24
+ from metadata.ingestion.source.database.lineage_source import LineageSource
25
+ from metadata.utils.logger import ingestion_logger
26
+
27
+ logger = ingestion_logger()
28
+
29
+
30
+ class GreenplumLineageSource(LineageSource):
31
+ """
32
+ Greenplum lineage source implements view lineage
33
+ """
34
+
35
+ @classmethod
36
+ def create(
37
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
38
+ ):
39
+ """Create class instance"""
40
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
41
+ connection: GreenplumConnection = config.serviceConnection.root.config
42
+ if not isinstance(connection, GreenplumConnection):
43
+ raise InvalidSourceException(
44
+ f"Expected GreenplumConnection, but got {connection}"
45
+ )
46
+ return cls(config, metadata)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.greenplum.metadata import GreenplumSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=GreenplumSource)
@@ -0,0 +1,46 @@
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
+ Hive lineage module
13
+ """
14
+ from typing import Optional
15
+
16
+ from metadata.generated.schema.entity.services.connections.database.hiveConnection import (
17
+ HiveConnection,
18
+ )
19
+ from metadata.generated.schema.metadataIngestion.workflow import (
20
+ Source as WorkflowSource,
21
+ )
22
+ from metadata.ingestion.api.steps import InvalidSourceException
23
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
24
+ from metadata.ingestion.source.database.lineage_source import LineageSource
25
+ from metadata.utils.logger import ingestion_logger
26
+
27
+ logger = ingestion_logger()
28
+
29
+
30
+ class HiveLineageSource(LineageSource):
31
+ """
32
+ Hive lineage source implements view lineage
33
+ """
34
+
35
+ @classmethod
36
+ def create(
37
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
38
+ ):
39
+ """Create class instance"""
40
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
41
+ connection: HiveConnection = config.serviceConnection.root.config
42
+ if not isinstance(connection, HiveConnection):
43
+ raise InvalidSourceException(
44
+ f"Expected HiveConnection, but got {connection}"
45
+ )
46
+ return cls(config, metadata)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.hive.metadata import HiveSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=HiveSource)
@@ -12,7 +12,7 @@
12
12
  Iceberg source methods.
13
13
  """
14
14
  import traceback
15
- from typing import Any, Iterable, Optional, Tuple, Union
15
+ from typing import Any, Iterable, Optional, Tuple
16
16
 
17
17
  import pyiceberg
18
18
  import pyiceberg.exceptions
@@ -21,12 +21,10 @@ from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequ
21
21
  from metadata.generated.schema.api.data.createDatabaseSchema import (
22
22
  CreateDatabaseSchemaRequest,
23
23
  )
24
- from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
25
24
  from metadata.generated.schema.api.data.createStoredProcedure import (
26
25
  CreateStoredProcedureRequest,
27
26
  )
28
27
  from metadata.generated.schema.api.data.createTable import CreateTableRequest
29
- from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
30
28
  from metadata.generated.schema.entity.data.database import Database
31
29
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
32
30
  from metadata.generated.schema.entity.data.table import Table, TableType
@@ -293,13 +291,6 @@ class IcebergSource(DatabaseServiceSource):
293
291
  """
294
292
  yield from []
295
293
 
296
- def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
297
- """
298
- From topology.
299
- Parses view definition to get lineage information
300
- """
301
- yield from []
302
-
303
294
  def get_stored_procedures(self) -> Iterable[Any]:
304
295
  """Not Implemented"""
305
296
 
@@ -309,11 +300,5 @@ class IcebergSource(DatabaseServiceSource):
309
300
  """Process the stored procedure information"""
310
301
  yield from []
311
302
 
312
- def yield_procedure_lineage_and_queries(
313
- self,
314
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
315
- """Extracts the lineage information from Stored Procedures"""
316
- yield from []
317
-
318
303
  def close(self):
319
304
  """There is no connection to close."""
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.iceberg.metadata import IcebergSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=IcebergSource)
@@ -0,0 +1,46 @@
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
+ Impala lineage module
13
+ """
14
+ from typing import Optional
15
+
16
+ from metadata.generated.schema.entity.services.connections.database.impalaConnection import (
17
+ ImpalaConnection,
18
+ )
19
+ from metadata.generated.schema.metadataIngestion.workflow import (
20
+ Source as WorkflowSource,
21
+ )
22
+ from metadata.ingestion.api.steps import InvalidSourceException
23
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
24
+ from metadata.ingestion.source.database.lineage_source import LineageSource
25
+ from metadata.utils.logger import ingestion_logger
26
+
27
+ logger = ingestion_logger()
28
+
29
+
30
+ class ImpalaLineageSource(LineageSource):
31
+ """
32
+ Impala lineage source implements view lineage
33
+ """
34
+
35
+ @classmethod
36
+ def create(
37
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
38
+ ):
39
+ """Create class instance"""
40
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
41
+ connection: ImpalaConnection = config.serviceConnection.root.config
42
+ if not isinstance(connection, ImpalaConnection):
43
+ raise InvalidSourceException(
44
+ f"Expected ImpalaConnection, but got {connection}"
45
+ )
46
+ return cls(config, metadata)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.impala.metadata import ImpalaSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=ImpalaSource)
@@ -36,7 +36,7 @@ from metadata.ingestion.models.topology import TopologyContextManager
36
36
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
37
37
  from metadata.utils import fqn
38
38
  from metadata.utils.logger import ingestion_logger
39
- from metadata.utils.time_utils import convert_timestamp_to_milliseconds
39
+ from metadata.utils.time_utils import datetime_to_timestamp
40
40
 
41
41
  logger = ingestion_logger()
42
42
 
@@ -104,10 +104,8 @@ class LifeCycleQueryMixin:
104
104
  life_cycle = LifeCycle(
105
105
  created=AccessDetails(
106
106
  timestamp=Timestamp(
107
- int(
108
- convert_timestamp_to_milliseconds(
109
- life_cycle_data.created_at.timestamp()
110
- )
107
+ datetime_to_timestamp(
108
+ life_cycle_data.created_at, milliseconds=True
111
109
  )
112
110
  )
113
111
  )
@@ -15,17 +15,22 @@ import csv
15
15
  import os
16
16
  import traceback
17
17
  from abc import ABC
18
- from typing import Iterable, Iterator, Union
18
+ from concurrent.futures import ThreadPoolExecutor, as_completed
19
+ from functools import partial
20
+ from typing import Callable, Iterable, Iterator, Union
19
21
 
20
22
  from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
21
23
  from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
22
24
  from metadata.generated.schema.type.basic import FullyQualifiedEntityName, SqlQuery
23
25
  from metadata.generated.schema.type.tableQuery import TableQuery
24
26
  from metadata.ingestion.api.models import Either
25
- from metadata.ingestion.lineage.models import ConnectionTypeDialectMapper
27
+ from metadata.ingestion.lineage.models import ConnectionTypeDialectMapper, Dialect
26
28
  from metadata.ingestion.lineage.sql_lineage import get_lineage_by_query
29
+ from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
27
30
  from metadata.ingestion.source.database.query_parser_source import QueryParserSource
31
+ from metadata.ingestion.source.models import TableView
28
32
  from metadata.utils import fqn
33
+ from metadata.utils.db_utils import get_view_lineage
29
34
  from metadata.utils.logger import ingestion_logger
30
35
 
31
36
  logger = ingestion_logger()
@@ -43,12 +48,14 @@ class LineageSource(QueryParserSource, ABC):
43
48
  - schema
44
49
  """
45
50
 
51
+ dialect: Dialect
52
+
46
53
  def yield_table_queries_from_logs(self) -> Iterator[TableQuery]:
47
54
  """
48
55
  Method to handle the usage from query logs
49
56
  """
50
57
  try:
51
- query_log_path = self.config.sourceConfig.config.queryLogFilePath
58
+ query_log_path = self.source_config.queryLogFilePath
52
59
  if os.path.isfile(query_log_path):
53
60
  file_paths = [query_log_path]
54
61
  elif os.path.isdir(query_log_path):
@@ -89,6 +96,28 @@ class LineageSource(QueryParserSource, ABC):
89
96
  )
90
97
  yield from self.yield_table_query()
91
98
 
99
+ def generate_lineage_in_thread(self, producer_fn: Callable, processor_fn: Callable):
100
+ with ThreadPoolExecutor(max_workers=self.source_config.threads) as executor:
101
+ futures = []
102
+
103
+ for produced_input in producer_fn():
104
+ futures.append(executor.submit(processor_fn, produced_input))
105
+
106
+ # Handle remaining futures after the loop
107
+ for future in as_completed(
108
+ futures, timeout=self.source_config.parsingTimeoutLimit
109
+ ):
110
+ try:
111
+ results = future.result(
112
+ timeout=self.source_config.parsingTimeoutLimit
113
+ )
114
+ yield from results
115
+ except Exception as exc:
116
+ logger.debug(traceback.format_exc())
117
+ logger.warning(
118
+ f"Error processing result for {produced_input}: {exc}"
119
+ )
120
+
92
121
  def yield_table_query(self) -> Iterator[TableQuery]:
93
122
  """
94
123
  Given an engine, iterate over the query results to
@@ -128,40 +157,103 @@ class LineageSource(QueryParserSource, ABC):
128
157
  )
129
158
  return fqn.get_query_checksum(table_query.query) in checksums or {}
130
159
 
131
- def _iter(
132
- self, *_, **__
160
+ def query_lineage_generator(
161
+ self, table_query: TableQuery
162
+ ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
163
+ if not self._query_already_processed(table_query):
164
+ lineages: Iterable[Either[AddLineageRequest]] = get_lineage_by_query(
165
+ self.metadata,
166
+ query=table_query.query,
167
+ service_name=table_query.serviceName,
168
+ database_name=table_query.databaseName,
169
+ schema_name=table_query.databaseSchema,
170
+ dialect=self.dialect,
171
+ timeout_seconds=self.source_config.parsingTimeoutLimit,
172
+ )
173
+
174
+ for lineage_request in lineages or []:
175
+ yield lineage_request
176
+
177
+ # If we identified lineage properly, ingest the original query
178
+ if lineage_request.right:
179
+ yield Either(
180
+ right=CreateQueryRequest(
181
+ query=SqlQuery(table_query.query),
182
+ query_type=table_query.query_type,
183
+ duration=table_query.duration,
184
+ processedLineage=True,
185
+ service=FullyQualifiedEntityName(self.config.serviceName),
186
+ )
187
+ )
188
+
189
+ def yield_query_lineage(
190
+ self,
133
191
  ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
134
192
  """
135
193
  Based on the query logs, prepare the lineage
136
194
  and send it to the sink
137
195
  """
138
196
  connection_type = str(self.service_connection.type.value)
139
- dialect = ConnectionTypeDialectMapper.dialect_of(connection_type)
140
- for table_query in self.get_table_query():
141
- if not self._query_already_processed(table_query):
142
- lineages: Iterable[Either[AddLineageRequest]] = get_lineage_by_query(
143
- self.metadata,
144
- query=table_query.query,
145
- service_name=table_query.serviceName,
146
- database_name=table_query.databaseName,
147
- schema_name=table_query.databaseSchema,
148
- dialect=dialect,
149
- timeout_seconds=self.source_config.parsingTimeoutLimit,
150
- )
197
+ self.dialect = ConnectionTypeDialectMapper.dialect_of(connection_type)
198
+ producer_fn = self.get_table_query
199
+ processor_fn = self.query_lineage_generator
200
+ yield from self.generate_lineage_in_thread(producer_fn, processor_fn)
151
201
 
152
- for lineage_request in lineages or []:
153
- yield lineage_request
154
-
155
- # If we identified lineage properly, ingest the original query
156
- if lineage_request.right:
157
- yield Either(
158
- right=CreateQueryRequest(
159
- query=SqlQuery(table_query.query),
160
- query_type=table_query.query_type,
161
- duration=table_query.duration,
162
- processedLineage=True,
163
- service=FullyQualifiedEntityName(
164
- self.config.serviceName
165
- ),
166
- )
202
+ def view_lineage_generator(
203
+ self, view: TableView
204
+ ) -> Iterable[Either[AddLineageRequest]]:
205
+ try:
206
+ for lineage in get_view_lineage(
207
+ view=view,
208
+ metadata=self.metadata,
209
+ service_name=self.config.serviceName,
210
+ connection_type=self.service_connection.type.value,
211
+ timeout_seconds=self.source_config.parsingTimeoutLimit,
212
+ ):
213
+ if lineage.right is not None:
214
+ yield Either(
215
+ right=OMetaLineageRequest(
216
+ lineage_request=lineage.right,
217
+ override_lineage=self.source_config.overrideViewLineage,
167
218
  )
219
+ )
220
+ else:
221
+ yield lineage
222
+ except Exception as exc:
223
+ logger.debug(traceback.format_exc())
224
+ logger.warning(f"Error processing view {view}: {exc}")
225
+
226
+ def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
227
+ logger.info("Processing View Lineage")
228
+ producer_fn = partial(self.metadata.yield_es_view_def, self.config.serviceName)
229
+ processor_fn = self.view_lineage_generator
230
+ yield from self.generate_lineage_in_thread(producer_fn, processor_fn)
231
+
232
+ def yield_procedure_lineage(
233
+ self,
234
+ ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
235
+ """
236
+ By default stored procedure lineage is not supported.
237
+ """
238
+ logger.info(
239
+ f"Processing Procedure Lineage not supported for {str(self.service_connection.type.value)}"
240
+ )
241
+
242
+ def _iter(
243
+ self, *_, **__
244
+ ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
245
+ """
246
+ Based on the query logs, prepare the lineage
247
+ and send it to the sink
248
+ """
249
+ if self.source_config.processViewLineage:
250
+ yield from self.yield_view_lineage() or []
251
+ if self.source_config.processStoredProcedureLineage:
252
+ yield from self.yield_procedure_lineage() or []
253
+ if self.source_config.processQueryLineage:
254
+ if hasattr(self.service_connection, "supportsLineageExtraction"):
255
+ yield from self.yield_query_lineage() or []
256
+ else:
257
+ logger.warning(
258
+ f"Lineage extraction is not supported for {str(self.service_connection.type.value)} connection"
259
+ )
@@ -0,0 +1,46 @@
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
+ Mariadb lineage module
13
+ """
14
+ from typing import Optional
15
+
16
+ from metadata.generated.schema.entity.services.connections.database.mariaDBConnection import (
17
+ MariadbConnection,
18
+ )
19
+ from metadata.generated.schema.metadataIngestion.workflow import (
20
+ Source as WorkflowSource,
21
+ )
22
+ from metadata.ingestion.api.steps import InvalidSourceException
23
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
24
+ from metadata.ingestion.source.database.lineage_source import LineageSource
25
+ from metadata.utils.logger import ingestion_logger
26
+
27
+ logger = ingestion_logger()
28
+
29
+
30
+ class MariadbLineageSource(LineageSource):
31
+ """
32
+ Mariadb lineage source implements view lineage
33
+ """
34
+
35
+ @classmethod
36
+ def create(
37
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
38
+ ):
39
+ """Create class instance"""
40
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
41
+ connection: MariadbConnection = config.serviceConnection.root.config
42
+ if not isinstance(connection, MariadbConnection):
43
+ raise InvalidSourceException(
44
+ f"Expected MariadbConnection, but got {connection}"
45
+ )
46
+ return cls(config, metadata)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.mariadb.metadata import MariadbSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=MariadbSource)
@@ -0,0 +1,10 @@
1
+ from metadata.ingestion.source.database.mongodb.metadata import MongodbSource
2
+ from metadata.profiler.interface.nosql.profiler_interface import NoSQLProfilerInterface
3
+ from metadata.sampler.nosql.sampler import NoSQLSampler
4
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
5
+
6
+ ServiceSpec = DefaultDatabaseSpec(
7
+ metadata_source_class=MongodbSource,
8
+ profiler_class=NoSQLProfilerInterface,
9
+ sampler_class=NoSQLSampler,
10
+ )
@@ -11,21 +11,39 @@
11
11
  """
12
12
  MSSQL lineage module
13
13
  """
14
+ import traceback
14
15
  from datetime import datetime
16
+ from typing import Dict, List
15
17
 
18
+ from metadata.generated.schema.entity.services.ingestionPipelines.status import (
19
+ StackTraceError,
20
+ )
16
21
  from metadata.ingestion.source.database.lineage_source import LineageSource
17
22
  from metadata.ingestion.source.database.mssql.constants import (
18
23
  DEFAULT_DATETIME_FORMAT,
19
24
  MSSQL_DATEFORMAT_DATETIME_MAP,
20
25
  )
21
- from metadata.ingestion.source.database.mssql.queries import MSSQL_SQL_STATEMENT
26
+ from metadata.ingestion.source.database.mssql.queries import (
27
+ MSSQL_GET_STORED_PROCEDURE_QUERIES,
28
+ MSSQL_SQL_STATEMENT,
29
+ )
22
30
  from metadata.ingestion.source.database.mssql.query_parser import MssqlQueryParserSource
23
31
  from metadata.ingestion.source.database.mssql.utils import (
24
32
  get_sqlalchemy_engine_dateformat,
25
33
  )
34
+ from metadata.ingestion.source.database.stored_procedures_mixin import (
35
+ QueryByProcedure,
36
+ StoredProcedureLineageMixin,
37
+ )
38
+ from metadata.utils.helpers import get_start_and_end
39
+ from metadata.utils.logger import ingestion_logger
40
+
41
+ logger = ingestion_logger()
26
42
 
27
43
 
28
- class MssqlLineageSource(MssqlQueryParserSource, LineageSource):
44
+ class MssqlLineageSource(
45
+ MssqlQueryParserSource, StoredProcedureLineageMixin, LineageSource
46
+ ):
29
47
 
30
48
  sql_stmt = MSSQL_SQL_STATEMENT
31
49
 
@@ -55,3 +73,34 @@ class MssqlLineageSource(MssqlQueryParserSource, LineageSource):
55
73
  filters=self.get_filters(),
56
74
  result_limit=self.source_config.resultLimit,
57
75
  )
76
+
77
+ def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
78
+ """
79
+ Return the dictionary associating stored procedures to the
80
+ queries they triggered
81
+ """
82
+ start, _ = get_start_and_end(self.source_config.queryLogDuration)
83
+ server_date_format = get_sqlalchemy_engine_dateformat(self.engine)
84
+ current_datetime_format = MSSQL_DATEFORMAT_DATETIME_MAP.get(
85
+ server_date_format, DEFAULT_DATETIME_FORMAT
86
+ )
87
+ start = start.strftime(current_datetime_format)
88
+ query = MSSQL_GET_STORED_PROCEDURE_QUERIES.format(
89
+ start_date=start,
90
+ )
91
+ try:
92
+ queries_dict = self.procedure_queries_dict(
93
+ query=query,
94
+ )
95
+ except Exception as ex: # pylint: disable=broad-except
96
+ logger.debug(f"Error runnning query:\n{query}")
97
+ self.status.failed(
98
+ StackTraceError(
99
+ name="Stored Procedure",
100
+ error=f"Error trying to get stored procedure queries: {ex}",
101
+ stackTrace=traceback.format_exc(),
102
+ )
103
+ )
104
+ return {}
105
+
106
+ return queries_dict
@@ -10,7 +10,7 @@
10
10
  # limitations under the License.
11
11
  """MSSQL source module"""
12
12
  import traceback
13
- from typing import Dict, Iterable, List, Optional
13
+ from typing import Iterable, Optional
14
14
 
15
15
  from sqlalchemy.dialects.mssql.base import MSDialect, ischema_names
16
16
  from sqlalchemy.engine.reflection import Inspector
@@ -35,24 +35,18 @@ from metadata.ingestion.api.models import Either
35
35
  from metadata.ingestion.api.steps import InvalidSourceException
36
36
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
37
37
  from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
38
- from metadata.ingestion.source.database.mssql.constants import (
39
- DEFAULT_DATETIME_FORMAT,
40
- MSSQL_DATEFORMAT_DATETIME_MAP,
41
- )
42
38
  from metadata.ingestion.source.database.mssql.models import (
43
39
  STORED_PROC_LANGUAGE_MAP,
44
40
  MssqlStoredProcedure,
45
41
  )
46
42
  from metadata.ingestion.source.database.mssql.queries import (
47
43
  MSSQL_GET_DATABASE,
48
- MSSQL_GET_STORED_PROCEDURE_QUERIES,
49
44
  MSSQL_GET_STORED_PROCEDURES,
50
45
  )
51
46
  from metadata.ingestion.source.database.mssql.utils import (
52
47
  get_columns,
53
48
  get_foreign_keys,
54
49
  get_pk_constraint,
55
- get_sqlalchemy_engine_dateformat,
56
50
  get_table_comment,
57
51
  get_table_names,
58
52
  get_unique_constraints,
@@ -60,13 +54,8 @@ from metadata.ingestion.source.database.mssql.utils import (
60
54
  get_view_names,
61
55
  )
62
56
  from metadata.ingestion.source.database.multi_db_source import MultiDBSource
63
- from metadata.ingestion.source.database.stored_procedures_mixin import (
64
- QueryByProcedure,
65
- StoredProcedureMixin,
66
- )
67
57
  from metadata.utils import fqn
68
58
  from metadata.utils.filters import filter_by_database
69
- from metadata.utils.helpers import get_start_and_end
70
59
  from metadata.utils.logger import ingestion_logger
71
60
  from metadata.utils.sqa_utils import update_mssql_ischema_names
72
61
  from metadata.utils.sqlalchemy_utils import (
@@ -99,7 +88,7 @@ Inspector.get_all_table_ddls = get_all_table_ddls
99
88
  Inspector.get_table_ddl = get_table_ddl
100
89
 
101
90
 
102
- class MssqlSource(StoredProcedureMixin, CommonDbSourceService, MultiDBSource):
91
+ class MssqlSource(CommonDbSourceService, MultiDBSource):
103
92
  """
104
93
  Implements the necessary methods to extract
105
94
  Database metadata from MSSQL Source
@@ -213,34 +202,3 @@ class MssqlSource(StoredProcedureMixin, CommonDbSourceService, MultiDBSource):
213
202
  stackTrace=traceback.format_exc(),
214
203
  )
215
204
  )
216
-
217
- def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
218
- """
219
- Return the dictionary associating stored procedures to the
220
- queries they triggered
221
- """
222
- start, _ = get_start_and_end(self.source_config.queryLogDuration)
223
- server_date_format = get_sqlalchemy_engine_dateformat(self.engine)
224
- current_datetime_format = MSSQL_DATEFORMAT_DATETIME_MAP.get(
225
- server_date_format, DEFAULT_DATETIME_FORMAT
226
- )
227
- start = start.strftime(current_datetime_format)
228
- query = MSSQL_GET_STORED_PROCEDURE_QUERIES.format(
229
- start_date=start,
230
- )
231
- try:
232
- queries_dict = self.procedure_queries_dict(
233
- query=query,
234
- )
235
- except Exception as ex: # pylint: disable=broad-except
236
- logger.debug(f"Error runnning query:\n{query}")
237
- self.status.failed(
238
- StackTraceError(
239
- name="Stored Procedure",
240
- error=f"Error trying to get stored procedure queries: {ex}",
241
- stackTrace=traceback.format_exc(),
242
- )
243
- )
244
- return {}
245
-
246
- return queries_dict