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
@@ -13,6 +13,7 @@
13
13
  DBT source methods.
14
14
  """
15
15
  import traceback
16
+ from copy import deepcopy
16
17
  from datetime import datetime
17
18
  from typing import Any, Iterable, List, Optional, Union
18
19
 
@@ -288,10 +289,7 @@ class DbtSource(DbtServiceSource):
288
289
  for tag_name in dbt_tags_list
289
290
  ]
290
291
  yield from get_ometa_tag_and_classification(
291
- tags=[
292
- tag_label.split(fqn.FQN_SEPARATOR)[1]
293
- for tag_label in dbt_tag_labels
294
- ],
292
+ tags=[fqn.split(tag_label)[1] for tag_label in dbt_tag_labels],
295
293
  classification_name=self.tag_classification_name,
296
294
  tag_description="dbt Tags",
297
295
  classification_description="dbt classification",
@@ -327,7 +325,41 @@ class DbtSource(DbtServiceSource):
327
325
  None,
328
326
  )
329
327
 
330
- # pylint: disable=too-many-locals, too-many-branches
328
+ def _add_dbt_freshness_test_from_sources(
329
+ self, key: str, manifest_node, manifest_entities, dbt_objects: DbtObjects
330
+ ):
331
+ # in dbt manifest sources node name is table/view name (not test name like with test nodes)
332
+ # so in order for the test creation to be named precisely I am amending manifest node name within it's deepcopy
333
+ manifest_node_new = deepcopy(manifest_node)
334
+ manifest_node_new.name = manifest_node_new.name + "_freshness"
335
+
336
+ freshness_test_result = next(
337
+ (item for item in dbt_objects.dbt_sources.results if item.unique_id == key),
338
+ None,
339
+ )
340
+
341
+ if freshness_test_result:
342
+ self.context.get().dbt_tests[key + "_freshness"] = {
343
+ DbtCommonEnum.MANIFEST_NODE.value: manifest_node_new
344
+ }
345
+ self.context.get().dbt_tests[key + "_freshness"][
346
+ DbtCommonEnum.UPSTREAM.value
347
+ ] = self.parse_upstream_nodes(manifest_entities, manifest_node)
348
+ self.context.get().dbt_tests[key + "_freshness"][
349
+ DbtCommonEnum.RESULTS.value
350
+ ] = freshness_test_result
351
+
352
+ def add_dbt_sources(
353
+ self, key: str, manifest_node, manifest_entities, dbt_objects: DbtObjects
354
+ ) -> None:
355
+ """
356
+ Method to append dbt test cases based on sources file for later processing
357
+ """
358
+ self._add_dbt_freshness_test_from_sources(
359
+ key, manifest_node, manifest_entities, dbt_objects
360
+ )
361
+
362
+ # pylint: disable=too-many-locals, too-many-branches, too-many-statements
331
363
  def yield_data_models(
332
364
  self, dbt_objects: DbtObjects
333
365
  ) -> Iterable[Either[DataModelLink]]:
@@ -379,6 +411,17 @@ class DbtSource(DbtServiceSource):
379
411
  )
380
412
  continue
381
413
 
414
+ if (
415
+ dbt_objects.dbt_sources
416
+ and resource_type == SkipResourceTypeEnum.SOURCE.value
417
+ ):
418
+ self.add_dbt_sources(
419
+ key,
420
+ manifest_node=manifest_node,
421
+ manifest_entities=manifest_entities,
422
+ dbt_objects=dbt_objects,
423
+ )
424
+
382
425
  # Skip the ephemeral nodes since it is not materialized
383
426
  if check_ephemeral_node(manifest_node):
384
427
  logger.debug(f"Skipping ephemeral DBT node: {key}.")
@@ -474,7 +517,7 @@ class DbtSource(DbtServiceSource):
474
517
  manifest_node=manifest_node,
475
518
  catalog_node=catalog_node,
476
519
  ),
477
- tags=dbt_table_tags_list or None,
520
+ tags=dbt_table_tags_list or [],
478
521
  ),
479
522
  )
480
523
  yield Either(right=data_model_link)
@@ -552,6 +595,29 @@ class DbtSource(DbtServiceSource):
552
595
  f"Failed to parse the DBT node {node} to get upstream nodes: {exc}"
553
596
  )
554
597
  continue
598
+
599
+ if dbt_node.resource_type == SkipResourceTypeEnum.SOURCE.value:
600
+ parent_fqn = fqn.build(
601
+ self.metadata,
602
+ entity_type=Table,
603
+ service_name="*",
604
+ database_name=get_corrected_name(dbt_node.database),
605
+ schema_name=get_corrected_name(dbt_node.schema_),
606
+ table_name=dbt_node.name,
607
+ )
608
+
609
+ # check if the parent table exists in OM before adding it to the upstream list
610
+ parent_table_entity: Optional[
611
+ Union[Table, List[Table]]
612
+ ] = get_entity_from_es_result(
613
+ entity_list=self.metadata.es_search_from_fqn(
614
+ entity_type=Table, fqn_search_string=parent_fqn
615
+ ),
616
+ fetch_multiple_entities=False,
617
+ )
618
+ if parent_table_entity:
619
+ upstream_nodes.append(parent_fqn)
620
+
555
621
  return upstream_nodes
556
622
 
557
623
  def parse_data_model_columns(
@@ -620,7 +686,7 @@ class DbtSource(DbtServiceSource):
620
686
  ordinalPosition=catalog_column.index
621
687
  if catalog_column
622
688
  else None,
623
- tags=dbt_column_tag_list or None,
689
+ tags=dbt_column_tag_list or [],
624
690
  )
625
691
  )
626
692
  logger.debug(f"Successfully processed DBT column: {key}")
@@ -20,12 +20,14 @@ from pydantic import BaseModel
20
20
  class DbtFiles(BaseModel):
21
21
  dbt_catalog: Optional[dict] = None
22
22
  dbt_manifest: dict
23
+ dbt_sources: Optional[dict] = None
23
24
  dbt_run_results: Optional[List[dict]] = None
24
25
 
25
26
 
26
27
  class DbtObjects(BaseModel):
27
28
  dbt_catalog: Optional[Any] = None
28
29
  dbt_manifest: Any
30
+ dbt_sources: Optional[Any] = None
29
31
  dbt_run_results: Optional[List[Any]] = None
30
32
 
31
33
 
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.dbt.metadata import DbtSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=DbtSource)
@@ -12,18 +12,16 @@
12
12
  Deltalake 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
  from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
18
18
  from metadata.generated.schema.api.data.createDatabaseSchema import (
19
19
  CreateDatabaseSchemaRequest,
20
20
  )
21
- from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
22
21
  from metadata.generated.schema.api.data.createStoredProcedure import (
23
22
  CreateStoredProcedureRequest,
24
23
  )
25
24
  from metadata.generated.schema.api.data.createTable import CreateTableRequest
26
- from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
27
25
  from metadata.generated.schema.entity.data.database import Database
28
26
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
29
27
  from metadata.generated.schema.entity.data.table import Table, TablePartition, TableType
@@ -283,9 +281,6 @@ class DeltalakeSource(DatabaseServiceSource):
283
281
  def prepare(self):
284
282
  """Nothing to prepare"""
285
283
 
286
- def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
287
- yield from []
288
-
289
284
  def yield_tag(
290
285
  self, schema_name: str
291
286
  ) -> Iterable[Either[OMetaTagAndClassification]]:
@@ -302,11 +297,5 @@ class DeltalakeSource(DatabaseServiceSource):
302
297
  def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
303
298
  """Not Implemented"""
304
299
 
305
- def yield_procedure_lineage_and_queries(
306
- self,
307
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
308
- """Not Implemented"""
309
- yield from []
310
-
311
300
  def close(self):
312
301
  """No client to close"""
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.deltalake.metadata import DeltalakeSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=DeltalakeSource)
@@ -14,18 +14,16 @@ Domo Database source to extract metadata
14
14
  """
