openmetadata-ingestion 1.9.0.0__py3-none-any.whl → 1.9.2.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 (807) hide show
  1. metadata/data_quality/validations/models.py +11 -1
  2. metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +9 -0
  3. metadata/data_quality/validations/runtime_param_setter/table_custom_sql_query_params_setter.py +31 -0
  4. metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +24 -0
  5. metadata/data_quality/validations/table/pandas/tableCustomSQLQuery.py +38 -0
  6. metadata/data_quality/validations/table/sqlalchemy/tableCustomSQLQuery.py +57 -0
  7. metadata/examples/workflows/exasol.yaml +25 -0
  8. metadata/examples/workflows/grafana.yaml +115 -0
  9. metadata/generated/schema/analytics/__init__.py +1 -1
  10. metadata/generated/schema/analytics/basic.py +1 -1
  11. metadata/generated/schema/analytics/reportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  16. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  17. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  21. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  22. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  23. metadata/generated/schema/api/__init__.py +1 -1
  24. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  25. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  26. metadata/generated/schema/api/analytics/__init__.py +1 -1
  27. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  28. metadata/generated/schema/api/automations/__init__.py +1 -1
  29. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  30. metadata/generated/schema/api/bulkAssets.py +1 -1
  31. metadata/generated/schema/api/classification/__init__.py +1 -1
  32. metadata/generated/schema/api/classification/createClassification.py +1 -1
  33. metadata/generated/schema/api/classification/createTag.py +1 -1
  34. metadata/generated/schema/api/classification/loadTags.py +1 -1
  35. metadata/generated/schema/api/createBot.py +1 -1
  36. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  37. metadata/generated/schema/api/createType.py +1 -1
  38. metadata/generated/schema/api/data/__init__.py +1 -1
  39. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  40. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  41. metadata/generated/schema/api/data/createChart.py +1 -1
  42. metadata/generated/schema/api/data/createContainer.py +1 -1
  43. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  44. metadata/generated/schema/api/data/createDashboard.py +1 -1
  45. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  46. metadata/generated/schema/api/data/createDataContract.py +1 -1
  47. metadata/generated/schema/api/data/createDatabase.py +1 -1
  48. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  49. metadata/generated/schema/api/data/createDirectory.py +1 -1
  50. metadata/generated/schema/api/data/createFile.py +1 -1
  51. metadata/generated/schema/api/data/createGlossary.py +1 -1
  52. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  53. metadata/generated/schema/api/data/createMetric.py +1 -1
  54. metadata/generated/schema/api/data/createMlModel.py +1 -1
  55. metadata/generated/schema/api/data/createPipeline.py +1 -1
  56. metadata/generated/schema/api/data/createQuery.py +1 -1
  57. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  58. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  59. metadata/generated/schema/api/data/createSpreadsheet.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/createWorksheet.py +1 -1
  65. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  66. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  67. metadata/generated/schema/api/data/updateColumn.py +1 -1
  68. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  69. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  70. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  71. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  72. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  73. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  74. metadata/generated/schema/api/docStore/__init__.py +1 -1
  75. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  76. metadata/generated/schema/api/domains/__init__.py +1 -1
  77. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  78. metadata/generated/schema/api/domains/createDomain.py +1 -1
  79. metadata/generated/schema/api/entityRelationship/__init__.py +1 -1
  80. metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +1 -1
  81. metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +1 -1
  82. metadata/generated/schema/api/entityRelationship/relationshipRef.py +1 -1
  83. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +1 -1
  84. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +1 -1
  85. metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +1 -1
  86. metadata/generated/schema/api/feed/__init__.py +1 -1
  87. metadata/generated/schema/api/feed/closeTask.py +1 -1
  88. metadata/generated/schema/api/feed/createPost.py +1 -1
  89. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  90. metadata/generated/schema/api/feed/createThread.py +1 -1
  91. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  92. metadata/generated/schema/api/feed/threadCount.py +1 -1
  93. metadata/generated/schema/api/governance/__init__.py +1 -1
  94. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  95. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  96. metadata/generated/schema/api/lineage/__init__.py +1 -1
  97. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  98. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  99. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  100. metadata/generated/schema/api/lineage/nodeInformation.py +2 -2
  101. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  102. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  103. metadata/generated/schema/api/mcp/__init__.py +1 -1
  104. metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
  105. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  106. metadata/generated/schema/api/policies/__init__.py +1 -1
  107. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  108. metadata/generated/schema/api/scim/__init__.py +1 -1
  109. metadata/generated/schema/api/scim/scimGroup.py +1 -1
  110. metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
  111. metadata/generated/schema/api/scim/scimUser.py +1 -1
  112. metadata/generated/schema/api/search/__init__.py +1 -1
  113. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  114. metadata/generated/schema/api/services/__init__.py +1 -1
  115. metadata/generated/schema/api/services/createApiService.py +1 -1
  116. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  117. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  118. metadata/generated/schema/api/services/createDriveService.py +1 -1
  119. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  120. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  121. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  122. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  123. metadata/generated/schema/api/services/createSearchService.py +1 -1
  124. metadata/generated/schema/api/services/createSecurityService.py +1 -1
  125. metadata/generated/schema/api/services/createStorageService.py +1 -1
  126. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  127. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  128. metadata/generated/schema/api/setOwner.py +1 -1
  129. metadata/generated/schema/api/teams/__init__.py +1 -1
  130. metadata/generated/schema/api/teams/createPersona.py +1 -1
  131. metadata/generated/schema/api/teams/createRole.py +1 -1
  132. metadata/generated/schema/api/teams/createTeam.py +1 -1
  133. metadata/generated/schema/api/teams/createUser.py +1 -1
  134. metadata/generated/schema/api/tests/__init__.py +1 -1
  135. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  136. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  137. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  138. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  139. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  140. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  141. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  142. metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +1 -1
  143. metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
  144. metadata/generated/schema/api/voteRequest.py +1 -1
  145. metadata/generated/schema/auth/__init__.py +1 -1
  146. metadata/generated/schema/auth/basicAuth.py +1 -1
  147. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  148. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  149. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  150. metadata/generated/schema/auth/emailRequest.py +1 -1
  151. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  152. metadata/generated/schema/auth/generateToken.py +1 -1
  153. metadata/generated/schema/auth/jwtAuth.py +1 -1
  154. metadata/generated/schema/auth/loginRequest.py +1 -1
  155. metadata/generated/schema/auth/logoutRequest.py +1 -1
  156. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  157. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  158. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  159. metadata/generated/schema/auth/refreshToken.py +1 -1
  160. metadata/generated/schema/auth/registrationRequest.py +1 -1
  161. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  162. metadata/generated/schema/auth/revokeToken.py +1 -1
  163. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  164. metadata/generated/schema/auth/ssoAuth.py +1 -1
  165. metadata/generated/schema/auth/supportToken.py +1 -1
  166. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  167. metadata/generated/schema/configuration/__init__.py +1 -1
  168. metadata/generated/schema/configuration/aiPlatformConfiguration.py +1 -1
  169. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  170. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  171. metadata/generated/schema/configuration/authConfig.py +1 -1
  172. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/cacheConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/elasticSearchConfiguration.py +18 -1
  178. metadata/generated/schema/configuration/entityRulesSettings.py +1 -1
  179. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  185. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  186. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  187. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  188. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  189. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  190. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  192. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/opsConfig.py +1 -1
  197. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/searchSettings.py +1 -1
  200. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  201. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  202. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  203. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  204. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  205. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  206. metadata/generated/schema/dataInsight/__init__.py +1 -1
  207. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  208. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  209. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  210. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  211. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  212. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  213. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  214. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  215. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  216. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  217. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  218. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  219. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  220. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  221. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  222. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  223. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  224. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  225. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  226. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  227. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  228. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  229. metadata/generated/schema/email/__init__.py +1 -1
  230. metadata/generated/schema/email/emailRequest.py +1 -1
  231. metadata/generated/schema/email/emailTemplate.py +1 -1
  232. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  233. metadata/generated/schema/email/smtpSettings.py +1 -1
  234. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  235. metadata/generated/schema/entity/__init__.py +1 -1
  236. metadata/generated/schema/entity/applications/__init__.py +1 -1
  237. metadata/generated/schema/entity/applications/app.py +1 -1
  238. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  239. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  277. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  278. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  279. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  280. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  281. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  282. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  283. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  284. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  285. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  286. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  287. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  288. metadata/generated/schema/entity/automations/__init__.py +1 -1
  289. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  290. metadata/generated/schema/entity/automations/workflow.py +1 -1
  291. metadata/generated/schema/entity/bot.py +1 -1
  292. metadata/generated/schema/entity/classification/__init__.py +1 -1
  293. metadata/generated/schema/entity/classification/classification.py +1 -1
  294. metadata/generated/schema/entity/classification/tag.py +1 -1
  295. metadata/generated/schema/entity/data/__init__.py +1 -1
  296. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  297. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  298. metadata/generated/schema/entity/data/chart.py +6 -1
  299. metadata/generated/schema/entity/data/container.py +1 -1
  300. metadata/generated/schema/entity/data/dashboard.py +1 -1
  301. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  302. metadata/generated/schema/entity/data/dataContract.py +1 -1
  303. metadata/generated/schema/entity/data/database.py +1 -1
  304. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  305. metadata/generated/schema/entity/data/directory.py +1 -1
  306. metadata/generated/schema/entity/data/file.py +1 -1
  307. metadata/generated/schema/entity/data/glossary.py +1 -1
  308. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  309. metadata/generated/schema/entity/data/metric.py +1 -1
  310. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  311. metadata/generated/schema/entity/data/pipeline.py +1 -1
  312. metadata/generated/schema/entity/data/query.py +1 -1
  313. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  314. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  315. metadata/generated/schema/entity/data/report.py +1 -1
  316. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  317. metadata/generated/schema/entity/data/spreadsheet.py +1 -1
  318. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  319. metadata/generated/schema/entity/data/table.py +1 -1
  320. metadata/generated/schema/entity/data/topic.py +1 -1
  321. metadata/generated/schema/entity/data/worksheet.py +1 -1
  322. metadata/generated/schema/entity/datacontract/__init__.py +1 -1
  323. metadata/generated/schema/entity/datacontract/dataContractResult.py +1 -1
  324. metadata/generated/schema/entity/datacontract/qualityValidation.py +1 -1
  325. metadata/generated/schema/entity/datacontract/schemaValidation.py +1 -1
  326. metadata/generated/schema/entity/datacontract/semanticsValidation.py +1 -1
  327. metadata/generated/schema/entity/datacontract/slaValidation.py +1 -1
  328. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  329. metadata/generated/schema/entity/docStore/document.py +1 -1
  330. metadata/generated/schema/entity/domains/__init__.py +1 -1
  331. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  332. metadata/generated/schema/entity/domains/domain.py +1 -1
  333. metadata/generated/schema/entity/events/__init__.py +1 -1
  334. metadata/generated/schema/entity/events/webhook.py +1 -1
  335. metadata/generated/schema/entity/feed/__init__.py +1 -1
  336. metadata/generated/schema/entity/feed/assets.py +1 -1
  337. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  338. metadata/generated/schema/entity/feed/description.py +1 -1
  339. metadata/generated/schema/entity/feed/domain.py +1 -1
  340. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  341. metadata/generated/schema/entity/feed/owner.py +1 -1
  342. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  343. metadata/generated/schema/entity/feed/tag.py +1 -1
  344. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  345. metadata/generated/schema/entity/feed/thread.py +1 -1
  346. metadata/generated/schema/entity/policies/__init__.py +1 -1
  347. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  348. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  349. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  350. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  351. metadata/generated/schema/entity/policies/filters.py +1 -1
  352. metadata/generated/schema/entity/policies/policy.py +1 -1
  353. metadata/generated/schema/entity/services/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/apiService.py +1 -1
  355. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  356. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  360. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  361. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  362. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +77 -0
  367. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  375. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/epicConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +4 -1
  422. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/ssasConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/drive/__init__.py +1 -1
  460. metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  464. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  470. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  471. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  478. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  491. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  495. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  496. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  497. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  498. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  499. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  500. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  501. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  502. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  503. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  504. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  505. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  506. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  507. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  508. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  509. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  510. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  511. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  512. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  513. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  514. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  515. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  516. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  517. metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
  518. metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
  519. metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
  520. metadata/generated/schema/entity/services/connections/security/rangerConnection.py +1 -1
  521. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  522. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  523. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  524. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  525. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  526. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  527. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  528. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  529. metadata/generated/schema/entity/services/dashboardService.py +4 -1
  530. metadata/generated/schema/entity/services/databaseService.py +1 -1
  531. metadata/generated/schema/entity/services/driveService.py +1 -1
  532. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  533. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  534. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  535. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  536. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  537. metadata/generated/schema/entity/services/messagingService.py +1 -1
  538. metadata/generated/schema/entity/services/metadataService.py +1 -1
  539. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  540. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  541. metadata/generated/schema/entity/services/searchService.py +1 -1
  542. metadata/generated/schema/entity/services/securityService.py +1 -1
  543. metadata/generated/schema/entity/services/serviceType.py +1 -1
  544. metadata/generated/schema/entity/services/storageService.py +1 -1
  545. metadata/generated/schema/entity/teams/__init__.py +1 -1
  546. metadata/generated/schema/entity/teams/persona.py +1 -1
  547. metadata/generated/schema/entity/teams/role.py +1 -1
  548. metadata/generated/schema/entity/teams/team.py +1 -1
  549. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  550. metadata/generated/schema/entity/teams/user.py +1 -1
  551. metadata/generated/schema/entity/type.py +1 -1
  552. metadata/generated/schema/entity/utils/__init__.py +1 -1
  553. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  554. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  555. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  556. metadata/generated/schema/events/__init__.py +1 -1
  557. metadata/generated/schema/events/alertMetrics.py +1 -1
  558. metadata/generated/schema/events/api/__init__.py +1 -1
  559. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  560. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  561. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  562. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  563. metadata/generated/schema/events/api/typedEvent.py +1 -1
  564. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  565. metadata/generated/schema/events/eventFilterRule.py +1 -1
  566. metadata/generated/schema/events/eventSubscription.py +1 -1
  567. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  568. metadata/generated/schema/events/failedEvent.py +1 -1
  569. metadata/generated/schema/events/failedEventResponse.py +1 -1
  570. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  571. metadata/generated/schema/events/statusContext.py +1 -1
  572. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  573. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  574. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  575. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  576. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  577. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  578. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  579. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  580. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  581. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  582. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  583. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  584. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  585. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  586. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  587. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  588. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  589. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  590. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  591. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  592. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  593. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  594. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  595. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  596. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  597. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  598. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  599. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  600. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  601. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  602. metadata/generated/schema/jobs/__init__.py +1 -1
  603. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  604. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  605. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  606. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  607. metadata/generated/schema/metadataIngestion/application.py +1 -1
  608. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  609. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  610. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  611. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  612. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  613. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  614. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  615. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  616. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  617. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  618. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  619. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  620. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  621. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  622. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  623. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  624. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  625. metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +1 -1
  626. metadata/generated/schema/metadataIngestion/engine/__init__.py +1 -1
  627. metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +1 -1
  628. metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +1 -1
  629. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  630. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  631. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  632. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  633. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  634. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  635. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  636. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  637. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  638. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  639. metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.py +1 -1
  640. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  641. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  642. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  643. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  644. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  645. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  646. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  647. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  648. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  649. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  650. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  651. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  652. metadata/generated/schema/monitoring/__init__.py +1 -1
  653. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  654. metadata/generated/schema/scim/__init__.py +1 -1
  655. metadata/generated/schema/scim/scimConfiguration.py +1 -1
  656. metadata/generated/schema/search/__init__.py +1 -1
  657. metadata/generated/schema/search/aggregationRequest.py +1 -1
  658. metadata/generated/schema/search/searchRequest.py +1 -1
  659. metadata/generated/schema/security/__init__.py +1 -1
  660. metadata/generated/schema/security/client/__init__.py +1 -1
  661. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  662. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  663. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  664. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  665. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  666. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  667. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  668. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  669. metadata/generated/schema/security/credentials/__init__.py +1 -1
  670. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  671. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  672. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  673. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  674. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  675. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  676. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  677. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  678. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  679. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  680. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  681. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  682. metadata/generated/schema/security/credentials/kubernetesCredentials.py +1 -1
  683. metadata/generated/schema/security/sasl/__init__.py +1 -1
  684. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  685. metadata/generated/schema/security/secrets/__init__.py +1 -1
  686. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  687. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  688. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  689. metadata/generated/schema/security/securityConfiguration.py +1 -1
  690. metadata/generated/schema/security/ssl/__init__.py +1 -1
  691. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  692. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  693. metadata/generated/schema/settings/__init__.py +1 -1
  694. metadata/generated/schema/settings/settings.py +1 -1
  695. metadata/generated/schema/system/__init__.py +1 -1
  696. metadata/generated/schema/system/entityError.py +1 -1
  697. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  698. metadata/generated/schema/system/indexingError.py +1 -1
  699. metadata/generated/schema/system/limitsResponse.py +1 -1
  700. metadata/generated/schema/system/ui/__init__.py +1 -1
  701. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  702. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  703. metadata/generated/schema/system/ui/page.py +1 -1
  704. metadata/generated/schema/system/ui/tab.py +1 -1
  705. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  706. metadata/generated/schema/system/validationResponse.py +1 -1
  707. metadata/generated/schema/tests/__init__.py +1 -1
  708. metadata/generated/schema/tests/assigned.py +1 -1
  709. metadata/generated/schema/tests/basic.py +1 -1
  710. metadata/generated/schema/tests/customMetric.py +1 -1
  711. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  712. metadata/generated/schema/tests/resolved.py +1 -1
  713. metadata/generated/schema/tests/testCase.py +1 -1
  714. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  715. metadata/generated/schema/tests/testDefinition.py +1 -1
  716. metadata/generated/schema/tests/testSuite.py +1 -1
  717. metadata/generated/schema/type/__init__.py +1 -1
  718. metadata/generated/schema/type/apiSchema.py +1 -1
  719. metadata/generated/schema/type/assetCertification.py +1 -1
  720. metadata/generated/schema/type/auditLog.py +1 -1
  721. metadata/generated/schema/type/basic.py +1 -1
  722. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  723. metadata/generated/schema/type/changeEvent.py +1 -1
  724. metadata/generated/schema/type/changeEventType.py +1 -1
  725. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  726. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  727. metadata/generated/schema/type/contractExecutionStatus.py +1 -1
  728. metadata/generated/schema/type/csvDocumentation.py +1 -1
  729. metadata/generated/schema/type/csvErrorType.py +1 -1
  730. metadata/generated/schema/type/csvFile.py +1 -1
  731. metadata/generated/schema/type/csvImportResult.py +1 -1
  732. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  733. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  734. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  735. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  736. metadata/generated/schema/type/customProperty.py +1 -1
  737. metadata/generated/schema/type/dailyCount.py +1 -1
  738. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  739. metadata/generated/schema/type/entityHierarchy.py +1 -1
  740. metadata/generated/schema/type/entityHistory.py +1 -1
  741. metadata/generated/schema/type/entityLineage.py +1 -1
  742. metadata/generated/schema/type/entityReference.py +1 -1
  743. metadata/generated/schema/type/entityReferenceList.py +1 -1
  744. metadata/generated/schema/type/entityRelationship/__init__.py +1 -1
  745. metadata/generated/schema/type/entityRelationship/nodeInformation.py +1 -1
  746. metadata/generated/schema/type/entityUsage.py +1 -1
  747. metadata/generated/schema/type/filterPattern.py +1 -1
  748. metadata/generated/schema/type/function.py +1 -1
  749. metadata/generated/schema/type/include.py +1 -1
  750. metadata/generated/schema/type/jdbcConnection.py +1 -1
  751. metadata/generated/schema/type/layerPaging.py +1 -1
  752. metadata/generated/schema/type/lifeCycle.py +1 -1
  753. metadata/generated/schema/type/paging.py +1 -1
  754. metadata/generated/schema/type/personaPreferences.py +1 -1
  755. metadata/generated/schema/type/profile.py +1 -1
  756. metadata/generated/schema/type/queryParserData.py +1 -1
  757. metadata/generated/schema/type/reaction.py +1 -1
  758. metadata/generated/schema/type/schedule.py +1 -1
  759. metadata/generated/schema/type/schema.py +1 -1
  760. metadata/generated/schema/type/tableQuery.py +1 -1
  761. metadata/generated/schema/type/tableUsageCount.py +1 -1
  762. metadata/generated/schema/type/tagLabel.py +1 -1
  763. metadata/generated/schema/type/usageDetails.py +1 -1
  764. metadata/generated/schema/type/usageRequest.py +1 -1
  765. metadata/generated/schema/type/votes.py +1 -1
  766. metadata/ingestion/bulksink/metadata_usage.py +2 -2
  767. metadata/ingestion/lineage/sql_lineage.py +77 -65
  768. metadata/ingestion/ometa/mixins/lineage_mixin.py +1 -1
  769. metadata/ingestion/source/api/rest/connection.py +12 -6
  770. metadata/ingestion/source/api/rest/metadata.py +2 -1
  771. metadata/ingestion/source/api/rest/parser.py +103 -0
  772. metadata/ingestion/source/dashboard/grafana/__init__.py +10 -0
  773. metadata/ingestion/source/dashboard/grafana/client.py +223 -0
  774. metadata/ingestion/source/dashboard/grafana/connection.py +66 -0
  775. metadata/ingestion/source/dashboard/grafana/metadata.py +476 -0
  776. metadata/ingestion/source/dashboard/grafana/models.py +159 -0
  777. metadata/ingestion/source/dashboard/grafana/service_spec.py +17 -0
  778. metadata/ingestion/source/dashboard/microstrategy/metadata.py +1 -1
  779. metadata/ingestion/source/dashboard/powerbi/metadata.py +9 -9
  780. metadata/ingestion/source/dashboard/powerbi/models.py +1 -1
  781. metadata/ingestion/source/database/dbt/metadata.py +1 -1
  782. metadata/ingestion/source/database/exasol/connection.py +6 -0
  783. metadata/ingestion/source/database/exasol/lineage.py +24 -0
  784. metadata/ingestion/source/database/exasol/metadata.py +6 -0
  785. metadata/ingestion/source/database/exasol/queries.py +22 -0
  786. metadata/ingestion/source/database/exasol/query_parser.py +33 -0
  787. metadata/ingestion/source/database/exasol/service_spec.py +5 -1
  788. metadata/ingestion/source/database/lineage_source.py +18 -2
  789. metadata/ingestion/source/database/saphana/cdata_parser.py +220 -49
  790. metadata/ingestion/source/database/saphana/lineage.py +12 -0
  791. metadata/ingestion/source/database/saphana/queries.py +7 -0
  792. metadata/ingestion/source/database/snowflake/constants.py +3 -0
  793. metadata/ingestion/source/database/snowflake/metadata.py +108 -6
  794. metadata/ingestion/source/database/snowflake/queries.py +13 -1
  795. metadata/ingestion/source/database/stored_procedures_mixin.py +9 -1
  796. metadata/ingestion/source/pipeline/airflow/connection.py +8 -6
  797. metadata/ingestion/source/pipeline/nifi/metadata.py +62 -5
  798. metadata/profiler/orm/functions/table_metric_computer.py +1 -10
  799. metadata/profiler/processor/core.py +1 -1
  800. metadata/utils/db_utils.py +8 -5
  801. metadata/utils/helpers.py +6 -1
  802. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/METADATA +537 -530
  803. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/RECORD +807 -794
  804. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/LICENSE +0 -0
  805. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/WHEEL +0 -0
  806. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/entry_points.txt +0 -0
  807. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/top_level.txt +0 -0
