openmetadata-ingestion 1.7.0.1__py3-none-any.whl → 1.7.1.1__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 (780) hide show
  1. metadata/applications/example.py +74 -0
  2. metadata/cli/classify.py +2 -4
  3. metadata/cli/common.py +26 -0
  4. metadata/cli/dataquality.py +2 -4
  5. metadata/cli/ingest.py +2 -4
  6. metadata/cli/profile.py +2 -4
  7. metadata/cli/usage.py +2 -4
  8. metadata/data_quality/source/test_suite.py +11 -1
  9. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +14 -2
  10. metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
  11. metadata/data_quality/validations/models.py +3 -0
  12. metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +120 -0
  13. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +61 -47
  14. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +24 -0
  15. metadata/examples/workflows/tableau.yaml +0 -3
  16. metadata/generated/schema/analytics/__init__.py +1 -1
  17. metadata/generated/schema/analytics/basic.py +1 -1
  18. metadata/generated/schema/analytics/reportData.py +1 -1
  19. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  20. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  21. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  22. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  23. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  24. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  25. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  26. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  27. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  28. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  29. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  30. metadata/generated/schema/api/__init__.py +1 -1
  31. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  32. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  33. metadata/generated/schema/api/analytics/__init__.py +1 -1
  34. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  35. metadata/generated/schema/api/automations/__init__.py +1 -1
  36. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  37. metadata/generated/schema/api/bulkAssets.py +1 -1
  38. metadata/generated/schema/api/classification/__init__.py +1 -1
  39. metadata/generated/schema/api/classification/createClassification.py +1 -1
  40. metadata/generated/schema/api/classification/createTag.py +1 -1
  41. metadata/generated/schema/api/classification/loadTags.py +1 -1
  42. metadata/generated/schema/api/createBot.py +1 -1
  43. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  44. metadata/generated/schema/api/createType.py +1 -1
  45. metadata/generated/schema/api/data/__init__.py +1 -1
  46. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  47. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  48. metadata/generated/schema/api/data/createChart.py +1 -1
  49. metadata/generated/schema/api/data/createContainer.py +1 -1
  50. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  51. metadata/generated/schema/api/data/createDashboard.py +1 -1
  52. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  53. metadata/generated/schema/api/data/createDatabase.py +1 -1
  54. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  55. metadata/generated/schema/api/data/createGlossary.py +1 -1
  56. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  57. metadata/generated/schema/api/data/createMetric.py +1 -1
  58. metadata/generated/schema/api/data/createMlModel.py +1 -1
  59. metadata/generated/schema/api/data/createPipeline.py +1 -1
  60. metadata/generated/schema/api/data/createQuery.py +1 -1
  61. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  62. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  63. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  64. metadata/generated/schema/api/data/createTable.py +1 -1
  65. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  66. metadata/generated/schema/api/data/createTopic.py +1 -1
  67. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  68. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  69. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  70. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  71. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  72. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  73. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  74. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  75. metadata/generated/schema/api/docStore/__init__.py +1 -1
  76. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  77. metadata/generated/schema/api/domains/__init__.py +1 -1
  78. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  79. metadata/generated/schema/api/domains/createDomain.py +1 -1
  80. metadata/generated/schema/api/feed/__init__.py +1 -1
  81. metadata/generated/schema/api/feed/closeTask.py +1 -1
  82. metadata/generated/schema/api/feed/createPost.py +1 -1
  83. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  84. metadata/generated/schema/api/feed/createThread.py +1 -1
  85. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  86. metadata/generated/schema/api/feed/threadCount.py +1 -1
  87. metadata/generated/schema/api/governance/__init__.py +1 -1
  88. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  89. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  90. metadata/generated/schema/api/lineage/__init__.py +1 -1
  91. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  92. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  93. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  94. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  95. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  96. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  97. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  98. metadata/generated/schema/api/policies/__init__.py +1 -1
  99. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  100. metadata/generated/schema/api/search/__init__.py +1 -1
  101. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  102. metadata/generated/schema/api/services/__init__.py +1 -1
  103. metadata/generated/schema/api/services/createApiService.py +1 -1
  104. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  105. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  106. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  107. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  108. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  109. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  110. metadata/generated/schema/api/services/createSearchService.py +1 -1
  111. metadata/generated/schema/api/services/createStorageService.py +1 -1
  112. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  113. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +8 -1
  114. metadata/generated/schema/api/setOwner.py +1 -1
  115. metadata/generated/schema/api/teams/__init__.py +1 -1
  116. metadata/generated/schema/api/teams/createPersona.py +1 -1
  117. metadata/generated/schema/api/teams/createRole.py +1 -1
  118. metadata/generated/schema/api/teams/createTeam.py +1 -1
  119. metadata/generated/schema/api/teams/createUser.py +1 -1
  120. metadata/generated/schema/api/tests/__init__.py +1 -1
  121. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  122. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  123. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  124. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  125. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  126. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  127. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  128. metadata/generated/schema/api/voteRequest.py +1 -1
  129. metadata/generated/schema/auth/__init__.py +1 -1
  130. metadata/generated/schema/auth/basicAuth.py +1 -1
  131. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  132. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  133. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  134. metadata/generated/schema/auth/emailRequest.py +1 -1
  135. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  136. metadata/generated/schema/auth/generateToken.py +1 -1
  137. metadata/generated/schema/auth/jwtAuth.py +1 -1
  138. metadata/generated/schema/auth/loginRequest.py +1 -1
  139. metadata/generated/schema/auth/logoutRequest.py +1 -1
  140. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  141. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  142. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  143. metadata/generated/schema/auth/refreshToken.py +1 -1
  144. metadata/generated/schema/auth/registrationRequest.py +1 -1
  145. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  146. metadata/generated/schema/auth/revokeToken.py +1 -1
  147. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  148. metadata/generated/schema/auth/ssoAuth.py +1 -1
  149. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  150. metadata/generated/schema/configuration/__init__.py +1 -1
  151. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  152. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  153. metadata/generated/schema/configuration/authConfig.py +1 -1
  154. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  155. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  156. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  165. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  166. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  167. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  168. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  169. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  170. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  171. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  172. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +3 -2
  175. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/opsConfig.py +1 -1
  177. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  178. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  179. metadata/generated/schema/configuration/searchSettings.py +1 -1
  180. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  185. metadata/generated/schema/configuration/workflowSettings.py +3 -3
  186. metadata/generated/schema/dataInsight/__init__.py +1 -1
  187. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  188. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  189. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  190. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  191. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  192. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  193. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  194. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  195. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  196. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  197. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  198. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  199. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  200. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  201. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  202. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  203. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  204. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  205. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  206. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  207. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  208. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  209. metadata/generated/schema/email/__init__.py +1 -1
  210. metadata/generated/schema/email/emailRequest.py +1 -1
  211. metadata/generated/schema/email/emailTemplate.py +1 -1
  212. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  213. metadata/generated/schema/email/smtpSettings.py +1 -1
  214. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  215. metadata/generated/schema/entity/__init__.py +1 -1
  216. metadata/generated/schema/entity/applications/__init__.py +1 -1
  217. metadata/generated/schema/entity/applications/app.py +4 -3
  218. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  219. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  220. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +10 -4
  222. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  224. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  226. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  228. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  229. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  230. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  231. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  232. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +3 -1
  250. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +18 -0
  253. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  260. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  261. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  262. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  263. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  264. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +5 -2
  265. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +12 -2
  266. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  267. metadata/generated/schema/entity/automations/__init__.py +1 -1
  268. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  269. metadata/generated/schema/entity/automations/workflow.py +1 -1
  270. metadata/generated/schema/entity/bot.py +1 -1
  271. metadata/generated/schema/entity/classification/__init__.py +1 -1
  272. metadata/generated/schema/entity/classification/classification.py +1 -1
  273. metadata/generated/schema/entity/classification/tag.py +1 -1
  274. metadata/generated/schema/entity/data/__init__.py +1 -1
  275. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  276. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  277. metadata/generated/schema/entity/data/chart.py +1 -1
  278. metadata/generated/schema/entity/data/container.py +1 -1
  279. metadata/generated/schema/entity/data/dashboard.py +1 -1
  280. metadata/generated/schema/entity/data/dashboardDataModel.py +2 -1
  281. metadata/generated/schema/entity/data/database.py +5 -1
  282. metadata/generated/schema/entity/data/databaseSchema.py +5 -1
  283. metadata/generated/schema/entity/data/glossary.py +1 -1
  284. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  285. metadata/generated/schema/entity/data/metric.py +1 -1
  286. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  287. metadata/generated/schema/entity/data/pipeline.py +1 -1
  288. metadata/generated/schema/entity/data/query.py +1 -1
  289. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  290. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  291. metadata/generated/schema/entity/data/report.py +1 -1
  292. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  293. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  294. metadata/generated/schema/entity/data/table.py +1 -1
  295. metadata/generated/schema/entity/data/topic.py +1 -1
  296. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  297. metadata/generated/schema/entity/docStore/document.py +1 -1
  298. metadata/generated/schema/entity/domains/__init__.py +1 -1
  299. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  300. metadata/generated/schema/entity/domains/domain.py +1 -1
  301. metadata/generated/schema/entity/events/__init__.py +1 -1
  302. metadata/generated/schema/entity/events/webhook.py +1 -1
  303. metadata/generated/schema/entity/feed/__init__.py +1 -1
  304. metadata/generated/schema/entity/feed/assets.py +1 -1
  305. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  306. metadata/generated/schema/entity/feed/description.py +1 -1
  307. metadata/generated/schema/entity/feed/domain.py +1 -1
  308. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  309. metadata/generated/schema/entity/feed/owner.py +1 -1
  310. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  311. metadata/generated/schema/entity/feed/tag.py +1 -1
  312. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  313. metadata/generated/schema/entity/feed/thread.py +1 -1
  314. metadata/generated/schema/entity/policies/__init__.py +1 -1
  315. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  316. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  317. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  318. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  319. metadata/generated/schema/entity/policies/filters.py +1 -1
  320. metadata/generated/schema/entity/policies/policy.py +1 -1
  321. metadata/generated/schema/entity/services/__init__.py +1 -1
  322. metadata/generated/schema/entity/services/apiService.py +5 -1
  323. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  324. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  325. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  326. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  327. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  328. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  329. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  330. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  331. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  332. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  334. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +2 -11
  353. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +9 -1
  403. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  424. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  430. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  431. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  438. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  444. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  470. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  472. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  473. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  474. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  478. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  483. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  484. metadata/generated/schema/entity/services/dashboardService.py +5 -1
  485. metadata/generated/schema/entity/services/databaseService.py +5 -1
  486. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  487. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +12 -1
  488. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  489. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  490. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  491. metadata/generated/schema/entity/services/messagingService.py +5 -1
  492. metadata/generated/schema/entity/services/metadataService.py +5 -1
  493. metadata/generated/schema/entity/services/mlmodelService.py +5 -1
  494. metadata/generated/schema/entity/services/pipelineService.py +5 -1
  495. metadata/generated/schema/entity/services/searchService.py +5 -1
  496. metadata/generated/schema/entity/services/serviceType.py +1 -1
  497. metadata/generated/schema/entity/services/storageService.py +5 -1
  498. metadata/generated/schema/entity/teams/__init__.py +1 -1
  499. metadata/generated/schema/entity/teams/persona.py +1 -1
  500. metadata/generated/schema/entity/teams/role.py +1 -1
  501. metadata/generated/schema/entity/teams/team.py +1 -1
  502. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  503. metadata/generated/schema/entity/teams/user.py +1 -1
  504. metadata/generated/schema/entity/type.py +1 -1
  505. metadata/generated/schema/entity/utils/__init__.py +1 -1
  506. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  507. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  508. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  509. metadata/generated/schema/events/__init__.py +1 -1
  510. metadata/generated/schema/events/alertMetrics.py +1 -1
  511. metadata/generated/schema/events/api/__init__.py +1 -1
  512. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  513. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  514. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  515. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  516. metadata/generated/schema/events/api/typedEvent.py +1 -1
  517. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  518. metadata/generated/schema/events/eventFilterRule.py +1 -1
  519. metadata/generated/schema/events/eventSubscription.py +1 -1
  520. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  521. metadata/generated/schema/events/failedEvent.py +1 -1
  522. metadata/generated/schema/events/failedEventResponse.py +1 -1
  523. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  524. metadata/generated/schema/events/statusContext.py +1 -1
  525. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  526. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  527. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  528. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  529. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  530. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  531. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  532. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  533. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  534. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  535. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  536. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  537. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  540. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  541. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  542. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  543. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  544. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  545. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  546. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  547. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  548. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  549. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  550. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  551. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  552. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  553. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  554. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  555. metadata/generated/schema/jobs/__init__.py +1 -1
  556. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  557. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  558. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  559. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/application.py +1 -1
  561. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  562. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  563. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  564. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  565. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  567. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  569. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  571. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  572. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  573. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  574. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  575. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  576. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  577. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  578. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  579. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  580. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  581. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  582. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  583. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  584. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  585. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  586. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  587. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  588. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  589. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  590. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  591. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  592. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  593. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  594. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  595. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  596. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  597. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  598. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  599. metadata/generated/schema/metadataIngestion/workflow.py +8 -1
  600. metadata/generated/schema/monitoring/__init__.py +1 -1
  601. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  602. metadata/generated/schema/search/__init__.py +1 -1
  603. metadata/generated/schema/search/aggregationRequest.py +1 -1
  604. metadata/generated/schema/search/searchRequest.py +1 -1
  605. metadata/generated/schema/security/__init__.py +1 -1
  606. metadata/generated/schema/security/client/__init__.py +1 -1
  607. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  608. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  609. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  610. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  611. metadata/generated/schema/security/client/oidcClientConfig.py +4 -1
  612. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  613. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  614. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  615. metadata/generated/schema/security/credentials/__init__.py +1 -1
  616. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  617. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  618. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  619. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  620. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  621. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  622. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  623. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  624. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  625. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  626. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  627. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  628. metadata/generated/schema/security/sasl/__init__.py +1 -1
  629. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  630. metadata/generated/schema/security/secrets/__init__.py +1 -1
  631. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  632. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  633. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  634. metadata/generated/schema/security/securityConfiguration.py +1 -1
  635. metadata/generated/schema/security/ssl/__init__.py +1 -1
  636. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  637. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  638. metadata/generated/schema/settings/__init__.py +1 -1
  639. metadata/generated/schema/settings/settings.py +1 -1
  640. metadata/generated/schema/system/__init__.py +1 -1
  641. metadata/generated/schema/system/entityError.py +1 -1
  642. metadata/generated/schema/system/eventPublisherJob.py +17 -5
  643. metadata/generated/schema/system/indexingError.py +1 -1
  644. metadata/generated/schema/system/limitsResponse.py +1 -1
  645. metadata/generated/schema/system/ui/__init__.py +1 -1
  646. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  647. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  648. metadata/generated/schema/system/ui/page.py +1 -1
  649. metadata/generated/schema/system/ui/tab.py +1 -1
  650. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  651. metadata/generated/schema/system/validationResponse.py +1 -1
  652. metadata/generated/schema/tests/__init__.py +1 -1
  653. metadata/generated/schema/tests/assigned.py +1 -1
  654. metadata/generated/schema/tests/basic.py +20 -20
  655. metadata/generated/schema/tests/customMetric.py +1 -1
  656. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  657. metadata/generated/schema/tests/resolved.py +1 -1
  658. metadata/generated/schema/tests/testCase.py +1 -1
  659. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  660. metadata/generated/schema/tests/testDefinition.py +1 -1
  661. metadata/generated/schema/tests/testSuite.py +1 -1
  662. metadata/generated/schema/type/__init__.py +1 -1
  663. metadata/generated/schema/type/apiSchema.py +1 -1
  664. metadata/generated/schema/type/assetCertification.py +1 -1
  665. metadata/generated/schema/type/auditLog.py +1 -1
  666. metadata/generated/schema/type/basic.py +1 -1
  667. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  668. metadata/generated/schema/type/changeEvent.py +1 -1
  669. metadata/generated/schema/type/changeEventType.py +1 -1
  670. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  671. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  672. metadata/generated/schema/type/csvDocumentation.py +1 -1
  673. metadata/generated/schema/type/csvErrorType.py +1 -1
  674. metadata/generated/schema/type/csvFile.py +1 -1
  675. metadata/generated/schema/type/csvImportResult.py +1 -1
  676. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  677. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  678. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  679. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  680. metadata/generated/schema/type/customProperty.py +1 -1
  681. metadata/generated/schema/type/dailyCount.py +1 -1
  682. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  683. metadata/generated/schema/type/entityHierarchy.py +1 -1
  684. metadata/generated/schema/type/entityHistory.py +1 -1
  685. metadata/generated/schema/type/entityLineage.py +1 -1
  686. metadata/generated/schema/type/entityReference.py +1 -1
  687. metadata/generated/schema/type/entityReferenceList.py +1 -1
  688. metadata/generated/schema/type/entityRelationship.py +1 -1
  689. metadata/generated/schema/type/entityUsage.py +1 -1
  690. metadata/generated/schema/type/filterPattern.py +1 -1
  691. metadata/generated/schema/type/function.py +1 -1
  692. metadata/generated/schema/type/include.py +1 -1
  693. metadata/generated/schema/type/jdbcConnection.py +1 -1
  694. metadata/generated/schema/type/lifeCycle.py +1 -1
  695. metadata/generated/schema/type/paging.py +1 -1
  696. metadata/generated/schema/type/profile.py +1 -1
  697. metadata/generated/schema/type/queryParserData.py +1 -1
  698. metadata/generated/schema/type/reaction.py +1 -1
  699. metadata/generated/schema/type/schedule.py +1 -1
  700. metadata/generated/schema/type/schema.py +1 -1
  701. metadata/generated/schema/type/tableQuery.py +1 -1
  702. metadata/generated/schema/type/tableUsageCount.py +1 -1
  703. metadata/generated/schema/type/tagLabel.py +2 -1
  704. metadata/generated/schema/type/usageDetails.py +1 -1
  705. metadata/generated/schema/type/usageRequest.py +1 -1
  706. metadata/generated/schema/type/votes.py +1 -1
  707. metadata/ingestion/api/topology_runner.py +5 -1
  708. metadata/ingestion/models/patch_request.py +71 -3
  709. metadata/ingestion/ometa/mixins/es_mixin.py +11 -5
  710. metadata/ingestion/source/api/rest/metadata.py +15 -2
  711. metadata/ingestion/source/dashboard/powerbi/metadata.py +131 -39
  712. metadata/ingestion/source/dashboard/powerbi/models.py +23 -1
  713. metadata/ingestion/source/dashboard/tableau/client.py +152 -171
  714. metadata/ingestion/source/dashboard/tableau/connection.py +23 -48
  715. metadata/ingestion/source/dashboard/tableau/metadata.py +73 -99
  716. metadata/ingestion/source/dashboard/tableau/models.py +8 -18
  717. metadata/ingestion/source/dashboard/tableau/queries.py +2 -2
  718. metadata/ingestion/source/database/athena/metadata.py +26 -0
  719. metadata/ingestion/source/database/bigquery/connection.py +8 -3
  720. metadata/ingestion/source/database/bigquery/helper.py +8 -6
  721. metadata/ingestion/source/database/bigquery/metadata.py +13 -5
  722. metadata/ingestion/source/database/dbt/metadata.py +30 -17
  723. metadata/ingestion/source/database/life_cycle_query_mixin.py +9 -0
  724. metadata/ingestion/source/database/mysql/connection.py +11 -3
  725. metadata/ingestion/source/database/mysql/lineage.py +4 -4
  726. metadata/ingestion/source/database/mysql/queries.py +29 -0
  727. metadata/ingestion/source/database/mysql/query_parser.py +31 -0
  728. metadata/ingestion/source/database/oracle/queries.py +2 -2
  729. metadata/ingestion/source/database/postgres/metadata.py +3 -1
  730. metadata/ingestion/source/database/postgres/queries.py +7 -0
  731. metadata/ingestion/source/database/postgres/utils.py +28 -19
  732. metadata/ingestion/source/database/snowflake/data_diff/__init__.py +0 -0
  733. metadata/ingestion/source/database/snowflake/data_diff/data_diff.py +37 -0
  734. metadata/ingestion/source/database/snowflake/metadata.py +14 -0
  735. metadata/ingestion/source/database/snowflake/queries.py +11 -7
  736. metadata/ingestion/source/database/snowflake/service_spec.py +4 -0
  737. metadata/ingestion/source/database/snowflake/utils.py +32 -4
  738. metadata/ingestion/source/database/vertica/queries.py +5 -20
  739. metadata/ingestion/source/pipeline/airbyte/constants.py +29 -0
  740. metadata/ingestion/source/pipeline/airbyte/metadata.py +67 -26
  741. metadata/ingestion/source/pipeline/airbyte/utils.py +99 -0
  742. metadata/ingestion/source/pipeline/openlineage/models.py +3 -2
  743. metadata/ingestion/source/pipeline/pipeline_service.py +2 -3
  744. metadata/ingestion/source/storage/s3/metadata.py +7 -8
  745. metadata/pii/algorithms/classifiers.py +180 -0
  746. metadata/pii/algorithms/column_patterns.py +61 -0
  747. metadata/pii/algorithms/feature_extraction.py +154 -0
  748. metadata/pii/algorithms/preprocessing.py +62 -0
  749. metadata/pii/algorithms/presidio_patches.py +45 -0
  750. metadata/pii/algorithms/presidio_utils.py +119 -0
  751. metadata/pii/algorithms/tags.py +111 -0
  752. metadata/pii/algorithms/utils.py +38 -0
  753. metadata/pii/base_processor.py +125 -0
  754. metadata/pii/constants.py +8 -0
  755. metadata/pii/processor.py +47 -138
  756. metadata/profiler/interface/sqlalchemy/profiler_interface.py +66 -36
  757. metadata/profiler/processor/runner.py +29 -6
  758. metadata/profiler/source/database/mssql/profiler_source.py +86 -0
  759. metadata/profiler/source/fetcher/profiler_source_factory.py +13 -0
  760. metadata/readers/dataframe/json.py +5 -1
  761. metadata/readers/dataframe/parquet.py +10 -2
  762. metadata/readers/dataframe/reader_factory.py +8 -0
  763. metadata/sampler/processor.py +1 -1
  764. metadata/sampler/sampler_interface.py +3 -0
  765. metadata/sampler/sqlalchemy/bigquery/sampler.py +2 -63
  766. metadata/sampler/sqlalchemy/sampler.py +32 -40
  767. metadata/utils/datalake/datalake_utils.py +9 -3
  768. metadata/utils/fqn.py +4 -4
  769. metadata/utils/service_spec/default.py +4 -0
  770. metadata/utils/service_spec/service_spec.py +1 -0
  771. metadata/utils/sqa_utils.py +15 -0
  772. metadata/workflow/base.py +8 -1
  773. metadata/workflow/profiler.py +9 -9
  774. metadata/workflow/workflow_status_mixin.py +1 -7
  775. {openmetadata_ingestion-1.7.0.1.dist-info → openmetadata_ingestion-1.7.1.1.dist-info}/METADATA +427 -421
  776. {openmetadata_ingestion-1.7.0.1.dist-info → openmetadata_ingestion-1.7.1.1.dist-info}/RECORD +780 -762
  777. {openmetadata_ingestion-1.7.0.1.dist-info → openmetadata_ingestion-1.7.1.1.dist-info}/LICENSE +0 -0
  778. {openmetadata_ingestion-1.7.0.1.dist-info → openmetadata_ingestion-1.7.1.1.dist-info}/WHEEL +0 -0
  779. {openmetadata_ingestion-1.7.0.1.dist-info → openmetadata_ingestion-1.7.1.1.dist-info}/entry_points.txt +0 -0
  780. {openmetadata_ingestion-1.7.0.1.dist-info → openmetadata_ingestion-1.7.1.1.dist-info}/top_level.txt +0 -0
