openmetadata-ingestion 1.7.5.3__py3-none-any.whl → 1.8.1.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 (805) hide show
  1. _openmetadata_testutils/helpers/login_user.py +22 -0
  2. metadata/__init__.py +31 -0
  3. metadata/automations/runner.py +24 -14
  4. metadata/cli/ingest_dbt.py +1 -1
  5. metadata/data_quality/processor/test_case_runner.py +2 -11
  6. metadata/data_quality/source/test_suite.py +3 -1
  7. metadata/data_quality/validations/models.py +2 -2
  8. metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +3 -30
  9. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +5 -11
  10. metadata/data_quality/validations/table/pandas/tableRowInsertedCountToBeBetween.py +17 -2
  11. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +1 -4
  12. metadata/generated/schema/analytics/__init__.py +1 -1
  13. metadata/generated/schema/analytics/basic.py +1 -1
  14. metadata/generated/schema/analytics/reportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  16. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  17. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  18. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  19. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  20. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  21. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  22. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  23. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  24. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  25. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  26. metadata/generated/schema/api/__init__.py +1 -1
  27. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +3 -16
  28. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -10
  29. metadata/generated/schema/api/analytics/__init__.py +1 -1
  30. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  31. metadata/generated/schema/api/automations/__init__.py +1 -1
  32. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  33. metadata/generated/schema/api/bulkAssets.py +1 -1
  34. metadata/generated/schema/api/classification/__init__.py +1 -1
  35. metadata/generated/schema/api/classification/createClassification.py +6 -2
  36. metadata/generated/schema/api/classification/createTag.py +6 -2
  37. metadata/generated/schema/api/classification/loadTags.py +1 -1
  38. metadata/generated/schema/api/createBot.py +1 -1
  39. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  40. metadata/generated/schema/api/createType.py +1 -1
  41. metadata/generated/schema/api/data/__init__.py +1 -1
  42. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  43. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  44. metadata/generated/schema/api/data/createChart.py +1 -1
  45. metadata/generated/schema/api/data/createContainer.py +1 -1
  46. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  47. metadata/generated/schema/api/data/createDashboard.py +1 -1
  48. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  49. metadata/generated/schema/api/data/createDataContract.py +66 -0
  50. metadata/generated/schema/api/data/createDatabase.py +1 -1
  51. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  52. metadata/generated/schema/api/data/createGlossary.py +1 -1
  53. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  54. metadata/generated/schema/api/data/createMetric.py +1 -1
  55. metadata/generated/schema/api/data/createMlModel.py +1 -1
  56. metadata/generated/schema/api/data/createPipeline.py +1 -1
  57. metadata/generated/schema/api/data/createQuery.py +1 -1
  58. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  59. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  60. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  61. metadata/generated/schema/api/data/createTable.py +1 -1
  62. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  63. metadata/generated/schema/api/data/createTopic.py +1 -1
  64. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  65. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  66. metadata/generated/schema/api/data/updateColumn.py +49 -0
  67. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  68. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  69. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  70. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  71. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  72. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  73. metadata/generated/schema/api/docStore/__init__.py +1 -1
  74. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  75. metadata/generated/schema/api/domains/__init__.py +1 -1
  76. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  77. metadata/generated/schema/api/domains/createDomain.py +1 -1
  78. metadata/generated/schema/api/feed/__init__.py +1 -1
  79. metadata/generated/schema/api/feed/closeTask.py +1 -1
  80. metadata/generated/schema/api/feed/createPost.py +1 -1
  81. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  82. metadata/generated/schema/api/feed/createThread.py +1 -1
  83. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  84. metadata/generated/schema/api/feed/threadCount.py +1 -1
  85. metadata/generated/schema/api/governance/__init__.py +1 -1
  86. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  87. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  88. metadata/generated/schema/api/lineage/__init__.py +1 -1
  89. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  90. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  91. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  92. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  93. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  94. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  95. metadata/generated/schema/api/mcp/__init__.py +3 -0
  96. metadata/generated/schema/api/mcp/mcpToolDefinition.py +54 -0
  97. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  98. metadata/generated/schema/api/policies/__init__.py +1 -1
  99. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  100. metadata/generated/schema/api/scim/__init__.py +3 -0
  101. metadata/generated/schema/api/scim/scimGroup.py +52 -0
  102. metadata/generated/schema/api/scim/scimPatchOp.py +32 -0
  103. metadata/generated/schema/api/scim/scimUser.py +83 -0
  104. metadata/generated/schema/api/search/__init__.py +1 -1
  105. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  106. metadata/generated/schema/api/services/__init__.py +1 -1
  107. metadata/generated/schema/api/services/createApiService.py +1 -1
  108. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  109. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  110. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  111. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  112. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  113. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  114. metadata/generated/schema/api/services/createSearchService.py +1 -1
  115. metadata/generated/schema/api/services/createStorageService.py +1 -1
  116. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  117. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  118. metadata/generated/schema/api/setOwner.py +1 -1
  119. metadata/generated/schema/api/teams/__init__.py +1 -1
  120. metadata/generated/schema/api/teams/createPersona.py +1 -1
  121. metadata/generated/schema/api/teams/createRole.py +1 -1
  122. metadata/generated/schema/api/teams/createTeam.py +8 -1
  123. metadata/generated/schema/api/teams/createUser.py +11 -1
  124. metadata/generated/schema/api/tests/__init__.py +1 -1
  125. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  126. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  127. metadata/generated/schema/api/tests/createTestCase.py +9 -6
  128. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  129. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  130. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  131. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  132. metadata/generated/schema/api/validateGlossaryTagsRequest.py +31 -0
  133. metadata/generated/schema/api/voteRequest.py +1 -1
  134. metadata/generated/schema/auth/__init__.py +1 -1
  135. metadata/generated/schema/auth/basicAuth.py +1 -1
  136. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  137. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  138. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  139. metadata/generated/schema/auth/emailRequest.py +1 -1
  140. metadata/generated/schema/auth/emailVerificationToken.py +2 -1
  141. metadata/generated/schema/auth/generateToken.py +1 -1
  142. metadata/generated/schema/auth/jwtAuth.py +1 -1
  143. metadata/generated/schema/auth/loginRequest.py +1 -1
  144. metadata/generated/schema/auth/logoutRequest.py +1 -1
  145. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  146. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  147. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  148. metadata/generated/schema/auth/refreshToken.py +1 -1
  149. metadata/generated/schema/auth/registrationRequest.py +1 -1
  150. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  151. metadata/generated/schema/auth/revokeToken.py +1 -1
  152. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  153. metadata/generated/schema/auth/ssoAuth.py +1 -1
  154. metadata/generated/schema/auth/supportToken.py +35 -0
  155. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  156. metadata/generated/schema/configuration/__init__.py +1 -1
  157. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  159. metadata/generated/schema/configuration/authConfig.py +1 -1
  160. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  165. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  166. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  167. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  168. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  169. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  170. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  171. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  172. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  173. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  174. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  175. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  176. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  178. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  179. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/opsConfig.py +1 -1
  183. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  185. metadata/generated/schema/configuration/searchSettings.py +1 -1
  186. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  187. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  188. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  189. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  190. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  191. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  192. metadata/generated/schema/dataInsight/__init__.py +1 -1
  193. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  194. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  195. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  196. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  197. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  198. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  199. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  200. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  201. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  202. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  203. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  204. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  205. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  206. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  207. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  208. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  209. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  210. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  211. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  212. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  213. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  214. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  215. metadata/generated/schema/email/__init__.py +1 -1
  216. metadata/generated/schema/email/emailRequest.py +1 -1
  217. metadata/generated/schema/email/emailTemplate.py +1 -1
  218. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  219. metadata/generated/schema/email/smtpSettings.py +1 -1
  220. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  221. metadata/generated/schema/entity/__init__.py +1 -1
  222. metadata/generated/schema/entity/applications/__init__.py +1 -1
  223. metadata/generated/schema/entity/applications/app.py +3 -2
  224. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  225. metadata/generated/schema/entity/applications/appRunRecord.py +2 -1
  226. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  228. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  229. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  230. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  231. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  232. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +5 -2
  237. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +9 -1
  258. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +9 -1
  260. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  266. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  267. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  268. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  269. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  270. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  271. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  272. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  273. metadata/generated/schema/entity/automations/__init__.py +1 -1
  274. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  275. metadata/generated/schema/entity/automations/workflow.py +1 -1
  276. metadata/generated/schema/entity/bot.py +1 -1
  277. metadata/generated/schema/entity/classification/__init__.py +1 -1
  278. metadata/generated/schema/entity/classification/classification.py +7 -4
  279. metadata/generated/schema/entity/classification/tag.py +6 -3
  280. metadata/generated/schema/entity/data/__init__.py +1 -1
  281. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  282. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  283. metadata/generated/schema/entity/data/chart.py +1 -1
  284. metadata/generated/schema/entity/data/container.py +1 -1
  285. metadata/generated/schema/entity/data/dashboard.py +1 -1
  286. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  287. metadata/generated/schema/entity/data/dataContract.py +180 -0
  288. metadata/generated/schema/entity/data/database.py +1 -1
  289. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  290. metadata/generated/schema/entity/data/glossary.py +1 -1
  291. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  292. metadata/generated/schema/entity/data/metric.py +1 -1
  293. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  294. metadata/generated/schema/entity/data/pipeline.py +1 -1
  295. metadata/generated/schema/entity/data/query.py +1 -1
  296. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  297. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  298. metadata/generated/schema/entity/data/report.py +1 -1
  299. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  300. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  301. metadata/generated/schema/entity/data/table.py +10 -1
  302. metadata/generated/schema/entity/data/topic.py +1 -1
  303. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  304. metadata/generated/schema/entity/docStore/document.py +1 -1
  305. metadata/generated/schema/entity/domains/__init__.py +1 -1
  306. metadata/generated/schema/entity/domains/dataProduct.py +5 -1
  307. metadata/generated/schema/entity/domains/domain.py +5 -1
  308. metadata/generated/schema/entity/events/__init__.py +1 -1
  309. metadata/generated/schema/entity/events/webhook.py +7 -1
  310. metadata/generated/schema/entity/feed/__init__.py +1 -1
  311. metadata/generated/schema/entity/feed/assets.py +1 -1
  312. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  313. metadata/generated/schema/entity/feed/description.py +1 -1
  314. metadata/generated/schema/entity/feed/domain.py +1 -1
  315. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  316. metadata/generated/schema/entity/feed/owner.py +1 -1
  317. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  318. metadata/generated/schema/entity/feed/tag.py +1 -1
  319. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  320. metadata/generated/schema/entity/feed/thread.py +1 -1
  321. metadata/generated/schema/entity/policies/__init__.py +1 -1
  322. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  323. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +6 -1
  324. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  325. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  326. metadata/generated/schema/entity/policies/filters.py +1 -1
  327. metadata/generated/schema/entity/policies/policy.py +1 -1
  328. metadata/generated/schema/entity/services/__init__.py +1 -1
  329. metadata/generated/schema/entity/services/apiService.py +1 -1
  330. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  331. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  332. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  334. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  335. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  336. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  337. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  353. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +5 -1
  364. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  431. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +9 -1
  436. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  437. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  438. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  445. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +9 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  469. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  480. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  481. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  482. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  486. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  491. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  492. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  493. metadata/generated/schema/entity/services/databaseService.py +1 -1
  494. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  495. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  496. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  497. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  498. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  499. metadata/generated/schema/entity/services/messagingService.py +1 -1
  500. metadata/generated/schema/entity/services/metadataService.py +1 -1
  501. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  502. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  503. metadata/generated/schema/entity/services/searchService.py +1 -1
  504. metadata/generated/schema/entity/services/serviceType.py +1 -1
  505. metadata/generated/schema/entity/services/storageService.py +1 -1
  506. metadata/generated/schema/entity/teams/__init__.py +1 -1
  507. metadata/generated/schema/entity/teams/persona.py +1 -1
  508. metadata/generated/schema/entity/teams/role.py +1 -1
  509. metadata/generated/schema/entity/teams/team.py +8 -1
  510. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  511. metadata/generated/schema/entity/teams/user.py +11 -1
  512. metadata/generated/schema/entity/type.py +1 -1
  513. metadata/generated/schema/entity/utils/__init__.py +1 -1
  514. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  515. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  516. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  517. metadata/generated/schema/events/__init__.py +1 -1
  518. metadata/generated/schema/events/alertMetrics.py +1 -1
  519. metadata/generated/schema/events/api/__init__.py +1 -1
  520. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  521. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  522. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  523. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  524. metadata/generated/schema/events/api/typedEvent.py +1 -1
  525. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  526. metadata/generated/schema/events/eventFilterRule.py +1 -1
  527. metadata/generated/schema/events/eventSubscription.py +1 -1
  528. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  529. metadata/generated/schema/events/failedEvent.py +1 -1
  530. metadata/generated/schema/events/failedEventResponse.py +1 -1
  531. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  532. metadata/generated/schema/events/statusContext.py +1 -1
  533. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  534. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  535. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  536. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  537. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  538. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  539. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  540. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  541. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  542. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  543. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  544. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  545. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  546. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  547. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  548. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  549. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  550. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  551. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  552. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  553. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  554. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  555. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  556. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  557. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  558. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  559. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  560. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  561. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  562. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  563. metadata/generated/schema/jobs/__init__.py +1 -1
  564. metadata/generated/schema/jobs/backgroundJob.py +12 -3
  565. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  566. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  567. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/application.py +1 -1
  569. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  572. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  573. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  574. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  575. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  576. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  577. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  578. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  579. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  580. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  581. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  582. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  583. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  584. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  585. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  586. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  587. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  588. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  589. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  590. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  591. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  592. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  593. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  594. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  595. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  596. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  597. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  598. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  599. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  600. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  601. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  602. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  603. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  604. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  605. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  606. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  607. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  608. metadata/generated/schema/monitoring/__init__.py +1 -1
  609. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  610. metadata/generated/schema/scim/__init__.py +3 -0
  611. metadata/generated/schema/scim/scimConfiguration.py +32 -0
  612. metadata/generated/schema/search/__init__.py +1 -1
  613. metadata/generated/schema/search/aggregationRequest.py +1 -1
  614. metadata/generated/schema/search/searchRequest.py +8 -1
  615. metadata/generated/schema/security/__init__.py +1 -1
  616. metadata/generated/schema/security/client/__init__.py +1 -1
  617. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  618. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  619. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  620. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  621. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  622. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  623. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  624. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  625. metadata/generated/schema/security/credentials/__init__.py +1 -1
  626. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  627. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  628. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  629. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  630. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  631. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  632. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  633. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  634. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  635. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  636. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  637. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  638. metadata/generated/schema/security/sasl/__init__.py +1 -1
  639. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  640. metadata/generated/schema/security/secrets/__init__.py +1 -1
  641. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  642. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  643. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  644. metadata/generated/schema/security/securityConfiguration.py +1 -1
  645. metadata/generated/schema/security/ssl/__init__.py +1 -1
  646. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  647. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  648. metadata/generated/schema/settings/__init__.py +1 -1
  649. metadata/generated/schema/settings/settings.py +2 -1
  650. metadata/generated/schema/system/__init__.py +1 -1
  651. metadata/generated/schema/system/entityError.py +1 -1
  652. metadata/generated/schema/system/eventPublisherJob.py +8 -1
  653. metadata/generated/schema/system/indexingError.py +1 -1
  654. metadata/generated/schema/system/limitsResponse.py +1 -1
  655. metadata/generated/schema/system/ui/__init__.py +1 -1
  656. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  657. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  658. metadata/generated/schema/system/ui/page.py +1 -1
  659. metadata/generated/schema/system/ui/tab.py +1 -1
  660. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  661. metadata/generated/schema/system/validationResponse.py +1 -1
  662. metadata/generated/schema/tests/__init__.py +1 -1
  663. metadata/generated/schema/tests/assigned.py +1 -1
  664. metadata/generated/schema/tests/basic.py +1 -1
  665. metadata/generated/schema/tests/customMetric.py +1 -1
  666. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  667. metadata/generated/schema/tests/resolved.py +1 -1
  668. metadata/generated/schema/tests/testCase.py +1 -1
  669. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  670. metadata/generated/schema/tests/testDefinition.py +1 -1
  671. metadata/generated/schema/tests/testSuite.py +1 -1
  672. metadata/generated/schema/type/__init__.py +1 -1
  673. metadata/generated/schema/type/apiSchema.py +1 -1
  674. metadata/generated/schema/type/assetCertification.py +1 -1
  675. metadata/generated/schema/type/auditLog.py +1 -1
  676. metadata/generated/schema/type/basic.py +1 -1
  677. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  678. metadata/generated/schema/type/changeEvent.py +1 -1
  679. metadata/generated/schema/type/changeEventType.py +1 -1
  680. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  681. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  682. metadata/generated/schema/type/csvDocumentation.py +1 -1
  683. metadata/generated/schema/type/csvErrorType.py +1 -1
  684. metadata/generated/schema/type/csvFile.py +1 -1
  685. metadata/generated/schema/type/csvImportResult.py +1 -1
  686. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  687. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  688. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  689. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  690. metadata/generated/schema/type/customProperty.py +1 -1
  691. metadata/generated/schema/type/dailyCount.py +1 -1
  692. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  693. metadata/generated/schema/type/entityHierarchy.py +1 -1
  694. metadata/generated/schema/type/entityHistory.py +1 -1
  695. metadata/generated/schema/type/entityLineage.py +1 -1
  696. metadata/generated/schema/type/entityReference.py +1 -1
  697. metadata/generated/schema/type/entityReferenceList.py +1 -1
  698. metadata/generated/schema/type/entityRelationship.py +1 -1
  699. metadata/generated/schema/type/entityUsage.py +1 -1
  700. metadata/generated/schema/type/filterPattern.py +1 -1
  701. metadata/generated/schema/type/function.py +1 -1
  702. metadata/generated/schema/type/include.py +1 -1
  703. metadata/generated/schema/type/jdbcConnection.py +1 -1
  704. metadata/generated/schema/type/lifeCycle.py +1 -1
  705. metadata/generated/schema/type/paging.py +1 -1
  706. metadata/generated/schema/type/profile.py +1 -1
  707. metadata/generated/schema/type/queryParserData.py +1 -1
  708. metadata/generated/schema/type/reaction.py +1 -1
  709. metadata/generated/schema/type/schedule.py +1 -1
  710. metadata/generated/schema/type/schema.py +1 -1
  711. metadata/generated/schema/type/tableQuery.py +1 -1
  712. metadata/generated/schema/type/tableUsageCount.py +1 -1
  713. metadata/generated/schema/type/tagLabel.py +1 -1
  714. metadata/generated/schema/type/usageDetails.py +1 -1
  715. metadata/generated/schema/type/usageRequest.py +1 -1
  716. metadata/generated/schema/type/votes.py +1 -1
  717. metadata/great_expectations/action.py +4 -8
  718. metadata/great_expectations/action1xx.py +395 -0
  719. metadata/ingestion/connections/builders.py +14 -4
  720. metadata/ingestion/connections/connection.py +63 -0
  721. metadata/ingestion/connections/query_logger.py +115 -0
  722. metadata/ingestion/connections/test_connections.py +1 -1
  723. metadata/ingestion/ometa/mixins/tests_mixin.py +3 -5
  724. metadata/ingestion/ometa/routes.py +2 -0
  725. metadata/ingestion/sink/metadata_rest.py +54 -11
  726. metadata/ingestion/source/api/api_service.py +2 -7
  727. metadata/ingestion/source/api/rest/metadata.py +0 -1
  728. metadata/ingestion/source/connections.py +80 -14
  729. metadata/ingestion/source/connections_utils.py +32 -0
  730. metadata/ingestion/source/dashboard/dashboard_service.py +2 -7
  731. metadata/ingestion/source/dashboard/qlikcloud/client.py +34 -2
  732. metadata/ingestion/source/dashboard/qlikcloud/constants.py +6 -0
  733. metadata/ingestion/source/dashboard/qlikcloud/models.py +8 -0
  734. metadata/ingestion/source/dashboard/superset/connection.py +8 -8
  735. metadata/ingestion/source/dashboard/superset/queries.py +1 -1
  736. metadata/ingestion/source/dashboard/tableau/client.py +4 -4
  737. metadata/ingestion/source/dashboard/tableau/metadata.py +0 -1
  738. metadata/ingestion/source/database/bigquery/connection.py +13 -9
  739. metadata/ingestion/source/database/bigquery/helper.py +11 -9
  740. metadata/ingestion/source/database/bigquery/metadata.py +102 -13
  741. metadata/ingestion/source/database/bigquery/profiler/system.py +1 -1
  742. metadata/ingestion/source/database/bigquery/queries.py +15 -3
  743. metadata/ingestion/source/database/common_db_source.py +2 -4
  744. metadata/ingestion/source/database/database_service.py +2 -7
  745. metadata/ingestion/source/database/databricks/client.py +149 -14
  746. metadata/ingestion/source/database/databricks/queries.py +26 -0
  747. metadata/ingestion/source/database/datalake/metadata.py +1 -1
  748. metadata/ingestion/source/database/dbt/metadata.py +0 -5
  749. metadata/ingestion/source/database/mysql/connection.py +52 -45
  750. metadata/ingestion/source/database/mysql/service_spec.py +2 -0
  751. metadata/ingestion/source/database/postgres/metadata.py +16 -4
  752. metadata/ingestion/source/database/postgres/models.py +1 -0
  753. metadata/ingestion/source/database/postgres/queries.py +7 -4
  754. metadata/ingestion/source/database/query_parser_source.py +2 -7
  755. metadata/ingestion/source/database/redshift/connection.py +1 -1
  756. metadata/ingestion/source/database/sample_data.py +1 -1
  757. metadata/ingestion/source/database/saphana/lineage.py +2 -7
  758. metadata/ingestion/source/database/sas/metadata.py +2 -7
  759. metadata/ingestion/source/database/trino/connection.py +10 -79
  760. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +26 -17
  761. metadata/ingestion/source/database/unitycatalog/connection.py +33 -0
  762. metadata/ingestion/source/database/unitycatalog/lineage.py +2 -7
  763. metadata/ingestion/source/database/unitycatalog/metadata.py +126 -13
  764. metadata/ingestion/source/database/unitycatalog/queries.py +19 -0
  765. metadata/ingestion/source/messaging/messaging_service.py +2 -7
  766. metadata/ingestion/source/metadata/alationsink/metadata.py +2 -7
  767. metadata/ingestion/source/metadata/amundsen/metadata.py +2 -7
  768. metadata/ingestion/source/metadata/atlas/metadata.py +2 -7
  769. metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -7
  770. metadata/ingestion/source/pipeline/airflow/connection.py +4 -6
  771. metadata/ingestion/source/pipeline/databrickspipeline/connection.py +26 -2
  772. metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +175 -13
  773. metadata/ingestion/source/pipeline/nifi/metadata.py +133 -3
  774. metadata/ingestion/source/pipeline/pipeline_service.py +20 -7
  775. metadata/ingestion/source/search/search_service.py +2 -7
  776. metadata/ingestion/source/storage/storage_service.py +2 -7
  777. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -3
  778. metadata/profiler/interface/sqlalchemy/profiler_interface.py +1 -0
  779. metadata/profiler/metrics/static/not_regexp_match_count.py +4 -3
  780. metadata/profiler/metrics/static/regexp_match_count.py +3 -2
  781. metadata/profiler/orm/functions/length.py +1 -0
  782. metadata/profiler/orm/functions/md5.py +9 -0
  783. metadata/profiler/orm/functions/modulo.py +1 -0
  784. metadata/profiler/orm/functions/random_num.py +4 -0
  785. metadata/profiler/orm/functions/regexp.py +40 -0
  786. metadata/profiler/orm/functions/table_metric_computer.py +34 -8
  787. metadata/profiler/orm/registry.py +1 -0
  788. metadata/profiler/processor/core.py +2 -2
  789. metadata/profiler/processor/default.py +29 -28
  790. metadata/profiler/processor/metric_filter.py +16 -3
  791. metadata/profiler/processor/models.py +14 -4
  792. metadata/profiler/source/database/base/profiler_resolver.py +35 -0
  793. metadata/profiler/source/database/base/profiler_source.py +45 -30
  794. metadata/profiler/source/profiler_source_interface.py +8 -13
  795. metadata/sampler/sampler_interface.py +15 -10
  796. metadata/sampler/sqlalchemy/bigquery/sampler.py +7 -0
  797. metadata/utils/dependency_injector/dependency_injector.py +403 -0
  798. metadata/utils/service_spec/service_spec.py +66 -10
  799. metadata/workflow/profiler.py +2 -7
  800. {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/METADATA +523 -516
  801. {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/RECORD +805 -782
  802. {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/LICENSE +0 -0
  803. {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/WHEEL +0 -0
  804. {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/entry_points.txt +0 -0
  805. {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/top_level.txt +0 -0
@@ -14,14 +14,23 @@ Client to interact with databricks apis
14
14
  import json
15
15
  import traceback
16
16
  from datetime import timedelta
17
- from typing import Iterable, List
17
+ from typing import Iterable, List, Optional, Tuple, Union
18
18
 
19
19
  import requests
20
+ from sqlalchemy import text
21
+ from sqlalchemy.engine import Engine
20
22
 
21
23
  from metadata.generated.schema.entity.services.connections.database.databricksConnection import (
22
24
  DatabricksConnection,
23
25
  )
26
+ from metadata.generated.schema.entity.services.connections.pipeline.databricksPipelineConnection import (
27
+ DatabricksPipelineConnection,
28
+ )
24
29
  from metadata.ingestion.ometa.client import APIError
30
+ from metadata.ingestion.source.database.databricks.queries import (
31
+ DATABRICKS_GET_COLUMN_LINEAGE_FOR_JOB,
32
+ DATABRICKS_GET_TABLE_LINEAGE_FOR_JOB,
33
+ )
25
34
  from metadata.utils.constants import QUERY_WITH_DBT, QUERY_WITH_OM_VERSION
26
35
  from metadata.utils.helpers import datetime_to_ts
27
36
  from metadata.utils.logger import ingestion_logger
@@ -30,6 +39,8 @@ logger = ingestion_logger()
30
39
  API_TIMEOUT = 10
31
40
  PAGE_SIZE = 100
32
41
  QUERIES_PATH = "/sql/history/queries"
42
+ API_VERSION = "/api/2.0"
43
+ JOB_API_VERSION = "/api/2.1"
33
44
 
34
45
 
35
46
  class DatabricksClientException(Exception):
@@ -43,30 +54,58 @@ class DatabricksClient:
43
54
  DatabricksClient creates a Databricks connection based on DatabricksCredentials.
44
55
  """
45
56
 
46
- def __init__(self, config: DatabricksConnection):
57
+ def __init__(
58
+ self,
59
+ config: Union[DatabricksConnection, DatabricksPipelineConnection],
60
+ engine: Optional[Engine] = None,
61
+ ):
47
62
  self.config = config
48
63
  base_url, *_ = self.config.hostPort.split(":")
49
- api_version = "/api/2.0"
50
- job_api_version = "/api/2.1"
51
64
  auth_token = self.config.token.get_secret_value()
52
- self.base_url = f"https://{base_url}{api_version}"
65
+ self.base_url = f"https://{base_url}{API_VERSION}"
53
66
  self.base_query_url = f"{self.base_url}{QUERIES_PATH}"
54
- self.base_job_url = f"https://{base_url}{job_api_version}/jobs"
67
+ self.base_job_url = f"https://{base_url}{JOB_API_VERSION}/jobs"
55
68
  self.jobs_list_url = f"{self.base_job_url}/list"
56
69
  self.jobs_run_list_url = f"{self.base_job_url}/runs/list"
57
70
  self.headers = {
58
71
  "Authorization": f"Bearer {auth_token}",
59
72
  "Content-Type": "application/json",
60
73
  }
74
+ self.api_timeout = self.config.connectionTimeout or 120
75
+ self.job_table_lineage: dict[str, list[dict[str, str]]] = {}
76
+ self.job_column_lineage: dict[
77
+ str, dict[Tuple[str, str], list[Tuple[str, str]]]
78
+ ] = {}
79
+ self.engine = engine
61
80
  self.client = requests
62
81
 
63
82
  def test_query_api_access(self) -> None:
64
83
  res = self.client.get(
65
- self.base_query_url, headers=self.headers, timeout=API_TIMEOUT
84
+ self.base_query_url, headers=self.headers, timeout=self.api_timeout
66
85
  )
67
86
  if res.status_code != 200:
68
87
  raise APIError(res.json)
69
88
 
89
+ def test_lineage_query(self) -> None:
90
+ try:
91
+ with self.engine.connect() as connection:
92
+ test_table_lineage = connection.execute(
93
+ text(DATABRICKS_GET_TABLE_LINEAGE_FOR_JOB + " LIMIT 1")
94
+ )
95
+ test_column_lineage = connection.execute(
96
+ text(DATABRICKS_GET_COLUMN_LINEAGE_FOR_JOB + " LIMIT 1")
97
+ )
98
+ # Check if queries executed successfully by fetching results
99
+ table_result = test_table_lineage.fetchone()
100
+ column_result = test_column_lineage.fetchone()
101
+ logger.info("Lineage queries executed successfully")
102
+ except Exception as exc:
103
+ logger.debug(f"Error testing lineage queries: {traceback.format_exc()}")
104
+ raise DatabricksClientException(
105
+ f"Failed to test lineage queries Make sure you have access"
106
+ "to the tables table_lineage and column_lineage: {exc}"
107
+ )
108
+
70
109
  def _run_query_paginator(self, data, result, end_time, response):
71
110
  while True:
72
111
  if response:
@@ -85,7 +124,7 @@ class DatabricksClient:
85
124
  self.base_query_url,
86
125
  data=json.dumps(data),
87
126
  headers=self.headers,
88
- timeout=API_TIMEOUT,
127
+ timeout=self.api_timeout,
89
128
  ).json()
90
129
  yield from response.get("res") or []
91
130
 
@@ -117,7 +156,7 @@ class DatabricksClient:
117
156
  self.base_query_url,
118
157
  data=json.dumps(data),
119
158
  headers=self.headers,
120
- timeout=API_TIMEOUT,
159
+ timeout=self.api_timeout,
121
160
  ).json()
122
161
 
123
162
  result = response.get("res") or []
@@ -145,7 +184,7 @@ class DatabricksClient:
145
184
  self.jobs_list_url,
146
185
  data=json.dumps(data),
147
186
  headers=self.headers,
148
- timeout=API_TIMEOUT,
187
+ timeout=self.api_timeout,
149
188
  )
150
189
  if response.status_code != 200:
151
190
  raise DatabricksClientException(response.text)
@@ -154,6 +193,7 @@ class DatabricksClient:
154
193
  """
155
194
  Method returns List all the created jobs in a Databricks Workspace
156
195
  """
196
+ self.cache_lineage()
157
197
  try:
158
198
  iteration_count = 1
159
199
  data = {"limit": PAGE_SIZE, "expand_tasks": True, "offset": 0}
@@ -162,7 +202,7 @@ class DatabricksClient:
162
202
  self.jobs_list_url,
163
203
  data=json.dumps(data),
164
204
  headers=self.headers,
165
- timeout=API_TIMEOUT,
205
+ timeout=self.api_timeout,
166
206
  ).json()
167
207
 
168
208
  yield from response.get("jobs") or []
@@ -174,7 +214,7 @@ class DatabricksClient:
174
214
  self.jobs_list_url,
175
215
  data=json.dumps(data),
176
216
  headers=self.headers,
177
- timeout=API_TIMEOUT,
217
+ timeout=self.api_timeout,
178
218
  ).json()
179
219
  iteration_count += 1
180
220
  yield from response.get("jobs") or []
@@ -200,7 +240,7 @@ class DatabricksClient:
200
240
  self.jobs_run_list_url,
201
241
  params=params,
202
242
  headers=self.headers,
203
- timeout=API_TIMEOUT,
243
+ timeout=self.api_timeout,
204
244
  ).json()
205
245
 
206
246
  yield from response.get("runs") or []
@@ -212,7 +252,7 @@ class DatabricksClient:
212
252
  self.jobs_run_list_url,
213
253
  params=params,
214
254
  headers=self.headers,
215
- timeout=API_TIMEOUT,
255
+ timeout=self.api_timeout,
216
256
  ).json()
217
257
 
218
258
  yield from response.get("runs") or []
@@ -220,3 +260,98 @@ class DatabricksClient:
220
260
  except Exception as exc:
221
261
  logger.debug(traceback.format_exc())
222
262
  logger.error(exc)
263
+
264
+ def get_table_lineage(self, job_id: str) -> List[dict[str, str]]:
265
+ """
266
+ Method returns table lineage for a job by the specified job_id
267
+ """
268
+ try:
269
+ return self.job_table_lineage.get(str(job_id))
270
+ except Exception as exc:
271
+ logger.debug(
272
+ f"Error getting table lineage for job {job_id} due to {traceback.format_exc()}"
273
+ )
274
+ logger.error(exc)
275
+ return []
276
+
277
+ def get_column_lineage(
278
+ self, job_id: str, TableKey: Tuple[str, str]
279
+ ) -> List[Tuple[str, str]]:
280
+ """
281
+ Method returns column lineage for a job by the specified job_id and table key
282
+ """
283
+ try:
284
+ return self.job_column_lineage.get(str(job_id), {}).get(TableKey)
285
+ except Exception as exc:
286
+ logger.debug(
287
+ f"Error getting column lineage for table {TableKey} due to {traceback.format_exc()}"
288
+ )
289
+ logger.error(exc)
290
+ return []
291
+
292
+ def run_lineage_query(self, query: str) -> List[dict]:
293
+ """
294
+ Method runs a lineage query and returns the result
295
+ """
296
+ try:
297
+ with self.engine.connect() as connection:
298
+ result = connection.execute(text(query))
299
+ return result
300
+
301
+ except Exception as exc:
302
+ logger.debug(f"Error caching table lineage due to {traceback.format_exc()}")
303
+ logger.error(exc)
304
+ return []
305
+
306
+ def cache_lineage(self):
307
+ """
308
+ Method caches table and column lineage for a job by the specified job_id
309
+ """
310
+ logger.info(f"Caching table lineage")
311
+ table_lineage = self.run_lineage_query(DATABRICKS_GET_TABLE_LINEAGE_FOR_JOB)
312
+ if table_lineage:
313
+ for row in table_lineage:
314
+ try:
315
+ if row.job_id not in self.job_table_lineage:
316
+ self.job_table_lineage[row.job_id] = []
317
+ self.job_table_lineage[row.job_id].append(
318
+ {
319
+ "source_table_full_name": row.source_table_full_name,
320
+ "target_table_full_name": row.target_table_full_name,
321
+ }
322
+ )
323
+ except Exception as exc:
324
+ logger.debug(
325
+ f"Error parsing row: {row} due to {traceback.format_exc()}"
326
+ )
327
+ continue
328
+
329
+ # Not every job has column lineage, so we need to check if the job exists in the column_lineage table
330
+ # we will cache the column lineage for jobs that have column lineage
331
+ logger.info("Caching column lineage")
332
+ column_lineage = self.run_lineage_query(DATABRICKS_GET_COLUMN_LINEAGE_FOR_JOB)
333
+ if column_lineage:
334
+ for row in column_lineage:
335
+ try:
336
+ table_key = (
337
+ row.source_table_full_name,
338
+ row.target_table_full_name,
339
+ )
340
+ column_pair = (
341
+ row.source_column_name,
342
+ row.target_column_name,
343
+ )
344
+
345
+ if row.job_id not in self.job_column_lineage:
346
+ self.job_column_lineage[row.job_id] = {}
347
+
348
+ if table_key not in self.job_column_lineage[row.job_id]:
349
+ self.job_column_lineage[row.job_id][table_key] = []
350
+
351
+ self.job_column_lineage[row.job_id][table_key].append(column_pair)
352
+
353
+ except Exception as exc:
354
+ logger.debug(
355
+ f"Error parsing row: {row} due to {traceback.format_exc()}"
356
+ )
357
+ continue
@@ -86,3 +86,29 @@ DATABRICKS_GET_COLUMN_TAGS = textwrap.dedent(
86
86
  )
87
87
 
88
88
  DATABRICKS_DDL = "SHOW CREATE TABLE `{table_name}`"
89
+
90
+ DATABRICKS_GET_TABLE_LINEAGE_FOR_JOB = textwrap.dedent(
91
+ """
92
+ SELECT DISTINCT
93
+ entity_id as job_id,
94
+ entity_type as job_type,
95
+ source_table_full_name as source_table_full_name,
96
+ target_table_full_name as target_table_full_name
97
+ FROM system.access.table_lineage
98
+ WHERE entity_type ILIKE 'job'
99
+ """
100
+ )
101
+
102
+ DATABRICKS_GET_COLUMN_LINEAGE_FOR_JOB = textwrap.dedent(
103
+ """
104
+ SELECT DISTINCT
105
+ entity_id as job_id,
106
+ entity_type as job_type,
107
+ source_table_full_name as source_table_full_name,
108
+ source_column_name as source_column_name,
109
+ target_table_full_name as target_table_full_name,
110
+ target_column_name as target_column_name
111
+ FROM system.access.column_lineage
112
+ WHERE entity_type ILIKE 'job'
113
+ """
114
+ )
@@ -248,7 +248,7 @@ class DatalakeSource(DatabaseServiceSource):
248
248
  if self.source_config.includeTables:
249
249
  for key_name in self.client.get_table_names(bucket_name, prefix):
250
250
  table_name = self.standardize_table_name(bucket_name, key_name)
251
-
251
+ logger.info(f"Processing table: {table_name}")
252
252
  if self.filter_dl_table(table_name):
253
253
  continue
254
254
 
@@ -83,7 +83,6 @@ from metadata.ingestion.source.database.dbt.dbt_service import (
83
83
  )
84
84
  from metadata.ingestion.source.database.dbt.dbt_utils import (
85
85
  check_ephemeral_node,
86
- check_or_create_test_suite,
87
86
  create_test_case_parameter_definitions,
88
87
  create_test_case_parameter_values,
89
88
  generate_entity_link,
@@ -1024,9 +1023,6 @@ class DbtSource(DbtServiceSource):
1024
1023
  logger.debug(f"Processing DBT Test Case for node: {manifest_node.name}")
1025
1024
  entity_link_list = generate_entity_link(dbt_test)
1026
1025
  for entity_link_str in entity_link_list:
1027
- test_suite = check_or_create_test_suite(
1028
- self.metadata, entity_link_str
1029
- )
1030
1026
  table_fqn = get_table_fqn(entity_link_str)
1031
1027
  logger.debug(f"Table fqn found: {table_fqn}")
1032
1028
  source_elements = table_fqn.split(fqn.FQN_SEPARATOR)
@@ -1056,7 +1052,6 @@ class DbtSource(DbtServiceSource):
1056
1052
  manifest_node.name
1057
1053
  ),
1058
1054
  entityLink=entity_link_str,
1059
- testSuite=test_suite.fullyQualifiedName,
1060
1055
  parameterValues=create_test_case_parameter_values(
1061
1056
  dbt_test
1062
1057
  ),
@@ -20,6 +20,9 @@ from metadata.clients.azure_client import AzureClient
20
20
  from metadata.generated.schema.entity.automations.workflow import (
21
21
  Workflow as AutomationWorkflow,
22
22
  )
23
+ from metadata.generated.schema.entity.services.connections.database.common.azureConfig import (
24
+ AzureConfigurationSource,
25
+ )
23
26
  from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
24
27
  BasicAuth,
25
28
  )
@@ -34,6 +37,7 @@ from metadata.ingestion.connections.builders import (
34
37
  get_connection_args_common,
35
38
  get_connection_url_common,
36
39
  )
40
+ from metadata.ingestion.connections.connection import BaseConnection
37
41
  from metadata.ingestion.connections.test_connections import (
38
42
  test_connection_db_schema_sources,
39
43
  )
@@ -45,51 +49,54 @@ from metadata.ingestion.source.database.mysql.queries import (
45
49
  from metadata.utils.constants import THREE_MIN
46
50
 
47
51
 
48
- def get_connection(connection: MysqlConnection) -> Engine:
49
- """
50
- Create connection
51
- """
52
- if hasattr(connection.authType, "azureConfig"):
53
- azure_client = AzureClient(connection.authType.azureConfig).create_client()
54
- if not connection.authType.azureConfig.scopes:
55
- raise ValueError(
56
- "Azure Scopes are missing, please refer https://learn.microsoft.com/"
57
- "en-gb/azure/mysql/flexible-server/how-to-azure-ad#2---retrieve-micr"
58
- "osoft-entra-access-token and fetch the resource associated with it,"
59
- " for e.g. https://ossrdbms-aad.database.windows.net/.default"
52
+ class MySQLConnection(BaseConnection[MysqlConnection, Engine]):
53
+ def get_client(self) -> Engine:
54
+ """
55
+ Return the SQLAlchemy Engine for MySQL.
56
+ """
57
+ connection = self.service_connection
58
+
59
+ if isinstance(connection.authType, AzureConfigurationSource):
60
+ if not connection.authType.azureConfig:
61
+ raise ValueError("Azure Config is missing")
62
+ azure_client = AzureClient(connection.authType.azureConfig).create_client()
63
+ if not connection.authType.azureConfig.scopes:
64
+ raise ValueError(
65
+ "Azure Scopes are missing, please refer https://learn.microsoft.com/"
66
+ "en-gb/azure/mysql/flexible-server/how-to-azure-ad#2---retrieve-micr"
67
+ "osoft-entra-access-token and fetch the resource associated with it,"
68
+ " for e.g. https://ossrdbms-aad.database.windows.net/.default"
69
+ )
70
+ access_token_obj = azure_client.get_token(
71
+ *connection.authType.azureConfig.scopes.split(",")
60
72
  )
61
- access_token_obj = azure_client.get_token(
62
- *connection.authType.azureConfig.scopes.split(",")
73
+ connection.authType = BasicAuth(password=access_token_obj.token) # type: ignore
74
+ return create_generic_db_connection(
75
+ connection=connection,
76
+ get_connection_url_fn=get_connection_url_common,
77
+ get_connection_args_fn=get_connection_args_common,
63
78
  )
64
- connection.authType = BasicAuth(password=access_token_obj.token)
65
- return create_generic_db_connection(
66
- connection=connection,
67
- get_connection_url_fn=get_connection_url_common,
68
- get_connection_args_fn=get_connection_args_common,
69
- )
70
79
 
71
-
72
- def test_connection(
73
- metadata: OpenMetadata,
74
- engine: Engine,
75
- service_connection: MysqlConnection,
76
- automation_workflow: Optional[AutomationWorkflow] = None,
77
- timeout_seconds: Optional[int] = THREE_MIN,
78
- ) -> TestConnectionResult:
79
- """
80
- Test connection. This can be executed either as part
81
- of a metadata workflow or during an Automation Workflow
82
- """
83
- queries = {
84
- "GetQueries": MYSQL_TEST_GET_QUERIES
85
- if not service_connection.useSlowLogs
86
- else MYSQL_TEST_GET_QUERIES_SLOW_LOGS,
87
- }
88
- return test_connection_db_schema_sources(
89
- metadata=metadata,
90
- engine=engine,
91
- service_connection=service_connection,
92
- automation_workflow=automation_workflow,
93
- timeout_seconds=timeout_seconds,
94
- queries=queries,
95
- )
80
+ def test_connection(
81
+ self,
82
+ metadata: OpenMetadata,
83
+ automation_workflow: Optional[AutomationWorkflow] = None,
84
+ timeout_seconds: Optional[int] = THREE_MIN,
85
+ ) -> TestConnectionResult:
86
+ """
87
+ Test connection. This can be executed either as part
88
+ of a metadata workflow or during an Automation Workflow
89
+ """
90
+ queries = {
91
+ "GetQueries": MYSQL_TEST_GET_QUERIES
92
+ if not self.service_connection.useSlowLogs
93
+ else MYSQL_TEST_GET_QUERIES_SLOW_LOGS,
94
+ }
95
+ return test_connection_db_schema_sources(
96
+ metadata=metadata,
97
+ engine=self.get_client(),
98
+ service_connection=self.service_connection,
99
+ automation_workflow=automation_workflow,
100
+ timeout_seconds=timeout_seconds,
101
+ queries=queries,
102
+ )
@@ -1,3 +1,4 @@
1
+ from metadata.ingestion.source.database.mysql.connection import MySQLConnection
1
2
  from metadata.ingestion.source.database.mysql.lineage import MysqlLineageSource
2
3
  from metadata.ingestion.source.database.mysql.metadata import MysqlSource
3
4
  from metadata.ingestion.source.database.mysql.usage import MysqlUsageSource
@@ -7,4 +8,5 @@ ServiceSpec = DefaultDatabaseSpec(
7
8
  metadata_source_class=MysqlSource,
8
9
  lineage_source_class=MysqlLineageSource,
9
10
  usage_source_class=MysqlUsageSource,
11
+ connection_class=MySQLConnection,
10
12
  )
@@ -40,7 +40,11 @@ from metadata.generated.schema.entity.services.ingestionPipelines.status import
40
40
  from metadata.generated.schema.metadataIngestion.workflow import (
41
41
  Source as WorkflowSource,
42
42
  )
43
- from metadata.generated.schema.type.basic import EntityName, FullyQualifiedEntityName
43
+ from metadata.generated.schema.type.basic import (
44
+ EntityName,
45
+ FullyQualifiedEntityName,
46
+ Markdown,
47
+ )
44
48
  from metadata.ingestion.api.models import Either
45
49
  from metadata.ingestion.api.steps import InvalidSourceException
46
50
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
@@ -300,9 +304,15 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
300
304
  """List stored procedures"""
301
305
  if self.source_config.includeStoredProcedures:
302
306
  yield from self._get_stored_procedures_internal(
303
- POSTGRES_GET_STORED_PROCEDURES
307
+ POSTGRES_GET_STORED_PROCEDURES.format(
308
+ schema_name=self.context.get().database_schema
309
+ )
310
+ )
311
+ yield from self._get_stored_procedures_internal(
312
+ POSTGRES_GET_FUNCTIONS.format(
313
+ schema_name=self.context.get().database_schema
314
+ )
304
315
  )
305
- yield from self._get_stored_procedures_internal(POSTGRES_GET_FUNCTIONS)
306
316
 
307
317
  def yield_stored_procedure(
308
318
  self, stored_procedure
@@ -311,7 +321,9 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
311
321
  try:
312
322
  stored_procedure_request = CreateStoredProcedureRequest(
313
323
  name=EntityName(stored_procedure.name),
314
- description=None,
324
+ description=Markdown(stored_procedure.description)
325
+ if stored_procedure.description
326
+ else None,
315
327
  storedProcedureCode=StoredProcedureCode(
316
328
  language=STORED_PROC_LANGUAGE_MAP.get(stored_procedure.language),
317
329
  code=stored_procedure.definition,
@@ -24,3 +24,4 @@ class PostgresStoredProcedure(BaseModel):
24
24
  definition: str
25
25
  language: Optional[str] = None
26
26
  procedure_type: Optional[str] = Field(None, alias="procedure_type")
27
+ description: Optional[str] = Field(None, alias="description")
@@ -225,10 +225,12 @@ POSTGRES_GET_STORED_PROCEDURES = """
225
225
  proargtypes AS argument_types,
226
226
  prorettype::regtype AS return_type,
227
227
  prosrc AS definition,
228
- 'StoredProcedure' as procedure_type
228
+ 'StoredProcedure' as procedure_type,
229
+ obj_description(pg_proc.oid, 'pg_proc') AS description
229
230
  FROM pg_proc
230
231
  JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
231
- WHERE prokind = 'p';
232
+ WHERE prokind = 'p'
233
+ and pg_namespace.nspname = '{schema_name}';
232
234
  """
233
235
 
234
236
  POSTGRES_GET_FUNCTIONS = """
@@ -238,11 +240,12 @@ SELECT
238
240
  proargtypes AS argument_types,
239
241
  prorettype :: regtype AS return_type,
240
242
  prosrc AS definition,
241
- 'Function' as procedure_type
243
+ 'Function' as procedure_type,
244
+ obj_description(pg_proc.oid, 'pg_proc') AS description
242
245
  FROM
243
246
  pg_proc
244
247
  JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
245
248
  WHERE
246
249
  prokind = 'f'
247
- and pg_namespace.nspname NOT IN ('pg_catalog', 'information_schema');
250
+ and pg_namespace.nspname = '{schema_name}';
248
251
  """
@@ -20,13 +20,10 @@ from metadata.generated.schema.metadataIngestion.workflow import (
20
20
  )
21
21
  from metadata.generated.schema.type.tableQuery import TableQuery
22
22
  from metadata.ingestion.api.steps import Source
23
- from metadata.ingestion.connections.test_connections import (
24
- raise_test_connection_exception,
25
- )
26
23
  from metadata.ingestion.lineage.masker import masked_query_cache
27
24
  from metadata.ingestion.lineage.models import ConnectionTypeDialectMapper
28
25
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
29
- from metadata.ingestion.source.connections import get_test_connection_fn
26
+ from metadata.ingestion.source.connections import test_connection_common
30
27
  from metadata.utils.helpers import get_start_and_end, retry_with_docker_host
31
28
  from metadata.utils.logger import ingestion_logger
32
29
  from metadata.utils.ssl_manager import get_ssl_connection
@@ -134,6 +131,4 @@ class QueryParserSource(Source, ABC):
134
131
  masked_query_cache.clear()
135
132
 
136
133
  def test_connection(self) -> None:
137
- test_connection_fn = get_test_connection_fn(self.service_connection)
138
- result = test_connection_fn(self.metadata, self.engine, self.service_connection)
139
- raise_test_connection_exception(result)
134
+ test_connection_common(self.metadata, self.engine, self.service_connection)
@@ -40,7 +40,7 @@ from metadata.ingestion.connections.test_connections import (
40
40
  test_query,
41
41
  )
42
42
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
43
- from metadata.ingestion.source.connections import kill_active_connections
43
+ from metadata.ingestion.source.connections_utils import kill_active_connections
44
44
  from metadata.ingestion.source.database.redshift.queries import (
45
45
  REDSHIFT_GET_ALL_RELATIONS,
46
46
  REDSHIFT_GET_DATABASE_NAMES,
@@ -890,6 +890,7 @@ class SampleDataSource(
890
890
  tags=table["tags"],
891
891
  schemaDefinition=table.get("schemaDefinition"),
892
892
  sourceUrl=table.get("sourceUrl"),
893
+ tablePartition=table.get("tablePartition"),
893
894
  )
894
895
 
895
896
  yield Either(right=table_and_db)
@@ -1602,7 +1603,6 @@ class SampleDataSource(
1602
1603
  description=test_case["description"],
1603
1604
  testDefinition=test_case["testDefinitionName"],
1604
1605
  entityLink=test_case["entityLink"],
1605
- testSuite=suite.fullyQualifiedName.root,
1606
1606
  parameterValues=[
1607
1607
  TestCaseParameterValue(**param_values)
1608
1608
  for param_values in test_case["parameterValues"]
@@ -29,11 +29,8 @@ from metadata.generated.schema.metadataIngestion.workflow import (
29
29
  )
30
30
  from metadata.ingestion.api.models import Either
31
31
  from metadata.ingestion.api.steps import InvalidSourceException, Source
32
- from metadata.ingestion.connections.test_connections import (
33
- raise_test_connection_exception,
34
- )
35
32
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
36
- from metadata.ingestion.source.connections import get_test_connection_fn
33
+ from metadata.ingestion.source.connections import test_connection_common
37
34
  from metadata.ingestion.source.database.saphana.cdata_parser import (
38
35
  ParsedLineage,
39
36
  parse_registry,
@@ -158,6 +155,4 @@ class SaphanaLineageSource(Source):
158
155
  )
159
156
 
160
157
  def test_connection(self) -> None:
161
- test_connection_fn = get_test_connection_fn(self.service_connection)
162
- result = test_connection_fn(self.metadata, self.engine, self.service_connection)
163
- raise_test_connection_exception(result)
158
+ test_connection_common(self.metadata, self.engine, self.service_connection)
@@ -70,12 +70,9 @@ from metadata.generated.schema.type.entityReference import EntityReference
70
70
  from metadata.ingestion.api.common import Entity
71
71
  from metadata.ingestion.api.models import Either, StackTraceError
72
72
  from metadata.ingestion.api.steps import InvalidSourceException
73
- from metadata.ingestion.connections.test_connections import (
74
- raise_test_connection_exception,
75
- )
76
73
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
77
74
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
78
- from metadata.ingestion.source.connections import get_connection, get_test_connection_fn
75
+ from metadata.ingestion.source.connections import get_connection, test_connection_common
79
76
  from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser
80
77
  from metadata.ingestion.source.database.database_service import DatabaseServiceSource
81
78
  from metadata.ingestion.source.database.sas.client import SASClient
@@ -900,8 +897,6 @@ class SasSource(
900
897
  pass
901
898
 
902
899
  def test_connection(self) -> None:
903
- test_connection_fn = get_test_connection_fn(self.service_connection)
904
- result = test_connection_fn(
900
+ test_connection_common(
905
901
  self.metadata, self.connection_obj, self.service_connection
906
902
  )
907
- raise_test_connection_exception(result)