@@ -436,21 +436,21 @@ class PowerbiSource(DashboardServiceSource):
436
436
  measures = []
437
437
  for measure in table.measures or []:
438
438
  try:
439
- measure_type = (
440
- DataType.MEASURE_HIDDEN
441
- if measure.isHidden
442
- else DataType.MEASURE_VISIBLE
443
- )
439
+ measure_type = DataType.MEASURE_VISIBLE
440
+ if measure.isHidden:
441
+ measure_type = DataType.MEASURE_HIDDEN
442
+ expression_text = f"Expression : {measure.expression}"
444
443
  description_text = (
445
- f"{measure.description}\n\nExpression : {measure.expression}"
444
+ f"Description : {measure.description}"
446
445
  if measure.description
447
- else f"Expression : {measure.expression}"
446
+ else ""
448
447
  )
448
+ description_field_text = f"{expression_text}\n\n{description_text}"
449
449
  parsed_measure = PowerBiMeasureModel(
450
450
  dataType=measure_type,
451
451
  dataTypeDisplay=measure_type,
452
452
  name=measure.name,
453
- description=description_text,
453
+ description=description_field_text,
454
454
  )
455
455
  measures.append(Column(**parsed_measure.model_dump()))
456
456
  except Exception as err:
@@ -866,7 +866,7 @@ class PowerbiSource(DashboardServiceSource):
866
866
 