15
15
 
16
16
  import traceback
17
- from typing import Any, Iterable, Optional, Tuple, Union
17
+ from typing import Any, Iterable, Optional, Tuple
18
18
 
19
19
  from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
20
20
  from metadata.generated.schema.api.data.createDatabaseSchema import (
21
21
  CreateDatabaseSchemaRequest,
22
22
  )
23
- from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
24
23
  from metadata.generated.schema.api.data.createStoredProcedure import (
25
24
  CreateStoredProcedureRequest,
26
25
  )
27
26
  from metadata.generated.schema.api.data.createTable import CreateTableRequest
28
- from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
29
27
  from metadata.generated.schema.entity.data.database import Database
30
28
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
31
29
  from metadata.generated.schema.entity.data.table import (
@@ -294,15 +292,6 @@ class DomodatabaseSource(DatabaseServiceSource):
294
292
  def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
295
293
  """Not Implemented"""
296
294
 
297
- def yield_procedure_lineage_and_queries(
298
- self,
299
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
300
- """Not Implemented"""
301
- yield from []
302
-
303
- def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
304
- yield from []
305
-
306
295
  def get_source_url(
307
296
  self,
308
297
  table_name: Optional[str] = None,
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.domodatabase.metadata import DomodatabaseSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=DomodatabaseSource)
@@ -8,7 +8,7 @@
8
8
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
9
  # See the License for the specific language governing permissions and
10
10
  # limitations under the License.
11
- """Mysql source module"""
11
+ """Doris source module"""
12
12
  import re
13
13
  import traceback
14
14
  from typing import Dict, Iterable, List, Optional, Tuple, cast
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.doris.metadata import DorisSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=DorisSource)
@@ -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
+ Druid lineage module
13
+ """
14
+ from typing import Optional
15
+
16
+ from metadata.generated.schema.entity.services.connections.database.druidConnection import (
17
+ DruidConnection,
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 DruidLineageSource(LineageSource):
31
+ """
32
+ Druid 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: DruidConnection = config.serviceConnection.root.config
42
+ if not isinstance(connection, DruidConnection):
43
+ raise InvalidSourceException(
44
+ f"Expected DruidConnection, but got {connection}"
45
+ )
46
+ return cls(config, metadata)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.druid.metadata import DruidSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=DruidSource)
@@ -0,0 +1,10 @@
1
+ from metadata.ingestion.source.database.dynamodb.metadata import DynamodbSource
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=DynamodbSource,
8
+ profiler_class=NoSQLProfilerInterface,
9
+ sampler_class=NoSQLSampler,
10
+ )
File without changes
@@ -0,0 +1,87 @@
1
+ from typing import Optional
2
+ from urllib.parse import quote_plus
3
+
4
+ from pydantic import SecretStr
5
+ from sqlalchemy.engine import Engine
6
+
7
+ from metadata.generated.schema.entity.automations.workflow import (
8
+ Workflow as AutomationWorkflow,
9
+ )
10
+ from metadata.generated.schema.entity.services.connections.database.exasolConnection import (
11
+ ExasolConnection,
12
+ )
13
+ from metadata.ingestion.connections.builders import (
14
+ create_generic_db_connection,
15
+ get_connection_args_common,
16
+ )
17
+ from metadata.ingestion.connections.test_connections import test_query
18
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
19
+ from metadata.utils.logger import ingestion_logger
20
+
21
+ logger = ingestion_logger()
22
+
23
+
24
+ def get_connection_url(connection: ExasolConnection) -> str:
25
+ """
26
+ Common method for building the source connection urls
27
+ """
28
+
29
+ url = f"{connection.scheme.value}://"
30
+
31
+ if connection.username:
32
+ url += f"{quote_plus(connection.username)}"
33
+ connection.password = (
34
+ SecretStr("") if not connection.password else connection.password
35
+ )
36
+ url += (
37
+ f":{quote_plus(connection.password.get_secret_value())}"
38
+ if connection
39
+ else ""
40
+ )
41
+ url += "@"
42
+
43
+ url += connection.hostPort
44
+
45
+ if hasattr(connection, "databaseSchema"):
46
+ url += f"/{connection.databaseSchema}" if connection.databaseSchema else ""
47
+
48
+ tls_settings = {
49
+ "validate-certificate": {},
50
+ "ignore-certificate": {"SSLCertificate": "SSL_VERIFY_NONE"},
51
+ "disable-tls": {"SSLCertificate": "SSL_VERIFY_NONE", "ENCRYPTION": "no"},
52
+ }
53
+ options = tls_settings[connection.tls.value]
54
+ if options:
55
+ if (hasattr(connection, "database") and not connection.database) or (
56
+ hasattr(connection, "databaseSchema") and not connection.databaseSchema
57
+ ):
58
+ url += "/"
59
+ params = "&".join(
60
+ f"{key}={quote_plus(value)}" for (key, value) in options.items() if value
61
+ )
62
+ url = f"{url}?{params}"
63
+ return url
64
+
65
+
66
+ def get_connection(connection: ExasolConnection) -> Engine:
67
+ """
68
+ Create connection
69
+ """
70
+ return create_generic_db_connection(
71
+ connection=connection,
72
+ get_connection_url_fn=get_connection_url,
73
+ get_connection_args_fn=get_connection_args_common,
74
+ )
75
+
76
+
77
+ def test_connection(
78
+ metadata: OpenMetadata,
79
+ engine: Engine,
80
+ service_connection: ExasolConnection,
81
+ automation_workflow: Optional[AutomationWorkflow] = None,
82
+ ) -> None:
83
+ """
84
+ Test connection. This can be executed either as part
85
+ of a metadata workflow or during an Automation Workflow
86
+ """
87
+ test_query(engine, "SELECT 1;")
@@ -0,0 +1,27 @@
1
+ from typing import Optional, cast
2
+
3
+ from metadata.generated.schema.entity.services.connections.database.exasolConnection import (
4
+ ExasolConnection,
5
+ )
6
+ from metadata.generated.schema.metadataIngestion.workflow import (
7
+ Source as WorkflowSource,
8
+ )
9
+ from metadata.ingestion.api.steps import InvalidSourceException
10
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
11
+ from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
12
+
13
+
14
+ class ExasolSource(CommonDbSourceService):
15
+ @classmethod
16
+ def create(
17
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
18
+ ):
19
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
20
+ if config.serviceConnection is None:
21
+ raise InvalidSourceException("Missing service connection")
22
+ connection = cast(ExasolConnection, config.serviceConnection.root.config)
23
+ if not isinstance(connection, ExasolConnection):
24
+ raise InvalidSourceException(
25
+ f"Expected ExasolConnection, but got {connection}"
26
+ )
27
+ return cls(config, metadata)
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.exasol.metadata import ExasolSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=ExasolSource)
@@ -12,21 +12,24 @@
12
12
  Glue 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
  from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
