openmetadata-ingestion 1.8.10.0__py3-none-any.whl → 1.9.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 (845) hide show
  1. metadata/__init__.py +2 -0
  2. metadata/data_quality/validations/models.py +2 -2
  3. metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +78 -5
  4. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +10 -63
  5. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +4 -1
  6. metadata/examples/workflows/grafana.yaml +115 -0
  7. metadata/generated/schema/analytics/__init__.py +1 -1
  8. metadata/generated/schema/analytics/basic.py +1 -1
  9. metadata/generated/schema/analytics/reportData.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  16. metadata/generated/schema/analytics/webAnalyticEvent.py +5 -5
  17. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  21. metadata/generated/schema/api/__init__.py +1 -1
  22. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  23. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  24. metadata/generated/schema/api/analytics/__init__.py +1 -1
  25. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +6 -5
  26. metadata/generated/schema/api/automations/__init__.py +1 -1
  27. metadata/generated/schema/api/automations/createWorkflow.py +6 -5
  28. metadata/generated/schema/api/bulkAssets.py +1 -1
  29. metadata/generated/schema/api/classification/__init__.py +1 -1
  30. metadata/generated/schema/api/classification/createClassification.py +6 -5
  31. metadata/generated/schema/api/classification/createTag.py +4 -4
  32. metadata/generated/schema/api/classification/loadTags.py +1 -1
  33. metadata/generated/schema/api/createBot.py +5 -5
  34. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  35. metadata/generated/schema/api/createType.py +6 -5
  36. metadata/generated/schema/api/data/__init__.py +1 -1
  37. metadata/generated/schema/api/data/createAPICollection.py +4 -4
  38. metadata/generated/schema/api/data/createAPIEndpoint.py +4 -4
  39. metadata/generated/schema/api/data/createChart.py +12 -4
  40. metadata/generated/schema/api/data/createContainer.py +4 -4
  41. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  42. metadata/generated/schema/api/data/createDashboard.py +4 -4
  43. metadata/generated/schema/api/data/createDashboardDataModel.py +4 -4
  44. metadata/generated/schema/api/data/createDataContract.py +11 -5
  45. metadata/generated/schema/api/data/createDatabase.py +4 -4
  46. metadata/generated/schema/api/data/createDatabaseSchema.py +4 -4
  47. metadata/generated/schema/api/data/createDirectory.py +105 -0
  48. metadata/generated/schema/api/data/createFile.py +104 -0
  49. metadata/generated/schema/api/data/createGlossary.py +4 -4
  50. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  51. metadata/generated/schema/api/data/createMetric.py +4 -4
  52. metadata/generated/schema/api/data/createMlModel.py +4 -4
  53. metadata/generated/schema/api/data/createPipeline.py +4 -4
  54. metadata/generated/schema/api/data/createQuery.py +5 -4
  55. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  56. metadata/generated/schema/api/data/createSearchIndex.py +4 -4
  57. metadata/generated/schema/api/data/createSpreadsheet.py +111 -0
  58. metadata/generated/schema/api/data/createStoredProcedure.py +4 -4
  59. metadata/generated/schema/api/data/createTable.py +5 -4
  60. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  61. metadata/generated/schema/api/data/createTopic.py +5 -4
  62. metadata/generated/schema/api/data/createWorksheet.py +105 -0
  63. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  64. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  65. metadata/generated/schema/api/data/updateColumn.py +1 -1
  66. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  67. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +5 -4
  68. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  69. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  70. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  71. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +5 -5
  72. metadata/generated/schema/api/docStore/__init__.py +1 -1
  73. metadata/generated/schema/api/docStore/createDocument.py +6 -5
  74. metadata/generated/schema/api/domains/__init__.py +1 -1
  75. metadata/generated/schema/api/domains/createDataProduct.py +4 -4
  76. metadata/generated/schema/api/domains/createDomain.py +1 -1
  77. metadata/generated/schema/api/entityRelationship/__init__.py +3 -0
  78. metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +12 -0
  79. metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +57 -0
  80. metadata/generated/schema/api/entityRelationship/relationshipRef.py +32 -0
  81. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +47 -0
  82. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +47 -0
  83. metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +20 -0
  84. metadata/generated/schema/api/feed/__init__.py +1 -1
  85. metadata/generated/schema/api/feed/closeTask.py +1 -1
  86. metadata/generated/schema/api/feed/createPost.py +1 -1
  87. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  88. metadata/generated/schema/api/feed/createThread.py +6 -2
  89. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  90. metadata/generated/schema/api/feed/threadCount.py +1 -1
  91. metadata/generated/schema/api/governance/__init__.py +1 -1
  92. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  93. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  94. metadata/generated/schema/api/lineage/__init__.py +1 -1
  95. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  96. metadata/generated/schema/api/lineage/esLineageData.py +4 -1
  97. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  98. metadata/generated/schema/api/lineage/nodeInformation.py +4 -1
  99. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  100. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  101. metadata/generated/schema/api/mcp/__init__.py +1 -1
  102. metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
  103. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  104. metadata/generated/schema/api/policies/__init__.py +1 -1
  105. metadata/generated/schema/api/policies/createPolicy.py +6 -5
  106. metadata/generated/schema/api/scim/__init__.py +1 -1
  107. metadata/generated/schema/api/scim/scimGroup.py +1 -1
  108. metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
  109. metadata/generated/schema/api/scim/scimUser.py +1 -1
  110. metadata/generated/schema/api/search/__init__.py +1 -1
  111. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  112. metadata/generated/schema/api/services/__init__.py +1 -1
  113. metadata/generated/schema/api/services/createApiService.py +4 -4
  114. metadata/generated/schema/api/services/createDashboardService.py +4 -4
  115. metadata/generated/schema/api/services/createDatabaseService.py +4 -4
  116. metadata/generated/schema/api/services/createDriveService.py +58 -0
  117. metadata/generated/schema/api/services/createMessagingService.py +4 -4
  118. metadata/generated/schema/api/services/createMetadataService.py +5 -4
  119. metadata/generated/schema/api/services/createMlModelService.py +4 -4
  120. metadata/generated/schema/api/services/createPipelineService.py +4 -4
  121. metadata/generated/schema/api/services/createSearchService.py +4 -4
  122. metadata/generated/schema/api/services/createSecurityService.py +4 -4
  123. metadata/generated/schema/api/services/createStorageService.py +4 -4
  124. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  125. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +13 -5
  126. metadata/generated/schema/api/setOwner.py +1 -1
  127. metadata/generated/schema/api/teams/__init__.py +1 -1
  128. metadata/generated/schema/api/teams/createPersona.py +12 -4
  129. metadata/generated/schema/api/teams/createRole.py +5 -4
  130. metadata/generated/schema/api/teams/createTeam.py +1 -1
  131. metadata/generated/schema/api/teams/createUser.py +1 -1
  132. metadata/generated/schema/api/tests/__init__.py +1 -1
  133. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  134. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  135. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  136. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  137. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  138. metadata/generated/schema/api/tests/createTestDefinition.py +5 -4
  139. metadata/generated/schema/api/tests/createTestSuite.py +13 -5
  140. metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +27 -0
  141. metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
  142. metadata/generated/schema/api/voteRequest.py +1 -1
  143. metadata/generated/schema/auth/__init__.py +1 -1
  144. metadata/generated/schema/auth/basicAuth.py +1 -1
  145. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  146. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  147. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  148. metadata/generated/schema/auth/emailRequest.py +1 -1
  149. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  150. metadata/generated/schema/auth/generateToken.py +1 -1
  151. metadata/generated/schema/auth/jwtAuth.py +1 -1
  152. metadata/generated/schema/auth/loginRequest.py +1 -1
  153. metadata/generated/schema/auth/logoutRequest.py +1 -1
  154. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  155. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  156. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  157. metadata/generated/schema/auth/refreshToken.py +1 -1
  158. metadata/generated/schema/auth/registrationRequest.py +1 -1
  159. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  160. metadata/generated/schema/auth/revokeToken.py +1 -1
  161. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  162. metadata/generated/schema/auth/ssoAuth.py +1 -1
  163. metadata/generated/schema/auth/supportToken.py +1 -1
  164. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  165. metadata/generated/schema/configuration/__init__.py +1 -1
  166. metadata/generated/schema/configuration/aiPlatformConfiguration.py +58 -0
  167. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  168. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  169. metadata/generated/schema/configuration/authConfig.py +1 -1
  170. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  171. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  172. metadata/generated/schema/configuration/cacheConfiguration.py +137 -0
  173. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/elasticSearchConfiguration.py +18 -1
  176. metadata/generated/schema/configuration/entityRulesSettings.py +24 -0
  177. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  178. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  179. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  183. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  184. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  185. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  186. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  187. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  188. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  189. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  190. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  192. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/opsConfig.py +1 -1
  195. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/searchSettings.py +1 -1
  198. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  200. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  201. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  202. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  203. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  204. metadata/generated/schema/dataInsight/__init__.py +1 -1
  205. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  206. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  207. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  208. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  209. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  210. metadata/generated/schema/dataInsight/custom/lineChart.py +5 -1
  211. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  212. metadata/generated/schema/dataInsight/dataInsightChart.py +5 -5
  213. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  214. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  215. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  216. metadata/generated/schema/dataInsight/kpi/kpi.py +4 -4
  217. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  218. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  219. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  220. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  221. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  222. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  223. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  224. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  225. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  226. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  227. metadata/generated/schema/email/__init__.py +1 -1
  228. metadata/generated/schema/email/emailRequest.py +1 -1
  229. metadata/generated/schema/email/emailTemplate.py +1 -1
  230. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  231. metadata/generated/schema/email/smtpSettings.py +1 -1
  232. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  233. metadata/generated/schema/entity/__init__.py +1 -1
  234. metadata/generated/schema/entity/applications/__init__.py +1 -1
  235. metadata/generated/schema/entity/applications/app.py +4 -4
  236. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  237. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +5 -5
  246. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +4 -4
  251. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +2 -2
  253. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  277. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  278. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  279. metadata/generated/schema/entity/applications/createAppRequest.py +6 -5
  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 +5 -11
  284. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +5 -4
  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 +1 -1
  288. metadata/generated/schema/entity/automations/workflow.py +5 -5
  289. metadata/generated/schema/entity/bot.py +5 -5
  290. metadata/generated/schema/entity/classification/__init__.py +1 -1
  291. metadata/generated/schema/entity/classification/classification.py +5 -5
  292. metadata/generated/schema/entity/classification/tag.py +4 -4
  293. metadata/generated/schema/entity/data/__init__.py +1 -1
  294. metadata/generated/schema/entity/data/apiCollection.py +4 -4
  295. metadata/generated/schema/entity/data/apiEndpoint.py +4 -4
  296. metadata/generated/schema/entity/data/chart.py +16 -4
  297. metadata/generated/schema/entity/data/container.py +4 -4
  298. metadata/generated/schema/entity/data/dashboard.py +4 -4
  299. metadata/generated/schema/entity/data/dashboardDataModel.py +4 -4
  300. metadata/generated/schema/entity/data/dataContract.py +40 -53
  301. metadata/generated/schema/entity/data/database.py +4 -4
  302. metadata/generated/schema/entity/data/databaseSchema.py +4 -4
  303. metadata/generated/schema/entity/data/directory.py +173 -0
  304. metadata/generated/schema/entity/data/file.py +184 -0
  305. metadata/generated/schema/entity/data/glossary.py +4 -4
  306. metadata/generated/schema/entity/data/glossaryTerm.py +4 -4
  307. metadata/generated/schema/entity/data/metric.py +4 -5
  308. metadata/generated/schema/entity/data/mlmodel.py +4 -4
  309. metadata/generated/schema/entity/data/pipeline.py +4 -4
  310. metadata/generated/schema/entity/data/query.py +4 -4
  311. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  312. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  313. metadata/generated/schema/entity/data/report.py +4 -4
  314. metadata/generated/schema/entity/data/searchIndex.py +4 -4
  315. metadata/generated/schema/entity/data/spreadsheet.py +209 -0
  316. metadata/generated/schema/entity/data/storedProcedure.py +4 -4
  317. metadata/generated/schema/entity/data/table.py +50 -4
  318. metadata/generated/schema/entity/data/topic.py +4 -4
  319. metadata/generated/schema/entity/data/worksheet.py +168 -0
  320. metadata/generated/schema/entity/datacontract/__init__.py +3 -0
  321. metadata/generated/schema/entity/datacontract/dataContractResult.py +74 -0
  322. metadata/generated/schema/entity/datacontract/qualityValidation.py +31 -0
  323. metadata/generated/schema/entity/datacontract/schemaValidation.py +31 -0
  324. metadata/generated/schema/entity/datacontract/semanticsValidation.py +39 -0
  325. metadata/generated/schema/entity/datacontract/slaValidation.py +32 -0
  326. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  327. metadata/generated/schema/entity/docStore/document.py +5 -5
  328. metadata/generated/schema/entity/domains/__init__.py +1 -1
  329. metadata/generated/schema/entity/domains/dataProduct.py +5 -5
  330. metadata/generated/schema/entity/domains/domain.py +1 -1
  331. metadata/generated/schema/entity/events/__init__.py +1 -1
  332. metadata/generated/schema/entity/events/webhook.py +1 -1
  333. metadata/generated/schema/entity/feed/__init__.py +1 -1
  334. metadata/generated/schema/entity/feed/assets.py +1 -1
  335. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  336. metadata/generated/schema/entity/feed/description.py +1 -1
  337. metadata/generated/schema/entity/feed/domain.py +8 -8
  338. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  339. metadata/generated/schema/entity/feed/owner.py +1 -1
  340. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  341. metadata/generated/schema/entity/feed/tag.py +1 -1
  342. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  343. metadata/generated/schema/entity/feed/thread.py +4 -3
  344. metadata/generated/schema/entity/policies/__init__.py +1 -1
  345. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  346. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  347. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  348. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  349. metadata/generated/schema/entity/policies/filters.py +1 -1
  350. metadata/generated/schema/entity/policies/policy.py +4 -4
  351. metadata/generated/schema/entity/services/__init__.py +1 -1
  352. metadata/generated/schema/entity/services/apiService.py +4 -4
  353. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  355. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  358. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  359. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  360. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  361. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  362. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +77 -0
  365. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  373. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  374. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  375. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/epicConnection.py +80 -0
  419. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/ssasConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/drive/__init__.py +3 -0
  458. metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +45 -0
  459. metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +82 -0
  460. metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +79 -0
  461. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  462. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  468. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  469. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  476. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  482. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  491. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  495. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  496. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  497. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  498. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  499. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  500. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  501. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  502. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  503. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  504. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  505. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  506. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  507. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  508. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  509. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  510. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  511. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  512. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  513. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  514. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  515. metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
  516. metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
  517. metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
  518. metadata/generated/schema/entity/services/connections/security/rangerConnection.py +1 -1
  519. metadata/generated/schema/entity/services/connections/serviceConnection.py +4 -1
  520. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  521. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  522. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  523. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  524. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  525. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +5 -5
  526. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  527. metadata/generated/schema/entity/services/dashboardService.py +7 -4
  528. metadata/generated/schema/entity/services/databaseService.py +7 -4
  529. metadata/generated/schema/entity/services/driveService.py +143 -0
  530. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  531. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +11 -4
  532. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  533. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  534. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  535. metadata/generated/schema/entity/services/messagingService.py +4 -4
  536. metadata/generated/schema/entity/services/metadataService.py +4 -4
  537. metadata/generated/schema/entity/services/mlmodelService.py +4 -4
  538. metadata/generated/schema/entity/services/pipelineService.py +4 -4
  539. metadata/generated/schema/entity/services/searchService.py +4 -4
  540. metadata/generated/schema/entity/services/securityService.py +4 -4
  541. metadata/generated/schema/entity/services/serviceType.py +2 -1
  542. metadata/generated/schema/entity/services/storageService.py +4 -4
  543. metadata/generated/schema/entity/teams/__init__.py +1 -1
  544. metadata/generated/schema/entity/teams/persona.py +11 -4
  545. metadata/generated/schema/entity/teams/role.py +5 -5
  546. metadata/generated/schema/entity/teams/team.py +1 -1
  547. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  548. metadata/generated/schema/entity/teams/user.py +21 -3
  549. metadata/generated/schema/entity/type.py +5 -11
  550. metadata/generated/schema/entity/utils/__init__.py +1 -1
  551. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  552. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  553. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  554. metadata/generated/schema/events/__init__.py +1 -1
  555. metadata/generated/schema/events/alertMetrics.py +1 -1
  556. metadata/generated/schema/events/api/__init__.py +1 -1
  557. metadata/generated/schema/events/api/createEventSubscription.py +5 -4
  558. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  559. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  560. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  561. metadata/generated/schema/events/api/typedEvent.py +1 -1
  562. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  563. metadata/generated/schema/events/eventFilterRule.py +1 -1
  564. metadata/generated/schema/events/eventSubscription.py +5 -5
  565. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  566. metadata/generated/schema/events/failedEvent.py +1 -1
  567. metadata/generated/schema/events/failedEventResponse.py +1 -1
  568. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  569. metadata/generated/schema/events/statusContext.py +1 -1
  570. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  571. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  572. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  573. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  574. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  575. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  576. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  577. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  578. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  579. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  580. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  581. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  582. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  583. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  584. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  585. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  586. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  587. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  588. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  589. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  590. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  591. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  592. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  593. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  594. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +9 -1
  595. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  596. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  597. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  598. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  599. metadata/generated/schema/governance/workflows/workflowInstanceState.py +5 -1
  600. metadata/generated/schema/jobs/__init__.py +1 -1
  601. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  602. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  603. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  604. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  605. metadata/generated/schema/metadataIngestion/application.py +1 -1
  606. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  607. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  608. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  609. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  610. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  611. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +25 -3
  612. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  613. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  614. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  615. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  616. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  617. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  618. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  619. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  620. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  621. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  622. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  623. metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +165 -0
  624. metadata/generated/schema/metadataIngestion/engine/__init__.py +3 -0
  625. metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +23 -0
  626. metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +43 -0
  627. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  628. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  629. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  630. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  631. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  632. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  633. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  634. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  635. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  636. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  637. metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.py +1 -1
  638. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  639. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  640. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  641. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  642. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  643. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  644. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  645. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  646. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  647. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  648. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  649. metadata/generated/schema/metadataIngestion/workflow.py +3 -1
  650. metadata/generated/schema/monitoring/__init__.py +1 -1
  651. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  652. metadata/generated/schema/scim/__init__.py +1 -1
  653. metadata/generated/schema/scim/scimConfiguration.py +1 -1
  654. metadata/generated/schema/search/__init__.py +1 -1
  655. metadata/generated/schema/search/aggregationRequest.py +1 -1
  656. metadata/generated/schema/search/searchRequest.py +1 -1
  657. metadata/generated/schema/security/__init__.py +1 -1
  658. metadata/generated/schema/security/client/__init__.py +1 -1
  659. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  660. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  661. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  662. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  663. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  664. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  665. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  666. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  667. metadata/generated/schema/security/credentials/__init__.py +1 -1
  668. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  669. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  670. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  671. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  672. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  673. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  674. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  675. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  676. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  677. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  678. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  679. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  680. metadata/generated/schema/security/credentials/kubernetesCredentials.py +40 -0
  681. metadata/generated/schema/security/sasl/__init__.py +1 -1
  682. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  683. metadata/generated/schema/security/secrets/__init__.py +1 -1
  684. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  685. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  686. metadata/generated/schema/security/secrets/secretsManagerProvider.py +2 -1
  687. metadata/generated/schema/security/securityConfiguration.py +1 -1
  688. metadata/generated/schema/security/ssl/__init__.py +1 -1
  689. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  690. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  691. metadata/generated/schema/settings/__init__.py +1 -1
  692. metadata/generated/schema/settings/settings.py +4 -1
  693. metadata/generated/schema/system/__init__.py +1 -1
  694. metadata/generated/schema/system/entityError.py +1 -1
  695. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  696. metadata/generated/schema/system/indexingError.py +1 -1
  697. metadata/generated/schema/system/limitsResponse.py +1 -1
  698. metadata/generated/schema/system/ui/__init__.py +1 -1
  699. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  700. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  701. metadata/generated/schema/system/ui/page.py +5 -4
  702. metadata/generated/schema/system/ui/tab.py +1 -1
  703. metadata/generated/schema/system/ui/uiCustomization.py +9 -2
  704. metadata/generated/schema/system/validationResponse.py +1 -1
  705. metadata/generated/schema/tests/__init__.py +1 -1
  706. metadata/generated/schema/tests/assigned.py +1 -1
  707. metadata/generated/schema/tests/basic.py +1 -1
  708. metadata/generated/schema/tests/customMetric.py +1 -1
  709. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  710. metadata/generated/schema/tests/resolved.py +1 -1
  711. metadata/generated/schema/tests/testCase.py +4 -4
  712. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  713. metadata/generated/schema/tests/testDefinition.py +5 -5
  714. metadata/generated/schema/tests/testSuite.py +11 -4
  715. metadata/generated/schema/type/__init__.py +1 -1
  716. metadata/generated/schema/type/apiSchema.py +1 -1
  717. metadata/generated/schema/type/assetCertification.py +1 -1
  718. metadata/generated/schema/type/auditLog.py +1 -1
  719. metadata/generated/schema/type/basic.py +43 -1
  720. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  721. metadata/generated/schema/type/changeEvent.py +5 -7
  722. metadata/generated/schema/type/changeEventType.py +1 -1
  723. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  724. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  725. metadata/generated/schema/type/contractExecutionStatus.py +16 -0
  726. metadata/generated/schema/type/csvDocumentation.py +1 -1
  727. metadata/generated/schema/type/csvErrorType.py +1 -1
  728. metadata/generated/schema/type/csvFile.py +1 -1
  729. metadata/generated/schema/type/csvImportResult.py +1 -1
  730. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  731. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  732. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  733. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  734. metadata/generated/schema/type/customProperty.py +1 -1
  735. metadata/generated/schema/type/dailyCount.py +1 -1
  736. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  737. metadata/generated/schema/type/entityHierarchy.py +1 -1
  738. metadata/generated/schema/type/entityHistory.py +1 -1
  739. metadata/generated/schema/type/entityLineage.py +1 -1
  740. metadata/generated/schema/type/entityReference.py +1 -1
  741. metadata/generated/schema/type/entityReferenceList.py +1 -1
  742. metadata/generated/schema/type/{entityRelationship.py → entityRelationship/__init__.py} +2 -2
  743. metadata/generated/schema/type/entityRelationship/nodeInformation.py +25 -0
  744. metadata/generated/schema/type/entityUsage.py +1 -1
  745. metadata/generated/schema/type/filterPattern.py +1 -1
  746. metadata/generated/schema/type/function.py +1 -1
  747. metadata/generated/schema/type/include.py +1 -1
  748. metadata/generated/schema/type/jdbcConnection.py +1 -1
  749. metadata/generated/schema/type/layerPaging.py +24 -0
  750. metadata/generated/schema/type/lifeCycle.py +1 -1
  751. metadata/generated/schema/type/paging.py +1 -1
  752. metadata/generated/schema/type/personaPreferences.py +48 -0
  753. metadata/generated/schema/type/profile.py +1 -1
  754. metadata/generated/schema/type/queryParserData.py +1 -1
  755. metadata/generated/schema/type/reaction.py +1 -1
  756. metadata/generated/schema/type/schedule.py +1 -1
  757. metadata/generated/schema/type/schema.py +1 -1
  758. metadata/generated/schema/type/tableQuery.py +1 -1
  759. metadata/generated/schema/type/tableUsageCount.py +1 -1
  760. metadata/generated/schema/type/tagLabel.py +1 -1
  761. metadata/generated/schema/type/usageDetails.py +1 -1
  762. metadata/generated/schema/type/usageRequest.py +1 -1
  763. metadata/generated/schema/type/votes.py +1 -1
  764. metadata/ingestion/api/parser.py +13 -0
  765. metadata/ingestion/bulksink/metadata_usage.py +2 -2
  766. metadata/ingestion/connections/connection.py +18 -1
  767. metadata/ingestion/lineage/sql_lineage.py +98 -65
  768. metadata/ingestion/models/custom_properties.py +3 -3
  769. metadata/ingestion/models/patch_request.py +36 -4
  770. metadata/ingestion/ometa/mixins/data_contract_mixin.py +205 -0
  771. metadata/ingestion/ometa/mixins/lineage_mixin.py +1 -1
  772. metadata/ingestion/ometa/mixins/patch_mixin.py +131 -55
  773. metadata/ingestion/ometa/ometa_api.py +4 -1
  774. metadata/ingestion/ometa/routes.py +32 -0
  775. metadata/ingestion/sink/metadata_rest.py +51 -0
  776. metadata/ingestion/source/api/rest/connection.py +12 -6
  777. metadata/ingestion/source/api/rest/metadata.py +3 -1
  778. metadata/ingestion/source/api/rest/parser.py +103 -0
  779. metadata/ingestion/source/connections.py +1 -1
  780. metadata/ingestion/source/dashboard/grafana/__init__.py +10 -0
  781. metadata/ingestion/source/dashboard/grafana/client.py +223 -0
  782. metadata/ingestion/source/dashboard/grafana/connection.py +66 -0
  783. metadata/ingestion/source/dashboard/grafana/metadata.py +476 -0
  784. metadata/ingestion/source/dashboard/grafana/models.py +159 -0
  785. metadata/ingestion/source/dashboard/grafana/service_spec.py +17 -0
  786. metadata/ingestion/source/dashboard/microstrategy/metadata.py +1 -1
  787. metadata/ingestion/source/dashboard/powerbi/metadata.py +9 -9
  788. metadata/ingestion/source/dashboard/powerbi/models.py +1 -1
  789. metadata/ingestion/source/dashboard/superset/connection.py +5 -7
  790. metadata/ingestion/source/dashboard/tableau/client.py +4 -4
  791. metadata/ingestion/source/dashboard/tableau/metadata.py +1 -0
  792. metadata/ingestion/source/database/datalake/connection.py +51 -73
  793. metadata/ingestion/source/database/datalake/metadata.py +3 -4
  794. metadata/ingestion/source/database/datalake/service_spec.py +2 -0
  795. metadata/ingestion/source/database/dbt/constants.py +17 -1
  796. metadata/ingestion/source/database/dbt/dbt_service.py +30 -1
  797. metadata/ingestion/source/database/dbt/metadata.py +136 -1
  798. metadata/ingestion/source/database/deltalake/clients/pyspark.py +1 -1
  799. metadata/ingestion/source/database/exasol/connection.py +14 -3
  800. metadata/ingestion/source/database/exasol/queries.py +13 -0
  801. metadata/ingestion/source/database/lineage_source.py +18 -2
  802. metadata/ingestion/source/database/mysql/connection.py +13 -19
  803. metadata/ingestion/source/database/oracle/metadata.py +1 -1
  804. metadata/ingestion/source/database/oracle/utils.py +19 -0
  805. metadata/ingestion/source/database/postgres/connection.py +51 -48
  806. metadata/ingestion/source/database/postgres/service_spec.py +2 -0
  807. metadata/ingestion/source/database/sample_data.py +661 -2
  808. metadata/ingestion/source/database/snowflake/connection.py +196 -162
  809. metadata/ingestion/source/database/snowflake/service_spec.py +2 -0
  810. metadata/ingestion/source/database/stored_procedures_mixin.py +9 -1
  811. metadata/ingestion/source/database/trino/connection.py +279 -125
  812. metadata/ingestion/source/database/trino/service_spec.py +2 -0
  813. metadata/ingestion/source/database/unitycatalog/connection.py +20 -3
  814. metadata/ingestion/source/database/unitycatalog/queries.py +37 -1
  815. metadata/ingestion/source/database/unitycatalog/query_parser.py +4 -0
  816. metadata/ingestion/source/database/unitycatalog/usage.py +21 -35
  817. metadata/ingestion/source/drive/drive_service.py +648 -0
  818. metadata/ingestion/source/drives/__init__.py +13 -0
  819. metadata/ingestion/source/pipeline/airflow/connection.py +8 -6
  820. metadata/ingestion/source/pipeline/airflow/metadata.py +33 -10
  821. metadata/ingestion/source/pipeline/fivetran/metadata.py +2 -2
  822. metadata/profiler/processor/processor.py +18 -3
  823. metadata/profiler/source/database/base/profiler_resolver.py +5 -2
  824. metadata/profiler/source/database/base/profiler_source.py +8 -1
  825. metadata/profiler/source/profiler_source_interface.py +11 -2
  826. metadata/sampler/pandas/sampler.py +1 -1
  827. metadata/sampler/processor.py +19 -3
  828. metadata/sampler/sampler_interface.py +7 -0
  829. metadata/utils/credentials.py +35 -0
  830. metadata/utils/db_utils.py +12 -5
  831. metadata/utils/filters.py +60 -0
  832. metadata/utils/fqn.py +79 -0
  833. metadata/utils/helpers.py +6 -1
  834. metadata/utils/logger.py +9 -0
  835. metadata/utils/metadata_service_helper.py +1 -1
  836. metadata/utils/secrets/kubernetes_secrets_manager.py +176 -0
  837. metadata/utils/secrets/secrets_manager_factory.py +3 -0
  838. metadata/workflow/ingestion.py +15 -2
  839. {openmetadata_ingestion-1.8.10.0.dist-info → openmetadata_ingestion-1.9.1.0.dist-info}/METADATA +543 -536
  840. {openmetadata_ingestion-1.8.10.0.dist-info → openmetadata_ingestion-1.9.1.0.dist-info}/RECORD +844 -790
  841. metadata/ingestion/source/database/extended_sample_data.py +0 -534
  842. {openmetadata_ingestion-1.8.10.0.dist-info → openmetadata_ingestion-1.9.1.0.dist-info}/LICENSE +0 -0
  843. {openmetadata_ingestion-1.8.10.0.dist-info → openmetadata_ingestion-1.9.1.0.dist-info}/WHEEL +0 -0
  844. {openmetadata_ingestion-1.8.10.0.dist-info → openmetadata_ingestion-1.9.1.0.dist-info}/entry_points.txt +0 -0
  845. {openmetadata_ingestion-1.8.10.0.dist-info → openmetadata_ingestion-1.9.1.0.dist-info}/top_level.txt +0 -0