@@ -13,23 +13,22 @@ Wrapper module of TableauServerConnection client
13
13
  """
14
14
  import math
15
15
  import traceback
16
- from typing import Any, Callable, Dict, List, Optional
16
+ from typing import Callable, Dict, List, Optional, Tuple, Union
17
17
 
18
- import pandas as pd
19
18
  import validators
20
19
  from cached_property import cached_property
21
- from packaging import version
22
- from tableau_api_lib import TableauServerConnection
23
- from tableau_api_lib.utils import extract_pages, flatten_dict_column
24
- from tableau_api_lib.utils.querying import get_views_dataframe
25
-
26
- from metadata.ingestion.source.dashboard.tableau import (
27
- TABLEAU_GET_VIEWS_PARAM_DICT,
28
- TABLEAU_GET_WORKBOOKS_PARAM_DICT,
20
+ from tableauserverclient import (
21
+ Pager,
22
+ PersonalAccessTokenAuth,
23
+ Server,
24
+ TableauAuth,
25
+ ViewItem,
29
26
  )
27
+
30
28
  from metadata.ingestion.source.dashboard.tableau.models import (
31
29
  CustomSQLTablesResponse,
32
30
  DataSource,
31
+ TableauBaseModel,
33
32
  TableauChart,
34
33
  TableauDashboard,
35
34
  TableauDatasources,
@@ -45,6 +44,18 @@ from metadata.utils.logger import ometa_logger
45
44
  logger = ometa_logger()
46
45
 
47
46
 
47
+ class TableauWorkBookException(Exception):
48
+ """
49
+ Raise when Workbooks information is not retrieved from the Tableau APIs
50
+ """
51
+
52
+
53
+ class TableauChartsException(Exception):
54
+ """
55
+ Raise when Charts information is not retrieved from the Tableau APIs
56
+ """
57
+
58
+
48
59
  class TableauOwnersNotFound(Exception):
49
60
  """