18
18
  from metadata.generated.schema.api.data.createDatabaseSchema import (
19
19
  CreateDatabaseSchemaRequest,
20
20
  )
21
- from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
22
21
  from metadata.generated.schema.api.data.createStoredProcedure import (
23
22
  CreateStoredProcedureRequest,
24
23
  )
25
24
  from metadata.generated.schema.api.data.createTable import CreateTableRequest
26
- from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
27
25
  from metadata.generated.schema.entity.data.database import Database
28
26
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
29
- from metadata.generated.schema.entity.data.table import Column, Table, TableType
27
+ from metadata.generated.schema.entity.data.table import (
28
+ Column,
29
+ FileFormat,
30
+ Table,
31
+ TableType,
32
+ )
30
33
  from metadata.generated.schema.entity.services.connections.database.glueConnection import (
31
34
  GlueConnection,
32
35
  )
@@ -39,7 +42,11 @@ from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline
39
42
  from metadata.generated.schema.metadataIngestion.workflow import (
40
43
  Source as WorkflowSource,
41
44
  )
42
- from metadata.generated.schema.type.basic import EntityName, FullyQualifiedEntityName
45
+ from metadata.generated.schema.type.basic import (
46
+ EntityName,
47
+ FullyQualifiedEntityName,
48
+ Markdown,
49
+ )
43
50
  from metadata.ingestion.api.models import Either