@@ -75,70 +75,71 @@ search_cache = LRUCache(LRU_CACHE_SIZE)
75
75
 
76
76
  def search_table_entities(
77
77
  metadata: OpenMetadata,
78
- service_name: str,
78
+ service_names: Union[str, List[str]],
79
79
  database: Optional[str],
80
80
  database_schema: Optional[str],
81
81
  table: str,
82
82
  ) -> Optional[List[Table]]:
83
83
  """
84
84
  Method to get table entity from database, database_schema & table name.
85
-
86
- It will try to search first in ES and doing an extra call to get Table entities
87
- with the needed fields like columns for column lineage.
88
-
89
- If the ES result is empty, it will try by running
90
- a request against the API to find the Entity.
85
+ Now supports searching across multiple services (cross-database lineage).
91
86
 
92
87
  Args:
93
88
  metadata: OMeta client
94
- service_name: service name
89
+ service_names: service name or list of service names (current + cross db)
95
90
  database: database name
96
91
  database_schema: schema name
97
92
  table: table name
98
93
 
99
94
  Returns:
100
- A list of Table entities, otherwise, None
95
+ A list of Table entities from the first service where found, otherwise None
101
96
  """
102
- search_tuple = (service_name, database, database_schema, table)
103
- if search_tuple in search_cache:
104
- return search_cache.get(search_tuple)
105
- try:
106
- table_entities: Optional[List[Table]] = []
107
- # search on ES first
108
- fqn_search_string = build_es_fqn_search_string(
109
- database, database_schema, service_name, table
110
- )
111
- es_result_entities = metadata.es_search_from_fqn(
112
- entity_type=Table,
113
- fqn_search_string=fqn_search_string,
114
- )
115
- if es_result_entities:
116
- table_entities = es_result_entities
117
- else:
118
- # build FQNs and search with the API in case ES response is empty
119
- table_fqns = fqn.build(
120
- metadata,
97
+ if isinstance(service_names, str):
98
+ service_names = [service_names]
99
+ for service_name in service_names:
100
+ search_tuple = (service_name, database, database_schema, table)
101
+ if search_tuple in search_cache:
102
+ result = search_cache.get(search_tuple)
103
+ if result:
104
+ return result
105
+ try:
106
+ table_entities: Optional[List[Table]] = []
107
+ # search on ES first
108
+ fqn_search_string = build_es_fqn_search_string(
109
+ database, database_schema, service_name, table
110
+ )
111
+ es_result_entities = metadata.es_search_from_fqn(
121
112
  entity_type=Table,
122
- service_name=service_name,
123
- database_name=database,
124
- schema_name=database_schema,
125
- table_name=table,
126
- fetch_multiple_entities=True,
127
- skip_es_search=True,
113
+ fqn_search_string=fqn_search_string,
128
114
  )
129
- for table_fqn in table_fqns or []:
130
- table_entity: Table = metadata.get_by_name(Table, fqn=table_fqn)
131
- if table_entity:
132
- table_entities.append(table_entity)
133
- # added the search tuple to the cache
134
- search_cache.put(search_tuple, table_entities)
135
- return table_entities
136
- except Exception as exc:
137
- logger.debug(traceback.format_exc())
138
- logger.error(
139
- f"Error searching for table entities for service [{service_name}]: {exc}"
140
- )
141
- return None
115
+ if es_result_entities:
116
+ table_entities = es_result_entities
117
+ else:
118
+ # build FQNs and search with the API in case ES response is empty
119
+ table_fqns = fqn.build(
120
+ metadata,
121
+ entity_type=Table,
122
+ service_name=service_name,
123
+ database_name=database,
124
+ schema_name=database_schema,
125
+ table_name=table,
126
+ fetch_multiple_entities=True,
127
+ skip_es_search=True,
128
+ )
129
+ for table_fqn in table_fqns or []:
130
+ table_entity: Table = metadata.get_by_name(Table, fqn=table_fqn)
131
+ if table_entity:
132
+ table_entities.append(table_entity)
133
+ # added the search tuple to the cache
134
+ search_cache.put(search_tuple, table_entities)
135
+ if table_entities:
136
+ return table_entities
137
+ except Exception as exc:
138
+ logger.debug(traceback.format_exc())
139
+ logger.error(
140
+ f"Error searching for table entities for service [{service_name}]: {exc}"
141
+ )
142
+ return None
142
143
 
143
144
 
144
145
  def get_table_fqn_from_query_name(
@@ -360,18 +361,18 @@ def get_source_table_names(
360
361
 
361
362
  def get_table_entities_from_query(
362
363
  metadata: OpenMetadata,
363
- service_name: str,
364
+ service_names: Union[str, List[str]],
364
365
  database_name: str,
365
366
  database_schema: str,
366
367
  table_name: str,
368
+ schema_fallback: bool = False,
367
369
  ) -> Optional[List[Table]]:
368
370
  """
369
371
  Fetch data from API and ES with a fallback strategy.
370
372
 
371
373
  If the sys data is incorrect, use the table name ingredients.
372
374
 
373
- :param metadata: OpenMetadata client
374
- :param service_name: Service being ingested.
375
+ :param service_names: Service(s) being ingested (current + cross db)
375
376
  :param database_name: Name of the database informed on db sys results
376
377
  :param database_schema: Name of the schema informed on db sys results
377
378
  :param table_name: Table name extracted from query. Can be `table`, `schema.table` or `db.schema.table`
@@ -385,7 +386,7 @@ def get_table_entities_from_query(
385
386
 
386
387
  table_entities = search_table_entities(
387
388
  metadata=metadata,
388
- service_name=service_name,
389
+ service_names=service_names,
389
390
  database=database_query if database_query else database_name,
390
391
  database_schema=schema_query if schema_query else database_schema,
391
392
  table=table,
@@ -394,6 +395,17 @@ def get_table_entities_from_query(
394
395
  if table_entities:
395
396
  return table_entities
396
397
 
398
+ if schema_fallback:
399
+ table_entities = search_table_entities(
400
+ metadata=metadata,
401
+ service_name=service_name,
402
+ database=database_query if database_query else database_name,
403
+ database_schema=None,
404
+ table=table,
405
+ )
406
+ if table_entities:
407
+ return table_entities
408
+
397
409
  return None
398
410
 
399
411
 
@@ -516,6 +528,7 @@ def _create_lineage_by_table_name(
516
528
  lineage_source: LineageSource = LineageSource.QueryLineage,
517
529
  procedure: Optional[EntityReference] = None,
518
530
  graph: DiGraph = None,
531
+ schema_fallback: bool = False,
519
532
  ) -> Iterable[Either[AddLineageRequest]]:
520
533
  """
521
534
  This method is to create a lineage between two tables
@@ -523,18 +536,20 @@ def _create_lineage_by_table_name(
523
536
  try:
524
537
  from_table_entities = get_table_entities_from_query(
525
538
  metadata=metadata,
526
- service_name=service_name,
539
+ service_names=service_name,
527
540
  database_name=database_name,
528
541
  database_schema=schema_name,
529
542
  table_name=from_table,
543
+ schema_fallback=schema_fallback,
530
544
  )
531
545
 
532
546
  to_table_entities = get_table_entities_from_query(
533
547
  metadata=metadata,
534
- service_name=service_name,
548
+ service_names=service_name,
535
549
  database_name=database_name,
536
550
  database_schema=schema_name,
537
551
  table_name=to_table,
552
+ schema_fallback=schema_fallback,
538
553
  )
539
554
 
540
555
  for table_name, entity in (
@@ -625,7 +640,7 @@ def populate_column_lineage_map(raw_column_lineage):
625
640
  # pylint: disable=too-many-locals
626
641
  def get_lineage_by_query(
627
642
  metadata: OpenMetadata,
628
- service_name: str,
643
+ service_names: Union[str, List[str]],
629
644
  database_name: Optional[str],
630
645
  schema_name: Optional[str],
631
646
  query: str,
@@ -633,14 +648,24 @@ def get_lineage_by_query(
633
648
  timeout_seconds: int = LINEAGE_PARSING_TIMEOUT,
634
649
  lineage_source: LineageSource = LineageSource.QueryLineage,
635
650
  graph: DiGraph = None,
651
+ schema_fallback: bool = False,
652
+ service_name: Optional[str] = None, # backward compatibility for python sdk
636
653
  ) -> Iterable[Either[AddLineageRequest]]:
637
654
  """
638
655
  This method parses the query to get source, target and intermediate table names to create lineage,
639
656
  and returns True if target table is found to create lineage otherwise returns False.
657
+
658
+ Now supports cross-database lineage by accepting a list of service names.
640
659
  """
641
660
  column_lineage = {}
642
661
  query_parsing_failures = QueryParsingFailures()
643
-
662
+ if service_name and isinstance(service_name, str):
663
+ service_names = [service_name]
664
+ logger.warning(
665
+ "Deprecated: service_name is deprecated, use service_names instead"
666
+ )
667
+ if isinstance(service_names, str):
668
+ service_names = [service_names]
644
669
  try:
645
670
  lineage_parser = LineageParser(query, dialect, timeout_seconds=timeout_seconds)
646
671
  masked_query = lineage_parser.masked_query
@@ -657,7 +682,7 @@ def get_lineage_by_query(
657
682
  source_table=source_table,
658
683
  database_name=database_name,
659
684
  schema_name=schema_name,
660
- service_name=service_name,
685
+ service_name=service_names,
661
686
  timeout_seconds=timeout_seconds,
662
687
  column_lineage=column_lineage,
663
688
  ):
@@ -665,7 +690,7 @@ def get_lineage_by_query(
665
690
  metadata,
666
691
  from_table=str(from_table_name),
667
692
  to_table=str(intermediate_table),
668
- service_name=service_name,
693
+ service_name=service_names,
669
694
  database_name=database_name,
670
695
  schema_name=schema_name,
671
696
  masked_query=masked_query,
@@ -673,18 +698,21 @@ def get_lineage_by_query(
673
698
  lineage_source=lineage_source,
674
699
  procedure=procedure,
675
700
  graph=graph,
701
+ schema_fallback=schema_fallback,
676
702
  )
677
703
  for target_table in lineage_parser.target_tables:
678
704
  yield from _create_lineage_by_table_name(
679
705
  metadata,
680
706
  from_table=str(intermediate_table),
681
707
  to_table=str(target_table),
682
- service_name=service_name,
708
+ service_name=service_names,
683
709
  database_name=database_name,
684
710
  schema_name=schema_name,
685
711
  masked_query=masked_query,
686
712
  column_lineage_map=column_lineage,
687
713
  lineage_source=lineage_source,
714
+ schema_fallback=schema_fallback,
715
+ graph=graph,
688
716
  )
689
717
  if not lineage_parser.intermediate_tables:
690
718
  for target_table in lineage_parser.target_tables:
@@ -695,7 +723,7 @@ def get_lineage_by_query(
695
723
  source_table=source_table,
696
724
  database_name=database_name,
697
725
  schema_name=schema_name,
698
- service_name=service_name,
726
+ service_name=service_names,
699
727
  timeout_seconds=timeout_seconds,
700
728
  column_lineage=column_lineage,
701
729
  ):
@@ -703,7 +731,7 @@ def get_lineage_by_query(
703
731
  metadata,
704
732
  from_table=str(from_table_name),
705
733
  to_table=str(target_table),
706
- service_name=service_name,
734
+ service_name=service_names,
707
735
  database_name=database_name,
708
736
  schema_name=schema_name,
709
737
  masked_query=masked_query,
@@ -711,6 +739,7 @@ def get_lineage_by_query(
711
739
  lineage_source=lineage_source,
712
740
  procedure=procedure,
713
741
  graph=graph,
742
+ schema_fallback=schema_fallback,
714
743
  )
715
744
  if not lineage_parser.query_parsing_success:
716
745
  query_parsing_failures.add(
@@ -723,7 +752,7 @@ def get_lineage_by_query(
723
752
  yield Either(
724
753
  left=StackTraceError(
725
754
  name="Lineage",
726
- error=f"Ingesting lineage failed for service [{service_name}]: {exc}",
755
+ error=f"Ingesting lineage failed for service(s) [{service_names}]: {exc}",
727
756
  stackTrace=traceback.format_exc(),
728
757
  )
729
758
  )
@@ -734,17 +763,20 @@ def get_lineage_via_table_entity(
734
763
  table_entity: Table,
735
764
  database_name: str,
736
765
  schema_name: str,
737
- service_name: str,
766
+ service_names: Union[str, List[str]],
738
767
  query: str,
739
768
  dialect: Dialect,
740
769
  timeout_seconds: int = LINEAGE_PARSING_TIMEOUT,
741
770
  lineage_source: LineageSource = LineageSource.QueryLineage,
742
771
  graph: DiGraph = None,
772
+ schema_fallback: bool = False,
743
773
  ) -> Iterable[Either[AddLineageRequest]]:
744
774
  """Get lineage from table entity"""
745
775
  column_lineage = {}
746
776
  query_parsing_failures = QueryParsingFailures()
747
777
 
778
+ if isinstance(service_names, str):
779
+ service_names = [service_names]
748
780
  try:
749
781
  lineage_parser = LineageParser(query, dialect, timeout_seconds=timeout_seconds)
750
782
  masked_query = lineage_parser.masked_query
@@ -760,7 +792,7 @@ def get_lineage_via_table_entity(
760
792
  source_table=from_table_name,
761
793
  database_name=database_name,
762
794
  schema_name=schema_name,
763
- service_name=service_name,
795
+ service_name=service_names,
764
796
  timeout_seconds=timeout_seconds,
765
797
  column_lineage=column_lineage,
766
798
  ):
@@ -768,7 +800,7 @@ def get_lineage_via_table_entity(
768
800
  metadata,
769
801
  from_table=str(source_table),
770
802
  to_table=f"{schema_name}.{to_table_name}",
771
- service_name=service_name,
803
+ service_name=service_names,
772
804
  database_name=database_name,
773
805
  schema_name=schema_name,
774
806
  masked_query=masked_query,
@@ -776,6 +808,7 @@ def get_lineage_via_table_entity(
776
808
  lineage_source=lineage_source,
777
809
  procedure=procedure,
778
810
  graph=graph,
811
+ schema_fallback=schema_fallback,
779
812
  ) or []
780
813
  if not lineage_parser.query_parsing_success:
781
814
  query_parsing_failures.add(
@@ -788,7 +821,7 @@ def get_lineage_via_table_entity(
788
821
  Either(
789
822
  left=StackTraceError(
790
823
  name="Lineage",
791
- error=f"Failed to create view lineage for database [{database_name}] and table [{table_entity}]: {exc}",
824
+ error=f"Failed to create view lineage for database [{database_name}] and table [{table_entity}] with service(s) [{service_names}]: {exc}",
792
825
  stackTrace=traceback.format_exc(),
793
826
  )
794
827
  )
@@ -28,13 +28,13 @@ class CustomPropertyDataTypes(Enum):
28
28
  STRING = "string"
29
29
  INTEGER = "integer"
30
30
  MARKDOWN = "markdown"
31
- DATE = "date"
32
- DATETIME = "dateTime"
31
+ DATE = "date-cp"
32
+ DATETIME = "dateTime-cp"
33
33
  DURATION = "duration"
34
34
  EMAIL = "email"
35
35
  NUMBER = "number"
36
36
  SQLQUERY = "sqlQuery"
37
- TIME = "time"
37
+ TIME = "time-cp"
38
38
  TIMEINTERVAL = "timeInterval"
39
39
  TIMESTAMP = "timestamp"
40
40
  ENUM = "enum"
@@ -342,6 +342,7 @@ def build_patch(
342
342
  array_entity_fields: Optional[List] = None,
343
343
  remove_change_description: bool = True,
344
344
  override_metadata: Optional[bool] = False,
345
+ skip_on_failure: Optional[bool] = True,
345
346
  ) -> Optional[jsonpatch.JsonPatch]:
346
347
  """
347
348
  Given an Entity type and Source entity and Destination entity,
@@ -352,6 +353,10 @@ def build_patch(
352
353
  destination: payload with changes applied to the source.
353
354
  allowed_fields: List of field names to filter from source and destination models
354
355
  restrict_update_fields: List of field names which will only support add operation
356
+ array_entity_fields: List of array fields to sort for consistent patching
357
+ remove_change_description: Whether to remove change description from entities
358
+ override_metadata: Whether to override existing metadata fields
359
+ skip_on_failure: Whether to skip the patch operation on failure (default: True)
355
360
 
356
361
  Returns
357
362
  Updated Entity
@@ -421,10 +426,37 @@ def build_patch(
421
426
  patch.patch = updated_operations
422
427
 
423
428
  return patch
424
- except Exception:
429
+ except Exception as exc:
425
430
  logger.debug(traceback.format_exc())
426
- logger.warning("Couldn't build patch for Entity.")
427
- return None
431
+ if skip_on_failure:
432
+ entity_info = ""
433
+ try:
434
+ if hasattr(source, "fullyQualifiedName"):
435
+ entity_info = f" for '{source.fullyQualifiedName.root}'"
436
+ elif hasattr(source, "name"):
437
+ entity_info = f" for '{source.name.root}'"
438
+ except Exception:
439
+ pass
440
+
441
+ logger.warning(
442
+ f"Failed to build patch{entity_info}. The patch generation was skipped. "
443
+ f"Reason: {exc}"
444
+ )
445
+ return None
446
+ else:
447
+ entity_info = ""
448
+ try:
449
+ if hasattr(source, "fullyQualifiedName"):
450
+ entity_info = f" for '{source.fullyQualifiedName.root}'"
451
+ elif hasattr(source, "name"):
452
+ entity_info = f" for '{source.name.root}'"
453
+ except Exception:
454
+ pass
455
+
456
+ raise RuntimeError(
457
+ f"Failed to build patch{entity_info}. The patch generation failed. "
458
+ f"Set 'skip_on_failure=True' to skip failed patch operations. Error: {exc}"
459
+ ) from exc
428
460
 
429
461
 
430
462
  def _get_attribute_name(attr: T) -> str:
@@ -534,7 +566,7 @@ def _remove_change_description(entity: T) -> T:
534
566
  We never want to patch that, and we won't have that information
535
567
  from the source. It's fully handled in the server.
536
568
  """
537
- if getattr(entity, "changeDescription"):
569
+ if hasattr(entity, "changeDescription") and getattr(entity, "changeDescription"):
538
570
  entity.changeDescription = None
539
571
 
540
572
  return entity
@@ -0,0 +1,205 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ Mixin class containing Data Contract specific methods
13
+
14
+ To be used by OpenMetadata class
15
+ """
16
+ import traceback
17
+ from typing import Optional
18
+
19
+ from metadata.generated.schema.entity.data.dataContract import DataContract
20
+ from metadata.generated.schema.entity.datacontract.dataContractResult import (
21
+ DataContractResult,
22
+ )
23
+ from metadata.generated.schema.type.basic import Uuid
24
+ from metadata.ingestion.ometa.client import REST
25
+ from metadata.ingestion.ometa.utils import model_str
26
+ from metadata.utils.logger import ometa_logger
27
+
28
+ logger = ometa_logger()
29
+
30
+
31
+ class OMetaDataContractMixin:
32
+ """
33
+ OpenMetadata API methods related to Data Contracts.
34
+ To be inherited by OpenMetadata
35
+ """
36
+
37
+ client: REST
38
+
39
+ def put_data_contract_result(
40
+ self, data_contract_id: Uuid, result: DataContractResult
41
+ ) -> Optional[DataContractResult]:
42
+ """
43
+ Create or update a data contract execution result
44
+
45
+ Args:
46
+ data_contract_id: UUID of the data contract
47
+ result: DataContractResult object containing execution details
48
+
49
+ Returns:
50
+ DataContractResult if successful, None otherwise
51
+ """
52
+ try:
53
+ resp = self.client.put(
54
+ f"{self.get_suffix(DataContract)}/{model_str(data_contract_id)}/results",
55
+ data=result.model_dump_json(),
56
+ )
57
+ if resp:
58
+ return DataContractResult(**resp)
59
+ except Exception as err:
60
+ logger.debug(traceback.format_exc())
61
+ logger.warning(
62
+ f"Error creating data contract result for {model_str(data_contract_id)}: {err}"
63
+ )
64
+ return None
65
+
66
+ def get_data_contract_results(
67
+ self,
68
+ data_contract_id: Uuid,
69
+ limit: int = 10,
70
+ start_ts: Optional[int] = None,
71
+ end_ts: Optional[int] = None,
72
+ ) -> Optional[list]:
73
+ """
74
+ Get data contract execution results
75
+
76
+ Args:
77
+ data_contract_id: UUID of the data contract
78
+ limit: Maximum number of results to return
79
+ start_ts: Start timestamp filter
80
+ end_ts: End timestamp filter
81
+
82
+ Returns:
83
+ List of DataContractResult objects if successful, None otherwise
84
+ """
85
+ try:
86
+ # Build query parameters
87
+ query_params = [f"limit={limit}"]
88
+ if start_ts:
89
+ query_params.append(f"startTs={start_ts}")
90
+ if end_ts:
91
+ query_params.append(f"endTs={end_ts}")
92
+
93
+ query_string = "&".join(query_params)
94
+ url = f"{self.get_suffix(DataContract)}/{model_str(data_contract_id)}/results?{query_string}"
95
+
96
+ resp = self.client.get(url)
97
+ if resp:
98
+ return [DataContractResult(**result) for result in resp.get("data", [])]
99
+ except Exception as err:
100
+ logger.debug(traceback.format_exc())
101
+ logger.warning(
102
+ f"Error getting data contract results for {model_str(data_contract_id)}: {err}"
103
+ )
104
+ return None
105
+
106
+ def get_latest_data_contract_result(
107
+ self, data_contract_id: Uuid
108
+ ) -> Optional[DataContractResult]:
109
+ """
110
+ Get the latest data contract execution result
111
+
112
+ Args:
113
+ data_contract_id: UUID of the data contract
114
+
115
+ Returns:
116
+ DataContractResult if successful, None otherwise
117
+ """
118
+ try:
119
+ resp = self.client.get(
120
+ f"{self.get_suffix(DataContract)}/{model_str(data_contract_id)}/results/latest"
121
+ )
122
+ if resp:
123
+ return DataContractResult(**resp)
124
+ except Exception as err:
125
+ logger.debug(traceback.format_exc())
126
+ logger.warning(
127
+ f"Error getting latest data contract result for {model_str(data_contract_id)}: {err}"
128
+ )
129
+ return None
130
+
131
+ def get_data_contract_result_by_id(
132
+ self, data_contract_id: Uuid, result_id: Uuid
133
+ ) -> Optional[DataContractResult]:
134
+ """
135
+ Get a specific data contract execution result by ID
136
+
137
+ Args:
138
+ data_contract_id: UUID of the data contract
139
+ result_id: UUID of the specific result
140
+
141
+ Returns:
142
+ DataContractResult if successful, None otherwise
143
+ """
144
+ try:
145
+ resp = self.client.get(
146
+ f"{self.get_suffix(DataContract)}/{model_str(data_contract_id)}/results/{model_str(result_id)}"
147
+ )
148
+ if resp:
149
+ return DataContractResult(**resp)
150
+ except Exception as err:
151
+ logger.debug(traceback.format_exc())
152
+ logger.warning(
153
+ f"Error getting data contract result {model_str(result_id)} for {model_str(data_contract_id)}: {err}"
154
+ )
155
+ return None
156
+
157
+ def delete_data_contract_result(
158
+ self, data_contract_id: Uuid, timestamp: int
159
+ ) -> bool:
160
+ """
161
+ Delete a data contract result at a specific timestamp
162
+
163
+ Args:
164
+ data_contract_id: UUID of the data contract
165
+ timestamp: Timestamp of the result to delete
166
+
167
+ Returns:
168
+ True if successful, False otherwise
169
+ """
170
+ try:
171
+ self.client.delete(
172
+ f"{self.get_suffix(DataContract)}/{model_str(data_contract_id)}/results/{timestamp}"
173
+ )
174
+ return True
175
+ except Exception as err:
176
+ logger.debug(traceback.format_exc())
177
+ logger.warning(
178
+ f"Error deleting data contract result at {timestamp} for {model_str(data_contract_id)}: {err}"
179
+ )
180
+ return False
181
+
182
+ def validate_data_contract(
183
+ self, data_contract_id: Uuid
184
+ ) -> Optional[DataContractResult]:
185
+ """
186
+ Trigger on-demand validation of a data contract
187
+
188
+ Args:
189
+ data_contract_id: UUID of the data contract to validate
190
+
191
+ Returns:
192
+ DataContractResult if successful, None otherwise
193
+ """
194
+ try:
195
+ resp = self.client.post(
196
+ f"{self.get_suffix(DataContract)}/{model_str(data_contract_id)}/validate"
197
+ )
198
+ if resp:
199
+ return DataContractResult(**resp)
200
+ except Exception as err:
201
+ logger.debug(traceback.format_exc())
202
+ logger.warning(
203
+ f"Error validating data contract {model_str(data_contract_id)}: {err}"
204
+ )
205
+ return None
@@ -383,7 +383,7 @@ class OMetaLineageMixin(Generic[T]):
383
383
  connection_type = database_service.serviceType.value
384
384
  add_lineage_request = get_lineage_by_query(
385
385
  metadata=self,
386
- service_name=database_service.name.root,
386
+ service_names=database_service.name.root,
387
387
  dialect=ConnectionTypeDialectMapper.dialect_of(connection_type),
388
388
  query=sql,
389
389
  database_name=database_name,