50
61
  Raise when Owner information is not retrieved from the Tableau APIs
@@ -62,183 +73,153 @@ class TableauClient:
62
73
  Wrapper to TableauServerConnection
63
74
  """
64
75
 
65
- _client: TableauServerConnection
66
-
67
76
  def __init__(
68
77
  self,
69
- tableau_server_config: Dict[str, Dict[str, Any]],
78
+ tableau_server_auth: Union[PersonalAccessTokenAuth, TableauAuth],
70
79
  config,
71
- env: str,
72
- ssl_verify: bool,
80
+ verify_ssl,
73
81
  pagination_limit: int,
74
82
  ):
75
- # ssl_verify is typed as a `bool` in TableauServerConnection
76
- # However, it is passed as `verify=self.ssl_verify` in each `requests` call.
77
- # In requests (https://requests.readthedocs.io/en/latest/user/advanced.html?highlight=ssl#ssl-cert-verification)
78
- # the param can be None, False to ignore HTTPS certs or a string with the path to the cert.
79
- self._client = TableauServerConnection(
80
- config_json=tableau_server_config,
81
- env=env,
82
- ssl_verify=ssl_verify,
83
- )
83
+ self.tableau_server = Server(str(config.hostPort), use_server_version=True)
84
+ self.tableau_server.add_http_options({"verify": verify_ssl})
85
+ self.tableau_server.auth.sign_in(tableau_server_auth)
84
86
  self.config = config
85
- self._client.sign_in().json()
86
87
  self.pagination_limit = pagination_limit
87
88
  self.custom_sql_table_queries: Dict[str, List[str]] = {}
88
89
  self.usage_metrics: Dict[str, int] = {}
89
90
 
90
91
  @cached_property
91
92
  def server_info(self) -> Callable:
92
- return self._client.server_info
93
+ return self.tableau_server.server_info.get
93
94
 
94
- @property
95
95
  def server_api_version(self) -> str:
96
- return self.server_info().json()["serverInfo"]["restApiVersion"]
96
+ return self.tableau_server.version
97
97
 
98
98
  @property
99
99
  def site_id(self) -> str:
100
- return self._client.site_id
101
-
102
- @property
103
- def query_workbooks_for_site(self) -> Callable:
104
- return self._client.query_workbooks_for_site
105
-
106
- @property
107
- def query_views_for_site(self) -> Callable:
108
- return self._client.query_views_for_site
109
-
110
- def get_owners(self) -> Optional[List[TableauOwner]]:
111
- owners = [workbook.owner for workbook in self.get_workbooks()]
112
- if len(owners) > 0:
113
- return owners
114
- raise TableauOwnersNotFound(
115
- "Unable to fetch Dashboard Owners from tableau\n"
116
- "Please check if the user has permissions to access the Owner information"
117
- )
100
+ return self.tableau_server.site_id
118
101
 
119
- def get_all_workbook_usage_metrics(self) -> None:
120
- """
121
- Get the usage metrics for all workbook and store it in self.usage_metrics
122
- """
102
+ def get_tableau_owner(self, owner_id: str) -> Optional[TableauOwner]:
123
103
  try:
124
- views_df = get_views_dataframe(self._client, all_fields=False)
125
- if views_df.empty:
126
- logger.debug("No views data found to process usage metrics.")
127
- return
128
-
129
- if "workbook" not in views_df.columns:
130
- logger.debug("Expected 'workbook' column not found in views data.")
131
- return
132
-
133
- usage_views_df = flatten_dict_column(
134
- df=views_df, keys=["id"], col_name="workbook"
135
- )
136
-
137
- if (
138
- "workbook_id" not in usage_views_df.columns
139
- or "usage_totalViewCount" not in usage_views_df.columns
140
- ):
141
- logger.debug(
142
- "Expected columns 'workbook_id' or 'usage_totalViewCount' not found after flattening."
143
- )
144
- return
145
-
146
- usage_views_df = usage_views_df[["workbook_id", "usage_totalViewCount"]]
147
- usage_views_df = (
148
- usage_views_df.groupby("workbook_id", as_index=False)[
149
- "usage_totalViewCount"
150
- ]
151
- .apply(lambda x: pd.to_numeric(x, errors="coerce").astype(int).sum())
152
- .reset_index()
153
- )
154
- self.usage_metrics.update(
155
- usage_views_df.set_index("workbook_id")[
156
- "usage_totalViewCount"
157
- ].to_dict()
104
+ owner = self.tableau_server.users.get_by_id(owner_id) if owner_id else None
105
+ if owner and owner.email:
106
+ return TableauOwner(id=owner.id, name=owner.name, email=owner.email)
107
+ except Exception as err:
108
+ logger.warning(
109
+ f"Failed to fetch owner details for ID {owner_id}: {str(err)}"
158
110
  )
159
- except Exception as exc:
160
- logger.debug(traceback.format_exc())
161
- logger.warning(f"Error processing workbook usage metrics: {exc}")
111
+ return None
162
112
 
163
- def get_workbook_view_count_by_id(self, workbook_id: str) -> Optional[int]:
113
+ def get_workbook_charts_and_user_count(
114
+ self, views: List[ViewItem]
115
+ ) -> Optional[Tuple[Optional[int], Optional[List[TableauChart]]]]:
164
116
  """