867
867
  try:
868
868
  table_info = self._parse_table_info_from_source_exp(table, datamodel_entity)
869
- table_name = table.name or table_info.get("table")
869
+ table_name = table_info.get("table") or table.name
870
870
  schema_name = table_info.get("schema")
871
871
  database_name = table_info.get("database")
872
872
  if (
@@ -135,7 +135,7 @@ class PowerBiMeasures(BaseModel):
135
135
  name: str
136
136
  expression: str
137
137
  description: Optional[str] = None
138
- isHidden: bool
138
+ isHidden: Optional[bool] = False
139
139
 
140
140
 
141
141
  class PowerBITableSource(BaseModel):
@@ -924,7 +924,7 @@ class DbtSource(DbtServiceSource):
924
924
  lineages = get_lineage_by_query(
925
925
  self.metadata,
926
926
  query=query,
927
- service_name=source_elements[0],
927
+ service_names=source_elements[0],
928
928
  database_name=source_elements[1],
929
929
  schema_name=source_elements[2],
930
930
  dialect=dialect,
@@ -19,6 +19,7 @@ from metadata.ingestion.connections.builders import (
19
19
  )
20
20
  from metadata.ingestion.connections.test_connections import test_connection_db_common
21
21
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
22
+ from metadata.ingestion.source.database.exasol.queries import EXASOL_TEST_GET_QUERIES
22
23
  from metadata.utils.constants import THREE_MIN
23
24
  from metadata.utils.logger import ingestion_logger
24
25
 
@@ -89,10 +90,15 @@ def test_connection(
89
90
  Test connection. This can be executed either as part
90
91
  of a metadata workflow or during an Automation Workflow
91
92
  """
93
+
94
+ queries = {
95
+ "GetQueries": EXASOL_TEST_GET_QUERIES,
96
+ }
92
97
  return test_connection_db_common(
93
98
  metadata=metadata,
94
99
  engine=engine,
95
100
  service_connection=service_connection,
96
101
  automation_workflow=automation_workflow,
102
+ queries=queries,
97
103
  timeout_seconds=timeout_seconds,
98
104
  )
@@ -0,0 +1,24 @@
1
+ from metadata.ingestion.lineage.models import Dialect
2
+ from metadata.ingestion.source.database.exasol.queries import EXASOL_SQL_STATEMENT
3
+ from metadata.ingestion.source.database.exasol.query_parser import (
4
+ ExasolQueryParserSource,
5
+ )
6
+ from metadata.ingestion.source.database.lineage_source import LineageSource
7
+ from metadata.utils.logger import ingestion_logger
8
+
9
+ logger = ingestion_logger()
10
+
11
+
12
+ class ExasolLineageSource(ExasolQueryParserSource, LineageSource):
13
+ """
14
+ Exasol class for Lineage
15
+ """
16
+
17
+ dialect = Dialect.EXASOL
18
+ sql_stmt = EXASOL_SQL_STATEMENT
19
+ filters = """
20
+ AND (
21
+ s.command_name IN ('MERGE', 'UPDATE', 'CREATE TABLE AS', 'CREATE VIEW')
22
+ OR (s.command_name = 'INSERT' AND LOWER(s.sql_text) LIKE '%insert%into%select%from%')
23
+ )
24
+ """
@@ -1,5 +1,7 @@
1
1
  from typing import Optional, cast
2
2
 
3
+ from sqlalchemy.engine.reflection import Inspector
4
+
3
5
  from metadata.generated.schema.entity.services.connections.database.exasolConnection import (
4
6
  ExasolConnection,
5
7
  )
@@ -9,6 +11,10 @@ from metadata.generated.schema.metadataIngestion.workflow import (
9
11
  from metadata.ingestion.api.steps import InvalidSourceException
10
12
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
11
13
  from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
14
+ from metadata.utils.sqlalchemy_utils import get_all_table_ddls, get_table_ddl
15
+
16
+ Inspector.get_all_table_ddls = get_all_table_ddls
17
+ Inspector.get_table_ddl = get_table_ddl
12
18
 
13
19
 
14
20
  class ExasolSource(CommonDbSourceService):
@@ -1,3 +1,25 @@
1
+ import textwrap
2
+
3
+ EXASOL_SQL_STATEMENT = textwrap.dedent(
4
+ """
5
+ SELECT
6
+ s.sql_text "query_text",
7
+ s.command_name "query_type",
8
+ se.user_name "user_name",
9
+ s.start_time "start_time",
10
+ s.stop_time "end_time",
11
+ s.duration "duration"
12
+ FROM EXA_DBA_AUDIT_SQL s
13
+ JOIN EXA_DBA_AUDIT_SESSIONS se
14
+ ON s.SESSION_ID = se.SESSION_ID
15
+ WHERE s.sql_text NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
16
+ AND s.sql_text NOT LIKE '/* {{"app": "dbt", %%}} */%%'
17
+ AND start_time between TO_TIMESTAMP('{start_time}') and TO_TIMESTAMP('{end_time}')
18
+ {filters}
19
+ LIMIT {result_limit}
20
+ """
21
+ )
22
+
1
23
  EXASOL_TEST_GET_QUERIES = """
2
24
  SELECT
3
25
  s.sql_text,
@@ -0,0 +1,33 @@
1
+ from abc import ABC
2
+ from typing import Optional
3
+
4
+ from metadata.generated.schema.entity.services.connections.database.exasolConnection import (
5
+ ExasolConnection,
6
+ )
7
+ from metadata.generated.schema.metadataIngestion.workflow import (
8
+ Source as WorkflowSource,
9
+ )
10
+ from metadata.ingestion.api.steps import InvalidSourceException
11
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
12
+ from metadata.ingestion.source.database.query_parser_source import QueryParserSource
13
+ from metadata.utils.logger import ingestion_logger
14
+
15
+ logger = ingestion_logger()
16
+
17
+
18
+ class ExasolQueryParserSource(QueryParserSource, ABC):
19
+ """
20
+ Exasol base for Usage and Lineage
21
+ """
22
+
23
+ @classmethod
24
+ def create(
25
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
26
+ ):
27
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
28
+ connection: ExasolConnection = config.serviceConnection.root.config
29
+ if not isinstance(connection, ExasolConnection):
30
+ raise InvalidSourceException(
31
+ f"Expected ExasolConnection, but got {connection}"
32
+ )
33
+ return cls(config, metadata)
@@ -1,4 +1,8 @@
1
+ from metadata.ingestion.source.database.exasol.lineage import ExasolLineageSource
1
2
  from metadata.ingestion.source.database.exasol.metadata import ExasolSource
2
3
  from metadata.utils.service_spec.default import DefaultDatabaseSpec
3
4
 
4
- ServiceSpec = DefaultDatabaseSpec(metadata_source_class=ExasolSource)
5
+ ServiceSpec = DefaultDatabaseSpec(
6
+ metadata_source_class=ExasolSource,
7
+ lineage_source_class=ExasolLineageSource,
8
+ )
@@ -262,10 +262,18 @@ class LineageSource(QueryParserSource, ABC):
262
262
 
263
263
  for table_query in table_queries or []:
264
264
  if not self._query_already_processed(table_query):
265
+ # Prepare service names for lineage processing
266
+ service_names = [table_query.serviceName]
267
+ if (
268
+ self.source_config.processCrossDatabaseLineage
269
+ and self.source_config.crossDatabaseServiceNames
270
+ ):
271
+ service_names.extend(self.source_config.crossDatabaseServiceNames)
272
+
265
273
  lineages: Iterable[Either[AddLineageRequest]] = get_lineage_by_query(
266
274
  self.metadata,
267
275
  query=table_query.query,
268
- service_name=table_query.serviceName,
276
+ service_names=service_names,
269
277
  database_name=table_query.databaseName,
270
278
  schema_name=table_query.databaseSchema,
271
279
  dialect=self.dialect,
@@ -334,10 +342,18 @@ class LineageSource(QueryParserSource, ABC):
334
342
  "View Filtered Out",
335
343
  )
336
344
  continue
345
+ # Prepare service names for view lineage processing
346
+ service_names = [self.config.serviceName]
347
+ if (
348
+ self.source_config.processCrossDatabaseLineage
349
+ and self.source_config.crossDatabaseServiceNames
350
+ ):
351
+ service_names.extend(self.source_config.crossDatabaseServiceNames)
352
+
337
353
  for lineage in get_view_lineage(
338
354
  view=view,
339
355
  metadata=self.metadata,
340
- service_name=self.config.serviceName,
356
+ service_names=service_names,
341
357
  connection_type=self.service_connection.type.value,
342
358
  timeout_seconds=self.source_config.parsingTimeoutLimit,
343
359
  ):
@@ -18,9 +18,10 @@ import xml.etree.ElementTree as ET
18
18
  from collections import defaultdict
19
19
  from enum import Enum
20
20
  from functools import lru_cache
21
- from typing import Dict, Iterable, List, NewType, Optional, Set
21
+ from typing import Dict, Iterable, List, NewType, Optional, Set, Tuple
22
22
 
23
23
  from pydantic import Field, computed_field
24
+ from sqlalchemy.engine import Engine
24
25
  from typing_extensions import Annotated
25
26
 
26
27
  from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
@@ -44,6 +45,7 @@ from metadata.ingestion.source.database.saphana.models import (
44
45
  SYS_BIC_SCHEMA_NAME,
45
46
  ViewType,
46
47
  )
48
+ from metadata.ingestion.source.database.saphana.queries import SAPHANA_SCHEMA_MAPPING
47
49
  from metadata.utils import fqn
48
50
  from metadata.utils.constants import ENTITY_REFERENCE_TYPE_MAP
49
51
  from metadata.utils.dispatch import enum_register
@@ -158,6 +160,7 @@ class DataSource(BaseModel):
158
160
  def get_entity(
159
161
  self,
160
162
  metadata: OpenMetadata,
163
+ engine: Engine,
161
164
  service_name: str,
162
165
  ) -> Table:
163
166
  """Build the Entity Reference for this DataSource"""
@@ -168,13 +171,14 @@ class DataSource(BaseModel):
168
171
  )
169
172
 
170
173
  if self.source_type == ViewType.DATA_BASE_TABLE:
174
+ schema_name = _get_mapped_schema(engine=engine, schema_name=self.location)
171
175
  # The source is a table, so the location is the schema
172
176
  fqn_ = fqn.build(
173
177
  metadata=metadata,
174
178
  entity_type=Table,
175
179
  service_name=service_name,
176
180
  database_name=None, # TODO: Can we assume HXE?
177
- schema_name=self.location,
181
+ schema_name=schema_name,
178
182
  table_name=self.name,
179
183
  )
180
184
  else:
@@ -243,17 +247,67 @@ class ParsedLineage(BaseModel):
243
247
  return id(self)
244
248
 
245
249
  def to_request(
246
- self, metadata: OpenMetadata, service_name: str, to_entity: Table
250
+ self,
251
+ metadata: OpenMetadata,
252
+ engine: Engine,
253
+ service_name: str,
254
+ to_entity: Table,
247
255
  ) -> Iterable[Either[AddLineageRequest]]:
248
256
  """Given the target entity, build the AddLineageRequest based on the sources in `self`"""
249
257
  for source in self.sources:
250
258
  try:
251
259
  source_table = source.get_entity(
252
- metadata=metadata, service_name=service_name
260
+ metadata=metadata, engine=engine, service_name=service_name
253
261
  )
254
262
  if not source_table:
255
263
  logger.warning(f"Can't find table for source [{source}]")
256
264
  continue
265
+
266
+ column_lineage = []
267
+ for mapping in self.mappings:
268
+ if mapping.data_source != source:
269
+ continue
270
+
271
+ from_columns = []
272
+ for source_col in mapping.sources:
273
+ from_column_fqn = get_column_fqn(
274
+ table_entity=source_table,
275
+ column=source_col,
276
+ )
277
+ if not from_column_fqn:
278
+ logger.warning(
279
+ f"Can't find source column [{source_col}] in [{source_table}]"
280
+ )
281
+ continue
282
+
283
+ from_columns.append(
284
+ FullyQualifiedEntityName(
285
+ from_column_fqn,
286
+ )
287
+ )
288
+
289
+ to_column_fqn = get_column_fqn(
290
+ table_entity=to_entity,
291
+ column=mapping.target,
292
+ )
293
+ if not to_column_fqn:
294
+ logger.warning(
295
+ f"Can't find target column [{mapping.target}] in [{to_entity}]."
296
+ f" For source columns: {from_columns}"
297
+ )
298
+ continue
299
+
300
+ to_column = FullyQualifiedEntityName(
301
+ to_column_fqn,
302
+ )
303
+ column_lineage.append(
304
+ ColumnLineage(
305
+ fromColumns=from_columns,
306
+ toColumn=to_column,
307
+ function=mapping.formula,
308
+ )
309
+ )
310
+
257
311
  yield Either(
258
312
  right=AddLineageRequest(
259
313
  edge=EntitiesEdge(
@@ -267,30 +321,7 @@ class ParsedLineage(BaseModel):
267
321
  ),
268
322
  lineageDetails=LineageDetails(
269
323
  source=Source.ViewLineage,
270
- columnsLineage=[
271
- ColumnLineage(
272
- fromColumns=[
273
- FullyQualifiedEntityName(
274
- get_column_fqn(
275
- table_entity=source_table,
276
- column=source_col,
277
- )
278
- )
279
- for source_col in mapping.sources
280
- ],
281
- toColumn=FullyQualifiedEntityName(
282
- get_column_fqn(
283
- table_entity=to_entity,
284
- column=mapping.target,
285
- )
286
- ),
287
- function=mapping.formula
288
- if mapping.formula
289
- else None,
290
- )
291
- for mapping in self.mappings
292
- if mapping.data_source == source
293
- ],
324
+ columnsLineage=column_lineage,
294
325
  ),
295
326
  )
296
327
  )
@@ -339,6 +370,39 @@ def _get_column_datasources(
339
370
  }
340
371
 
341
372
 
373
+ def _get_column_datasources_with_names(
374
+ entry: ET.Element, datasource_map: Optional[DataSourceMap] = None
375
+ ) -> List[Tuple[DataSource, str]]:
376
+ """
377
+ Get the DataSource and the actual source column name after traversal.
378
+ Returns a list of tuples (DataSource, column_name).
379
+ """
380
+ if (
381
+ datasource_map
382
+ and entry.get(CDATAKeys.COLUMN_OBJECT_NAME.value) in datasource_map
383
+ ):
384
+ # Traverse to get the actual sources and column names
385
+ ds_col_pairs = _traverse_ds_with_columns(
386
+ current_column=entry.get(CDATAKeys.COLUMN_NAME.value),
387
+ ds_origin_list=[],
388
+ current_ds=datasource_map[entry.get(CDATAKeys.COLUMN_OBJECT_NAME.value)],
389
+ datasource_map=datasource_map,
390
+ )
391
+ return ds_col_pairs
392
+
393
+ # If we don't have any logical sources, use the column name as-is
394
+ return [
395
+ (
396
+ DataSource(
397
+ name=entry.get(CDATAKeys.COLUMN_OBJECT_NAME.value),
398
+ location=entry.get(CDATAKeys.SCHEMA_NAME.value),
399
+ source_type=ViewType.DATA_BASE_TABLE,
400
+ ),
401
+ entry.get(CDATAKeys.COLUMN_NAME.value),
402
+ )
403
+ ]
404
+
405
+
342
406
  def _traverse_ds(
343
407
  current_column: str,
344
408
  ds_origin_list: List[DataSource],
@@ -355,7 +419,9 @@ def _traverse_ds(
355
419
 
356
420
  else:
357
421
  # Based on our current column, find the parents from the mappings in the current_ds
358
- current_ds_mapping: DataSourceMapping = current_ds.mapping.get(current_column)
422
+ current_ds_mapping: Optional[DataSourceMapping] = current_ds.mapping.get(
423
+ current_column
424
+ )
359
425
 
360
426
  if current_ds_mapping:
361
427
  for parent in current_ds_mapping.parents:
@@ -381,6 +447,54 @@ def _traverse_ds(
381
447
  return ds_origin_list
382
448
 
383
449
 
450
+ def _traverse_ds_with_columns(
451
+ current_column: str,
452
+ ds_origin_list: List[Tuple[DataSource, str]],
453
+ current_ds: DataSource,
454
+ datasource_map: Optional[DataSourceMap],
455
+ ) -> List[Tuple[DataSource, str]]:
456
+ """
457
+ Traverse the ds dict jumping from target -> source columns and getting the right parent.
458
+ We keep inspecting current datasources and will append to the origin list the ones
459
+ that are not LOGICAL, along with the final column name.
460
+ Returns a list of tuples (DataSource, column_name).
461
+ """
462
+ if current_ds.source_type != ViewType.LOGICAL:
463
+ # This is a final datasource, append it with the current column name
464
+ ds_origin_list.append((current_ds, current_column))
465
+
466
+ else:
467
+ # Based on our current column, find the parents from the mappings in the current_ds
468
+ current_ds_mapping: Optional[DataSourceMapping] = current_ds.mapping.get(
469
+ current_column
470
+ )
471
+
472
+ if current_ds_mapping:
473
+ for parent in current_ds_mapping.parents:
474
+ parent_ds = datasource_map.get(parent.parent)
475
+ if not parent_ds:
476
+ raise CDATAParsingError(
477
+ f"Can't find parent [{parent.parent}] for column [{current_column}]"
478
+ )
479
+
480
+ # Traverse from the source column in the parent mapping
481
+ # Note: parent.source is the column name in the parent datasource
482
+ _traverse_ds_with_columns(
483
+ current_column=parent.source,
484
+ ds_origin_list=ds_origin_list,
485
+ current_ds=parent_ds,
486
+ datasource_map=datasource_map,
487
+ )
488
+ else:
489
+ # Current column not in mapping. This can happen for calculated view attributes
490
+ logger.info(
491
+ f"Can't find mapping for column [{current_column}] in [{current_ds}]. "
492
+ f"We still have to implement `calculatedViewAttributes`."
493
+ )
494
+
495
+ return ds_origin_list
496
+
497
+
384
498
  def _read_attributes(
385
499
  tree: ET.Element, ns: dict, datasource_map: Optional[DataSourceMap] = None
386
500
  ) -> ParsedLineage:
@@ -392,17 +506,20 @@ def _read_attributes(
392
506
 
393
507
  for attribute in attribute_list.findall(CDATAKeys.ATTRIBUTE.value, ns):
394
508
  key_mapping = attribute.find(CDATAKeys.KEY_MAPPING.value, ns)
395
- data_sources = _get_column_datasources(
509
+
510
+ # Get the actual source datasources and their column names
511
+ data_sources_with_columns = _get_column_datasources_with_names(
396
512
  entry=key_mapping, datasource_map=datasource_map
397
513
  )
514
+
398
515
  attr_lineage = ParsedLineage(
399
516
  mappings=[
400
517
  ColumnMapping(
401
- data_source=ds,
402
- sources=[key_mapping.get(CDATAKeys.COLUMN_NAME.value)],
518
+ data_source=ds_info[0], # The datasource
519
+ sources=[ds_info[1]], # The actual source column name
403
520
  target=attribute.get(CDATAKeys.ID.value),
404
521
  )
405
- for ds in data_sources
522
+ for ds_info in data_sources_with_columns
406
523
  ]
407
524
  )
408
525
  lineage += attr_lineage
@@ -456,17 +573,20 @@ def _read_base_measures(
456
573
 
457
574
  for measure in base_measures.findall(CDATAKeys.MEASURE.value, ns):
458
575
  measure_mapping = measure.find(CDATAKeys.MEASURE_MAPPING.value, ns)
459
- data_sources = _get_column_datasources(
576
+
577
+ # Get the actual source datasources and their column names
578
+ data_sources_with_columns = _get_column_datasources_with_names(
460
579
  entry=measure_mapping, datasource_map=datasource_map
461
580
  )
581
+
462
582
  measure_lineage = ParsedLineage(
463
583
  mappings=[
464
584
  ColumnMapping(
465
- data_source=ds,
466
- sources=[measure_mapping.get(CDATAKeys.COLUMN_NAME.value)],
585
+ data_source=ds_info[0], # The datasource
586
+ sources=[ds_info[1]], # The actual source column name
467
587
  target=measure.get(CDATAKeys.ID.value),
468
588
  )
469
- for ds in data_sources
589
+ for ds_info in data_sources_with_columns
470
590
  ]
471
591
  )
472
592
  lineage += measure_lineage
@@ -519,7 +639,12 @@ def _(cdata: str) -> ParsedLineage:
519
639
  tree = ET.fromstring(cdata)
520
640
  measure_group = tree.find(CDATAKeys.PRIVATE_MEASURE_GROUP.value, ns)
521
641
  # TODO: Handle lineage from calculatedMeasures, restrictedMeasures and sharedDimensions
522
- return _read_attributes(measure_group, ns)
642
+ attribute_lineage = _read_attributes(measure_group, ns)
643
+ base_measure_lineage = _read_base_measures(
644
+ tree=measure_group, ns=ns, datasource_map=None
645
+ )
646
+
647
+ return attribute_lineage + base_measure_lineage
523
648
 
524
649
 
525
650
  @parse_registry.add(ViewType.ATTRIBUTE_VIEW.value)
@@ -643,10 +768,17 @@ def _parse_cv_data_sources(tree: ET.Element, ns: dict) -> DataSourceMap:
643
768
 
644
769
  for cv in calculation_views.findall(CDATAKeys.CALCULATION_VIEW.value, ns):
645
770
  mappings = _build_mappings(calculation_view=cv, ns=ns)
771
+ # Build mapping dict, keeping only the first occurrence of each target
772
+ # (subsequent ones are typically for join conditions)
773
+ mapping_dict = {}
774
+ for mapping in mappings:
775
+ if mapping.target not in mapping_dict:
776
+ mapping_dict[mapping.target] = mapping
777
+
646
778
  datasource_map[cv.get(CDATAKeys.ID.value)] = DataSource(
647
779
  name=cv.get(CDATAKeys.ID.value),
648
780
  location=None,
649
- mapping={mapping.target: mapping for mapping in mappings},
781
+ mapping=mapping_dict,
650
782
  source_type=ViewType.LOGICAL,
651
783
  )
652
784
 
@@ -690,28 +822,48 @@ def _build_mappings(calculation_view: ET.Element, ns: dict) -> List[DataSourceMa
690
822
  def _build_input_mappings(
691
823
  calculation_view: ET.Element, ns: dict
692
824
  ) -> List[DataSourceMapping]:
693
- """Map input nodes"""
825
+ """
826
+ Map input nodes preserving the exact target-to-source relationships.
827
+
828
+ IMPORTANT: Each target column should map to exactly one source.
829
+ When there are multiple inputs with the same source column name,
830
+ they map to different target columns (e.g., PRICE vs PRICE_1).
831
+ """
694
832
  mappings = []
695
833
  for input_node in calculation_view.findall(CDATAKeys.INPUT.value, ns):
834
+ input_node_name = input_node.get(CDATAKeys.NODE.value).replace("#", "")
835
+
696
836
  for mapping in input_node.findall(CDATAKeys.MAPPING.value, ns):
697
- if mapping.get(CDATAKeys.SOURCE.value) and mapping.get(
698
- CDATAKeys.TARGET.value
699
- ):
837
+ source_col = mapping.get(CDATAKeys.SOURCE.value)
838
+ target_col = mapping.get(CDATAKeys.TARGET.value)
839
+
840
+ if source_col and target_col:
841
+ # Each target column gets its own mapping entry
842
+ # We don't group here because each target maps to a specific source
700
843
  mappings.append(
701
844
  DataSourceMapping(
702
- target=mapping.get(CDATAKeys.TARGET.value),
845
+ target=target_col,
703
846
  parents=[
704
847
  ParentSource(
705
- source=mapping.get(CDATAKeys.SOURCE.value),
706
- parent=input_node.get(CDATAKeys.NODE.value).replace(
707
- "#", ""
708
- ),
848
+ source=source_col,
849
+ parent=input_node_name,
709
850
  )
710
851
  ],
711
852
  )
712
853
  )
713
854
 
714
- return _group_mappings(mappings)
855
+ # For Union views, we need to group because multiple inputs can map to the same target
856
+ # For Join views, we should NOT group because each target has a unique source
857
+ calculation_view_type = calculation_view.get(
858
+ "{http://www.w3.org/2001/XMLSchema-instance}type"
859
+ )
860
+
861
+ if calculation_view_type and "UnionView" in calculation_view_type:
862
+ return _group_mappings(mappings)
863
+ else:
864
+ # For Join, Projection, Aggregation views - each target has exactly one source
865
+ # We still return the list but don't group
866
+ return mappings
715
867
 
716
868
 
717
869
  def _build_cv_attributes(
@@ -770,3 +922,22 @@ def _group_mappings(mappings: List[DataSourceMapping]) -> List[DataSourceMapping
770
922
  ]
771
923
 
772
924
  return grouped_data
925
+
926
+
927
+ @lru_cache(maxsize=256)
928
+ def _get_mapped_schema(
929
+ engine: Engine,
930
+ schema_name: str,
931
+ ) -> str:
932
+ """
933
+ Get the physical schema for a given authoring schema
934
+ If schema is not mapped, then consider it as the physical schema
935
+ """
936
+ with engine.connect() as conn:
937
+ result = conn.execute(
938
+ SAPHANA_SCHEMA_MAPPING.format(authoring_schema=schema_name)
939
+ )
940
+ row = result.fetchone()
941
+ if row is not None:
942
+ return row[0]
943
+ return schema_name