44
51
  from metadata.ingestion.api.steps import InvalidSourceException
45
52
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
@@ -48,6 +55,9 @@ from metadata.ingestion.source.connections import get_connection
48
55
  from metadata.ingestion.source.database.column_helpers import truncate_column_name
49
56
  from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser
50
57
  from metadata.ingestion.source.database.database_service import DatabaseServiceSource
58
+ from metadata.ingestion.source.database.external_table_lineage_mixin import (
59
+ ExternalTableLineageMixin,
60
+ )
51
61
  from metadata.ingestion.source.database.glue.models import Column as GlueColumn
52
62
  from metadata.ingestion.source.database.glue.models import (
53
63
  DatabasePage,
@@ -62,7 +72,7 @@ from metadata.utils.logger import ingestion_logger
62
72
  logger = ingestion_logger()
63
73
 
64
74
 
65
- class GlueSource(DatabaseServiceSource):
75
+ class GlueSource(ExternalTableLineageMixin, DatabaseServiceSource):
66
76
  """
67
77
  Implements the necessary methods to extract
68
78
  Database metadata from Glue Source
@@ -79,6 +89,8 @@ class GlueSource(DatabaseServiceSource):
79
89
  self.glue = get_connection(self.service_connection)
80
90
 
81
91
  self.connection_obj = self.glue
92
+ self.schema_description_map = {}
93
+ self.external_location_map = {}
82
94
  self.test_connection()
83
95
 
84
96
  @classmethod
@@ -191,6 +203,10 @@ class GlueSource(DatabaseServiceSource):
191
203
  ):
192
204
  self.status.filter(schema_fqn, "Schema Filtered Out")
193
205
  continue
206
+ if schema.Description:
207
+ self.schema_description_map[schema.Name] = Markdown(
208
+ schema.Description
209
+ )
194
210
  yield schema.Name
195
211
  except Exception as exc:
196
212
  self.status.failed(
@@ -211,6 +227,7 @@ class GlueSource(DatabaseServiceSource):
211
227
  yield Either(
212
228
  right=CreateDatabaseSchemaRequest(
213
229
  name=EntityName(schema_name),
230
+ description=self.schema_description_map.get(schema_name),
214
231
  database=FullyQualifiedEntityName(
215
232
  fqn.build(
216
233
  metadata=self.metadata,
@@ -295,9 +312,16 @@ class GlueSource(DatabaseServiceSource):
295
312
  table_name, table_type = table_name_and_type
296
313
  table = self.context.get().table_data
297
314
  table_constraints = None
315
+ storage_descriptor = table.StorageDescriptor
316
+ database_name = self.context.get().database
317
+ schema_name = self.context.get().database_schema
318
+ if storage_descriptor.Location:
319
+ # s3a doesn't occur as a path in containers, so it needs to be replaced for lineage to work
320
+ self.external_location_map[
321
+ (database_name, schema_name, table_name)
322
+ ] = storage_descriptor.Location.replace("s3a://", "s3://")
298
323
  try:
299
- columns = self.get_columns(table.StorageDescriptor)
300
-
324
+ columns = self.get_columns(storage_descriptor)
301
325
  table_request = CreateTableRequest(
302
326
  name=EntityName(table_name),
303
327
  tableType=table_type,
@@ -309,8 +333,8 @@ class GlueSource(DatabaseServiceSource):
309
333
  metadata=self.metadata,
310
334
  entity_type=DatabaseSchema,
311
335
  service_name=self.context.get().database_service,
312
- database_name=self.context.get().database,
313
- schema_name=self.context.get().database_schema,
336
+ database_name=database_name,
337
+ schema_name=schema_name,
314
338
  )
315
339
  ),
316
340
  sourceUrl=self.get_source_url(
@@ -318,6 +342,8 @@ class GlueSource(DatabaseServiceSource):
318
342
  schema_name=self.context.get().database_schema,
319
343
  database_name=self.context.get().database,
320
344
  ),
345
+ fileFormat=self.get_format(storage_descriptor),
346
+ locationPath=storage_descriptor.Location,
321
347
  )
322
348
  yield Either(right=table_request)
323
349
  self.register_record(table_request=table_request)
@@ -360,12 +386,22 @@ class GlueSource(DatabaseServiceSource):
360
386
  for column in self.context.get().table_data.PartitionKeys:
361
387
  yield self._get_column_object(column)
362
388
 
389
+ @classmethod
390
+ def get_format(cls, storage: StorageDetails) -> Optional[FileFormat]:
391
+ library = storage.SerdeInfo.SerializationLibrary
392
+ if library is None:
393
+ return None
394
+ if library.endswith(".LazySimpleSerDe"):
395
+ return (
396
+ FileFormat.tsv
397
+ if storage.SerdeInfo.Parameters.get("serialization.format") == "\t"
398
+ else FileFormat.csv
399
+ )
400
+ return next((fmt for fmt in FileFormat if fmt.value in library.lower()), None)
401
+
363
402
  def standardize_table_name(self, _: str, table: str) -> str:
364
403
  return table[:128]
365
404
 
366
- def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
367
- yield from []
368
-
369
405
  def yield_tag(
370
406
  self, schema_name: str
371
407
  ) -> Iterable[Either[OMetaTagAndClassification]]:
@@ -382,12 +418,6 @@ class GlueSource(DatabaseServiceSource):
382
418
  def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
383
419
  """Not Implemented"""
384
420
 
385
- def yield_procedure_lineage_and_queries(
386
- self,
387
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
388
- """Not Implemented"""
389
- yield from []
390
-
391
421
  def get_source_url(
392
422
  self,
393
423
  database_name: Optional[str],
@@ -20,6 +20,7 @@ from pydantic import BaseModel
20
20
  class GlueSchema(BaseModel):
21
21
  CatalogId: Optional[str] = None
22
22
  Name: str
23
+ Description: Optional[str] = None
23
24
 
24
25
 
25
26
  class DatabasePage(BaseModel):
@@ -36,8 +37,15 @@ class Column(BaseModel):
36
37
  Comment: Optional[str] = None
37
38
 
38
39
 
40
+ class SerializationDetails(BaseModel):
41
+ SerializationLibrary: Optional[str] = None
42
+ Parameters: Optional[dict] = {}
43
+
44
+
39
45
  class StorageDetails(BaseModel):
40
46
  Columns: Optional[List[Column]] = []
47
+ Location: Optional[str] = None
48
+ SerdeInfo: Optional[SerializationDetails] = SerializationDetails()
41
49
 
42
50
 
43
51
  class GlueTable(BaseModel):
@@ -0,0 +1,4 @@
1
+ from metadata.ingestion.source.database.glue.metadata import GlueSource
2
+ from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
+
4
+ ServiceSpec = DefaultDatabaseSpec(metadata_source_class=GlueSource)