165
- Get a workbook view count by dashboard_id
117
+ Fetches workbook charts and dashboard user view count
166
118
  """
167
- if not self.usage_metrics:
168
- self.get_all_workbook_usage_metrics()
169
- return self.usage_metrics.get(workbook_id)
119
+ view_count = 0
120
+ charts: Optional[List[TableauChart]] = []
121
+ for view in views or []:
122
+ try:
123
+ charts.append(
124
+ TableauChart(
125
+ id=view.id,
126
+ name=view.name,
127
+ tags=view.tags,
128
+ owner=self.get_tableau_owner(view.owner_id),
129
+ contentUrl=view.content_url,
130
+ sheetType=view.sheet_type,
131
+ )
132
+ )
133
+ view_count += view.total_views
134
+ except AttributeError as e:
135
+ logger.warning(
136
+ f"Failed to process view due to missing attribute: {str(e)}"
137
+ )
138
+ continue
139
+ except Exception as e:
140
+ logger.warning(f"Failed to process view: {str(e)}")
141
+ continue
170
142
 
171
- def get_workbooks(self) -> List[TableauDashboard]:
172
- return [
173
- TableauDashboard(**workbook)
174
- for workbook in extract_pages(
175
- self.query_workbooks_for_site,
176
- parameter_dict=TABLEAU_GET_WORKBOOKS_PARAM_DICT,
177
- )
178
- ]
179
-
180
- def get_charts(self) -> List[TableauChart]:
181
- # For charts, we can also pick up usage as a field
182
- return [
183
- TableauChart(**chart)
184
- for chart in extract_pages(
185
- self.query_views_for_site,
186
- content_id=self.site_id,
187
- parameter_dict=TABLEAU_GET_VIEWS_PARAM_DICT,
188
- )
189
- ]
143
+ return charts, view_count
190
144
 
191
- def get_workbook_charts(self, dashboard_id: str) -> Optional[List[TableauChart]]:
145
+ def get_workbooks(self) -> List[TableauDashboard]:
192
146
  """
193
- Get the charts for a workbook
147
+ Fetch all tableau workbooks
194
148
  """
195
- try:
196
- return [
197
- TableauChart(**chart)
198
- for chart in self._client.query_views_for_workbook(
199
- workbook_id=dashboard_id,
200
- parameter_dict=TABLEAU_GET_VIEWS_PARAM_DICT,
201
- ).json()["views"]["view"]
202
- ]
203
- except Exception as exc:
204
- logger.debug(traceback.format_exc())
205
- logger.warning(
206
- f"Error processing charts for dashboard [{dashboard_id}]: {exc}"
207
- )
208
- return None
149
+ workbooks: Optional[List[TableauDashboard]] = []
150
+ self.cache_custom_sql_tables()
151
+ for workbook in Pager(self.tableau_server.workbooks):
152
+ try:
153
+ self.tableau_server.workbooks.populate_views(workbook, usage=True)
154
+ charts, user_views = self.get_workbook_charts_and_user_count(
155
+ workbook.views
156
+ )
157
+ workbooks.append(
158
+ TableauDashboard(
159
+ id=workbook.id,
160
+ name=workbook.name,
161
+ project=TableauBaseModel(
162
+ id=workbook.project_id, name=workbook.project_name
163
+ ),
164
+ description=workbook.description,
165
+ owner=self.get_tableau_owner(workbook.owner_id),
166
+ tags=workbook.tags,
167
+ webpageUrl=workbook.webpage_url,
168
+ charts=charts,
169
+ dataModels=self.get_datasources(dashboard_id=workbook.id),
170
+ user_views=user_views,
171
+ )
172
+ )
173
+ except AttributeError as err:
174
+ logger.warning(
175
+ f"Failed to process workbook due to missing attribute: {str(err)}"
176
+ )
177
+ continue
178
+ except Exception as err:
179
+ logger.warning(f"Failed to process workbook: {str(err)}")
180
+ continue
181
+ return workbooks
182
+
183
+ def test_get_workbooks(self):
184
+ for workbook in Pager(self.tableau_server.workbooks):
185
+ if workbook.id is not None:
186
+ self.tableau_server.workbooks.populate_views(workbook, usage=True)
187
+ return workbook
188
+ break
189
+ raise TableauWorkBookException(
190
+ "Unable to fetch Dashboards from tableau\n"
191
+ "Please check if the user has permissions to access the Dashboards information"
192
+ )
209
193
 
210
- def test_api_version(self):
211
- """
212
- Method to validate the declared v/s server tableau rest api version
213
- """
214
- server_api_version = version.parse(self.server_api_version)
215
- declared_api_version = version.parse(self.config.apiVersion)
216
- if declared_api_version > server_api_version:
217
- raise ValueError(
218
- f"""
219
- Your API version of '{declared_api_version}' is too damn high!
220
- The server you are establishing a connection with is using REST API version '{server_api_version}'.
221
- """
222
- )
223
- if declared_api_version < server_api_version:
224
- raise ValueError(
225
- f"""
226
- The Tableau Server REST API version you specified is lower than the version your server uses.
227
- Your Tableau Server is on REST API version {server_api_version}.
228
- The REST API version you specified is {declared_api_version}.
229
- For optimal results, please change the 'api_version' config variable to {server_api_version}.
230
- """
231
- )
194
+ def test_get_workbook_views(self):
195
+ workbook = self.test_get_workbooks()
196
+ charts, _ = self.get_workbook_charts_and_user_count(workbook.views)
197
+ if charts:
198
+ return True
199
+ raise TableauChartsException(
200
+ "Unable to fetch Charts from tableau\n"
201
+ "Please check if the user has permissions to access the Charts information"
202
+ )
203
+
204
+ def test_get_owners(self) -> Optional[List[TableauOwner]]:
205
+ workbook = self.test_get_workbooks()
206
+ owners = self.get_tableau_owner(workbook.owner_id)
207
+ if owners is not None:
208
+ return owners
209
+ raise TableauOwnersNotFound(
210
+ "Unable to fetch Dashboard Owners from tableau\n"
211
+ "Please check if the user has permissions to access the Owner information"
212
+ )
232
213
 
233
214
  def test_site_url(self):
234
215
  """
235
216
  Method to test the site url and site name fields
236
217
  """
237
- validation = validators.url(self.config.siteUrl)
218
+ validation = validators.url(self.config.siteName)
238
219
  if validation:
239
220
  raise ValueError(
240
221
  f"""
241
- The site url "{self.config.siteUrl}" is in incorrect format.
222
+ The site url "{self.config.siteName}" is in incorrect format.
242
223
  If "https://xxx.tableau.com/#/site/MarketingTeam/home" represents the homepage url for your tableau site,
243
224
  the "MarketingTeam" from the url should be entered in the Site Name and Site Url fields.
244
225
  """
@@ -249,17 +230,16 @@ class TableauClient:
249
230
  """
250
231
  Method to test the datamodels
251
232
  """
252
- workbooks = self.get_workbooks()
233
+ workbook = self.test_get_workbooks()
253
234
 
254
- if len(workbooks) == 0:
235
+ if workbook.id is None:
255
236
  raise TableauDataModelsException(
256
237
  "Unable to get any workbooks to fetch tableau data sources"
257
238
  )
258
239
 
259
240
  # Take the 1st workbook's id and pass to the graphql query
260
- test_workbook = workbooks[0]
261
241
  data = self._query_datasources(
262
- dashboard_id=test_workbook.id, entities_per_page=1, offset=0
242
+ dashboard_id=workbook.id, entities_per_page=1, offset=0
263
243
  )
264
244
  if data:
265
245
  return data
@@ -278,16 +258,17 @@ class TableauClient:
278
258
  Method to query the graphql endpoint to get data sources
279
259
  """
280
260
  try:
281
- datasources_graphql_result = self._client.metadata_graphql_query(
261
+ datasources_graphql_result = self.tableau_server.metadata.query(
282
262
  query=TABLEAU_DATASOURCES_QUERY.format(
283
263
  workbook_id=dashboard_id, first=entities_per_page, offset=offset
284
264
  )
285
265
  )
286
266
  if datasources_graphql_result:
287
- resp = datasources_graphql_result.json()
288
- if resp and resp.get("data"):
267
+ if datasources_graphql_result and datasources_graphql_result.get(
268
+ "data"
269
+ ):
289
270
  tableau_datasource_connection = TableauDatasourcesConnection(
290
- **resp["data"]["workbooks"][0]
271
+ **datasources_graphql_result["data"]["workbooks"][0]
291
272
  )
292
273
  return tableau_datasource_connection.embeddedDatasourcesConnection
293
274
  except Exception:
@@ -330,15 +311,15 @@ class TableauClient:
330
311
  logger.warning("Unable to fetch Data Sources")
331
312
  return None
332
313
 
333
- def get_custom_sql_table_queries(self, dashboard_id: str) -> Optional[List[str]]:
314
+ def get_custom_sql_table_queries(self, datasource_id: str) -> Optional[List[str]]:
334
315
  """
335
316
  Get custom SQL table queries for a specific dashboard/workbook ID
336
317
  """
337
- logger.debug(f"Getting custom SQL table queries for dashboard {dashboard_id}")
318
+ logger.debug(f"Getting custom SQL table queries for datasource {datasource_id}")
338
319
 
339
- if dashboard_id in self.custom_sql_table_queries:
340
- logger.debug(f"Found cached queries for dashboard {dashboard_id}")
341
- return self.custom_sql_table_queries[dashboard_id]
320
+ if datasource_id in self.custom_sql_table_queries:
321
+ logger.debug(f"Found cached queries for datasource {datasource_id}")
322
+ return self.custom_sql_table_queries[datasource_id]
342
323
 
343
324
  return None
344
325
 
@@ -347,30 +328,30 @@ class TableauClient:
347
328
  Fetch all custom SQL tables and cache their queries by workbook ID
348
329
  """
349
330
  try:
350
- result = self._client.metadata_graphql_query(
331
+ result = self.tableau_server.metadata.query(
351
332
  query=TALEAU_GET_CUSTOM_SQL_QUERY
352
333
  )
353
- if not result or not (response_json := result.json()):
334
+ if not result:
354
335
  logger.debug("No result returned from GraphQL query")
355
336
  return
356
337
 
357
- response = CustomSQLTablesResponse(**response_json)
338
+ response = CustomSQLTablesResponse(**result)
358
339
  if not response.data:
359
340
  logger.debug("No data found in GraphQL response")
360
341
  return
361
342
 
362
343
  for tables in response.data.values():
363
344
  for table in tables:
364
- if not (table.query and table.downstreamWorkbooks):
345
+ if not (table.query and table.downstreamDatasources):
365
346
  logger.debug(
366
347
  f"Skipping table {table} - missing query or workbooks"
367
348
  )
368
349
  continue
369
350
 
370
351
  query = table.query
371
- for workbook in table.downstreamWorkbooks:
352
+ for datasource in table.downstreamDatasources:
372
353
  self.custom_sql_table_queries.setdefault(
373
- workbook.luid, []
354
+ datasource.id, []
374
355
  ).append(query)
375
356
 
376
357
  except Exception:
@@ -378,4 +359,4 @@ class TableauClient:
378
359
  logger.warning("Unable to fetch Custom SQL Tables")
379
360
 
380
361
  def sign_out(self) -> None:
381
- self._client.sign_out()
362
+ self.tableau_server.auth.sign_out()
@@ -13,10 +13,9 @@
13
13
  Source connection handler
14
14
  """
15
15
  import traceback
16
- from functools import partial
17
16
  from typing import Any, Dict, Optional
18
17
 
19
- from tableau_api_lib.utils import extract_pages
18
+ import tableauserverclient as TSC
20
19
 
21
20
  from metadata.generated.schema.entity.automations.workflow import (
22
21
  Workflow as AutomationWorkflow,
@@ -36,10 +35,6 @@ from metadata.ingestion.connections.test_connections import (
36
35
  test_connection_steps,
37
36
  )
38
37
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
39
- from metadata.ingestion.source.dashboard.tableau import (
40
- TABLEAU_GET_VIEWS_PARAM_DICT,
41
- TABLEAU_GET_WORKBOOKS_PARAM_DICT,
42
- )
43
38
  from metadata.ingestion.source.dashboard.tableau.client import TableauClient
44
39
  from metadata.utils.constants import THREE_MIN
45
40
  from metadata.utils.logger import ingestion_logger
@@ -52,14 +47,13 @@ def get_connection(connection: TableauConnection) -> TableauClient:
52
47
  """
53
48
  Create connection
54
49
  """
55
- tableau_server_config = build_server_config(connection)
50
+ tableau_server_auth = build_server_config(connection)
56
51
  get_verify_ssl = get_verify_ssl_fn(connection.verifySSL)
57
52
  try:
58
53
  return TableauClient(
59
- tableau_server_config=tableau_server_config,
54
+ tableau_server_auth=tableau_server_auth,
60
55
  config=connection,
61
- env=connection.env,
62
- ssl_verify=get_verify_ssl(connection.sslConfig),
56
+ verify_ssl=get_verify_ssl(connection.sslConfig),
63
57
  pagination_limit=connection.paginationLimit,
64
58
  )
65
59
  except Exception as exc:
@@ -83,26 +77,11 @@ def test_connection(
83
77
 
84
78
  test_fn = {
85
79
  "ServerInfo": client.server_info,
86
- # The Tableau server_info API doesn't provide direct access to the API version.
87
- # This is due to the "api_version" being a mandatory field for the tableau library's connection class.
88
- # Without this information, requests to the Tableau server cannot be made,
89
- # including fetching the server info containing the "api_version".
90
- # Consequently, we'll compare the declared api_version with the server's api_version during the test connection
91
- # once the tableau library's connection class is initialized.
92
- "ValidateApiVersion": client.test_api_version,
80
+ "ValidateApiVersion": client.server_api_version,
93
81
  "ValidateSiteUrl": client.test_site_url,
94
- "GetWorkbooks": partial(
95
- extract_pages,
96
- query_func=client.query_workbooks_for_site,
97
- parameter_dict=TABLEAU_GET_WORKBOOKS_PARAM_DICT,
98
- ),
99
- "GetViews": partial(
100
- extract_pages,
101
- query_func=client.query_views_for_site,
102
- content_id=client.site_id,
103
- parameter_dict=TABLEAU_GET_VIEWS_PARAM_DICT,
104
- ),
105
- "GetOwners": client.get_owners,
82
+ "GetWorkbooks": client.test_get_workbooks,
83
+ "GetViews": client.test_get_workbook_views,
84
+ "GetOwners": client.test_get_owners,
106
85
  "GetDataModels": client.test_get_datamodels,
107
86
  }
108
87
 
@@ -123,24 +102,20 @@ def build_server_config(connection: TableauConnection) -> Dict[str, Dict[str, An
123
102
  Returns:
124
103
  Client configuration
125
104
  """
126
- tableau_server_config = {
127
- f"{connection.env}": {
128
- "server": str(connection.hostPort),
129
- "api_version": str(connection.apiVersion),
130
- "site_name": connection.siteName if connection.siteName else "",
131
- "site_url": connection.siteUrl if connection.siteUrl else "",
132
- }
133
- }
105
+
134
106
  if isinstance(connection.authType, BasicAuth):
135
- tableau_server_config[connection.env]["username"] = connection.authType.username
136
- tableau_server_config[connection.env][
137
- "password"
138
- ] = connection.authType.password.get_secret_value()
107
+ tableau_auth = TSC.TableauAuth(
108
+ username=connection.authType.username,
109
+ password=connection.authType.password.get_secret_value(),
110
+ site_id=connection.siteName if connection.siteName else "",
111
+ )
139
112
  elif isinstance(connection.authType, AccessTokenAuth):
140
- tableau_server_config[connection.env][
141
- "personal_access_token_name"
142
- ] = connection.authType.personalAccessTokenName
143
- tableau_server_config[connection.env][
144
- "personal_access_token_secret"
145
- ] = connection.authType.personalAccessTokenSecret.get_secret_value()
146
- return tableau_server_config
113
+ tableau_auth = TSC.PersonalAccessTokenAuth(
114
+ token_name=connection.authType.personalAccessTokenName,
115
+ personal_access_token=connection.authType.personalAccessTokenSecret.get_secret_value(),
116
+ site_id=connection.siteName if connection.siteName else "",
117
+ )
118
+ else:
119
+ raise ValueError("Unsupported authentication type")
120
+
121
+ return tableau_auth