openmetadata-ingestion 1.7.0.0rc2__py3-none-any.whl → 1.7.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openmetadata-ingestion might be problematic. Click here for more details.

Files changed (796) 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/processor/test_case_runner.py +6 -8
  9. metadata/data_quality/runner/base_test_suite_source.py +10 -4
  10. metadata/data_quality/source/test_suite.py +11 -1
  11. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +14 -2
  12. metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
  13. metadata/data_quality/validations/models.py +3 -0
  14. metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +120 -0
  15. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +61 -47
  16. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +24 -0
  17. metadata/examples/workflows/tableau.yaml +0 -3
  18. metadata/generated/schema/analytics/__init__.py +1 -1
  19. metadata/generated/schema/analytics/basic.py +1 -1
  20. metadata/generated/schema/analytics/reportData.py +1 -1
  21. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  22. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  23. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  24. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  25. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  26. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  27. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  28. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  29. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  30. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  31. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  32. metadata/generated/schema/api/__init__.py +1 -1
  33. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  34. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  35. metadata/generated/schema/api/analytics/__init__.py +1 -1
  36. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  37. metadata/generated/schema/api/automations/__init__.py +1 -1
  38. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  39. metadata/generated/schema/api/bulkAssets.py +1 -1
  40. metadata/generated/schema/api/classification/__init__.py +1 -1
  41. metadata/generated/schema/api/classification/createClassification.py +1 -1
  42. metadata/generated/schema/api/classification/createTag.py +1 -1
  43. metadata/generated/schema/api/classification/loadTags.py +1 -1
  44. metadata/generated/schema/api/createBot.py +1 -1
  45. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  46. metadata/generated/schema/api/createType.py +1 -1
  47. metadata/generated/schema/api/data/__init__.py +1 -1
  48. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  49. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  50. metadata/generated/schema/api/data/createChart.py +1 -1
  51. metadata/generated/schema/api/data/createContainer.py +1 -1
  52. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  53. metadata/generated/schema/api/data/createDashboard.py +1 -1
  54. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  55. metadata/generated/schema/api/data/createDatabase.py +1 -1
  56. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  57. metadata/generated/schema/api/data/createGlossary.py +1 -1
  58. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  59. metadata/generated/schema/api/data/createMetric.py +1 -1
  60. metadata/generated/schema/api/data/createMlModel.py +1 -1
  61. metadata/generated/schema/api/data/createPipeline.py +1 -1
  62. metadata/generated/schema/api/data/createQuery.py +1 -1
  63. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  64. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  65. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  66. metadata/generated/schema/api/data/createTable.py +1 -1
  67. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  68. metadata/generated/schema/api/data/createTopic.py +1 -1
  69. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  70. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  71. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  72. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  73. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  74. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  75. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  76. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  77. metadata/generated/schema/api/docStore/__init__.py +1 -1
  78. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  79. metadata/generated/schema/api/domains/__init__.py +1 -1
  80. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  81. metadata/generated/schema/api/domains/createDomain.py +1 -1
  82. metadata/generated/schema/api/feed/__init__.py +1 -1
  83. metadata/generated/schema/api/feed/closeTask.py +1 -1
  84. metadata/generated/schema/api/feed/createPost.py +1 -1
  85. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  86. metadata/generated/schema/api/feed/createThread.py +1 -1
  87. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  88. metadata/generated/schema/api/feed/threadCount.py +1 -1
  89. metadata/generated/schema/api/governance/__init__.py +1 -1
  90. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  91. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  92. metadata/generated/schema/api/lineage/__init__.py +1 -1
  93. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  94. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  95. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  96. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  97. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  98. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  99. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  100. metadata/generated/schema/api/policies/__init__.py +1 -1
  101. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  102. metadata/generated/schema/api/search/__init__.py +1 -1
  103. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  104. metadata/generated/schema/api/services/__init__.py +1 -1
  105. metadata/generated/schema/api/services/createApiService.py +1 -1
  106. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  107. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  108. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  109. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  110. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  111. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  112. metadata/generated/schema/api/services/createSearchService.py +1 -1
  113. metadata/generated/schema/api/services/createStorageService.py +1 -1
  114. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  115. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +8 -1
  116. metadata/generated/schema/api/setOwner.py +1 -1
  117. metadata/generated/schema/api/teams/__init__.py +1 -1
  118. metadata/generated/schema/api/teams/createPersona.py +1 -1
  119. metadata/generated/schema/api/teams/createRole.py +1 -1
  120. metadata/generated/schema/api/teams/createTeam.py +1 -1
  121. metadata/generated/schema/api/teams/createUser.py +1 -1
  122. metadata/generated/schema/api/tests/__init__.py +1 -1
  123. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  124. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  125. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  126. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  127. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  128. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  129. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  130. metadata/generated/schema/api/voteRequest.py +1 -1
  131. metadata/generated/schema/auth/__init__.py +1 -1
  132. metadata/generated/schema/auth/basicAuth.py +1 -1
  133. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  134. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  135. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  136. metadata/generated/schema/auth/emailRequest.py +1 -1
  137. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  138. metadata/generated/schema/auth/generateToken.py +1 -1
  139. metadata/generated/schema/auth/jwtAuth.py +1 -1
  140. metadata/generated/schema/auth/loginRequest.py +1 -1
  141. metadata/generated/schema/auth/logoutRequest.py +1 -1
  142. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  143. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  144. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  145. metadata/generated/schema/auth/refreshToken.py +1 -1
  146. metadata/generated/schema/auth/registrationRequest.py +1 -1
  147. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  148. metadata/generated/schema/auth/revokeToken.py +1 -1
  149. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  150. metadata/generated/schema/auth/ssoAuth.py +1 -1
  151. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  152. metadata/generated/schema/configuration/__init__.py +1 -1
  153. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  154. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  155. metadata/generated/schema/configuration/authConfig.py +1 -1
  156. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/elasticSearchConfiguration.py +8 -1
  161. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  165. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  166. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  167. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  168. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  169. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  170. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  171. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  172. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  174. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +3 -2
  177. metadata/generated/schema/configuration/opertionalConfiguration.py +24 -0
  178. metadata/generated/schema/configuration/opsConfig.py +25 -0
  179. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/searchSettings.py +1 -1
  182. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  185. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  186. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  187. metadata/generated/schema/configuration/workflowSettings.py +3 -3
  188. metadata/generated/schema/dataInsight/__init__.py +1 -1
  189. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  190. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  191. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  192. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  193. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  194. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  195. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  196. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  197. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  198. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  199. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  200. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  201. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  202. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  203. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  204. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  205. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  206. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  207. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  208. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  209. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  210. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  211. metadata/generated/schema/email/__init__.py +1 -1
  212. metadata/generated/schema/email/emailRequest.py +1 -1
  213. metadata/generated/schema/email/emailTemplate.py +1 -1
  214. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  215. metadata/generated/schema/email/smtpSettings.py +6 -4
  216. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  217. metadata/generated/schema/entity/__init__.py +1 -1
  218. metadata/generated/schema/entity/applications/__init__.py +1 -1
  219. metadata/generated/schema/entity/applications/app.py +4 -3
  220. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  221. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  222. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +10 -4
  224. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  226. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  228. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  229. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  230. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  231. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  232. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +3 -1
  252. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +18 -0
  255. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  262. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  263. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  264. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  265. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  266. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +5 -2
  267. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +12 -2
  268. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  269. metadata/generated/schema/entity/automations/__init__.py +1 -1
  270. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  271. metadata/generated/schema/entity/automations/workflow.py +1 -1
  272. metadata/generated/schema/entity/bot.py +1 -1
  273. metadata/generated/schema/entity/classification/__init__.py +1 -1
  274. metadata/generated/schema/entity/classification/classification.py +1 -1
  275. metadata/generated/schema/entity/classification/tag.py +1 -1
  276. metadata/generated/schema/entity/data/__init__.py +1 -1
  277. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  278. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  279. metadata/generated/schema/entity/data/chart.py +1 -1
  280. metadata/generated/schema/entity/data/container.py +1 -1
  281. metadata/generated/schema/entity/data/dashboard.py +1 -1
  282. metadata/generated/schema/entity/data/dashboardDataModel.py +2 -1
  283. metadata/generated/schema/entity/data/database.py +5 -1
  284. metadata/generated/schema/entity/data/databaseSchema.py +5 -1
  285. metadata/generated/schema/entity/data/glossary.py +1 -1
  286. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  287. metadata/generated/schema/entity/data/metric.py +1 -1
  288. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  289. metadata/generated/schema/entity/data/pipeline.py +1 -1
  290. metadata/generated/schema/entity/data/query.py +1 -1
  291. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  292. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  293. metadata/generated/schema/entity/data/report.py +1 -1
  294. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  295. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  296. metadata/generated/schema/entity/data/table.py +1 -1
  297. metadata/generated/schema/entity/data/topic.py +1 -1
  298. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  299. metadata/generated/schema/entity/docStore/document.py +1 -1
  300. metadata/generated/schema/entity/domains/__init__.py +1 -1
  301. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  302. metadata/generated/schema/entity/domains/domain.py +1 -1
  303. metadata/generated/schema/entity/events/__init__.py +1 -1
  304. metadata/generated/schema/entity/events/webhook.py +1 -1
  305. metadata/generated/schema/entity/feed/__init__.py +1 -1
  306. metadata/generated/schema/entity/feed/assets.py +1 -1
  307. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  308. metadata/generated/schema/entity/feed/description.py +1 -1
  309. metadata/generated/schema/entity/feed/domain.py +1 -1
  310. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  311. metadata/generated/schema/entity/feed/owner.py +1 -1
  312. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  313. metadata/generated/schema/entity/feed/tag.py +1 -1
  314. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  315. metadata/generated/schema/entity/feed/thread.py +1 -1
  316. metadata/generated/schema/entity/policies/__init__.py +1 -1
  317. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  318. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  319. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  320. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  321. metadata/generated/schema/entity/policies/filters.py +1 -1
  322. metadata/generated/schema/entity/policies/policy.py +1 -1
  323. metadata/generated/schema/entity/services/__init__.py +1 -1
  324. metadata/generated/schema/entity/services/apiService.py +5 -1
  325. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  326. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  327. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  328. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  329. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  330. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  331. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  332. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  333. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  334. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +2 -11
  355. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +9 -1
  405. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  426. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  432. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  433. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  440. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  446. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  472. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  474. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  476. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  480. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  485. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  486. metadata/generated/schema/entity/services/dashboardService.py +5 -1
  487. metadata/generated/schema/entity/services/databaseService.py +5 -1
  488. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  489. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +12 -1
  490. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  491. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  492. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  493. metadata/generated/schema/entity/services/messagingService.py +5 -1
  494. metadata/generated/schema/entity/services/metadataService.py +5 -1
  495. metadata/generated/schema/entity/services/mlmodelService.py +5 -1
  496. metadata/generated/schema/entity/services/pipelineService.py +5 -1
  497. metadata/generated/schema/entity/services/searchService.py +5 -1
  498. metadata/generated/schema/entity/services/serviceType.py +1 -1
  499. metadata/generated/schema/entity/services/storageService.py +5 -1
  500. metadata/generated/schema/entity/teams/__init__.py +1 -1
  501. metadata/generated/schema/entity/teams/persona.py +1 -1
  502. metadata/generated/schema/entity/teams/role.py +1 -1
  503. metadata/generated/schema/entity/teams/team.py +1 -1
  504. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  505. metadata/generated/schema/entity/teams/user.py +1 -1
  506. metadata/generated/schema/entity/type.py +1 -1
  507. metadata/generated/schema/entity/utils/__init__.py +1 -1
  508. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  509. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  510. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  511. metadata/generated/schema/events/__init__.py +1 -1
  512. metadata/generated/schema/events/alertMetrics.py +1 -1
  513. metadata/generated/schema/events/api/__init__.py +1 -1
  514. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  515. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  516. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  517. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  518. metadata/generated/schema/events/api/typedEvent.py +1 -1
  519. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  520. metadata/generated/schema/events/eventFilterRule.py +1 -1
  521. metadata/generated/schema/events/eventSubscription.py +1 -1
  522. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  523. metadata/generated/schema/events/failedEvent.py +1 -1
  524. metadata/generated/schema/events/failedEventResponse.py +1 -1
  525. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  526. metadata/generated/schema/events/statusContext.py +1 -1
  527. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  528. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  529. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  530. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  531. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  532. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  533. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  534. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  535. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  536. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  537. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  542. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  543. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  544. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  545. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  546. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  547. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  548. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  549. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  550. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  551. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  552. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  553. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  554. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  555. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  556. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  557. metadata/generated/schema/jobs/__init__.py +1 -1
  558. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  559. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  560. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  561. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  562. metadata/generated/schema/metadataIngestion/application.py +1 -1
  563. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  564. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  565. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  567. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  569. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  572. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  573. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  574. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  575. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  576. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  577. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  578. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  579. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  580. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  581. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  582. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  583. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  584. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  585. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  586. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  587. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  588. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  589. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  590. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  591. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  592. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  593. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  594. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  595. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  596. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  597. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  598. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  599. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  600. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  601. metadata/generated/schema/metadataIngestion/workflow.py +8 -1
  602. metadata/generated/schema/monitoring/__init__.py +1 -1
  603. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  604. metadata/generated/schema/search/__init__.py +1 -1
  605. metadata/generated/schema/search/aggregationRequest.py +1 -1
  606. metadata/generated/schema/search/searchRequest.py +1 -1
  607. metadata/generated/schema/security/__init__.py +1 -1
  608. metadata/generated/schema/security/client/__init__.py +1 -1
  609. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  610. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  611. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  612. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  613. metadata/generated/schema/security/client/oidcClientConfig.py +4 -1
  614. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  615. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  616. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  617. metadata/generated/schema/security/credentials/__init__.py +1 -1
  618. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  619. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  620. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  621. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  622. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  623. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  624. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  625. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  626. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  627. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  628. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  629. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  630. metadata/generated/schema/security/sasl/__init__.py +1 -1
  631. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  632. metadata/generated/schema/security/secrets/__init__.py +1 -1
  633. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  634. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  635. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  636. metadata/generated/schema/security/securityConfiguration.py +1 -1
  637. metadata/generated/schema/security/ssl/__init__.py +1 -1
  638. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  639. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  640. metadata/generated/schema/settings/__init__.py +1 -1
  641. metadata/generated/schema/settings/settings.py +1 -1
  642. metadata/generated/schema/system/__init__.py +1 -1
  643. metadata/generated/schema/system/entityError.py +1 -1
  644. metadata/generated/schema/system/eventPublisherJob.py +17 -5
  645. metadata/generated/schema/system/indexingError.py +2 -2
  646. metadata/generated/schema/system/limitsResponse.py +1 -1
  647. metadata/generated/schema/system/ui/__init__.py +1 -1
  648. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  649. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  650. metadata/generated/schema/system/ui/page.py +1 -1
  651. metadata/generated/schema/system/ui/tab.py +1 -1
  652. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  653. metadata/generated/schema/system/validationResponse.py +1 -1
  654. metadata/generated/schema/tests/__init__.py +1 -1
  655. metadata/generated/schema/tests/assigned.py +1 -1
  656. metadata/generated/schema/tests/basic.py +20 -20
  657. metadata/generated/schema/tests/customMetric.py +1 -1
  658. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  659. metadata/generated/schema/tests/resolved.py +1 -1
  660. metadata/generated/schema/tests/testCase.py +1 -1
  661. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  662. metadata/generated/schema/tests/testDefinition.py +1 -1
  663. metadata/generated/schema/tests/testSuite.py +1 -1
  664. metadata/generated/schema/type/__init__.py +1 -1
  665. metadata/generated/schema/type/apiSchema.py +1 -1
  666. metadata/generated/schema/type/assetCertification.py +1 -1
  667. metadata/generated/schema/type/auditLog.py +1 -1
  668. metadata/generated/schema/type/basic.py +1 -1
  669. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  670. metadata/generated/schema/type/changeEvent.py +1 -1
  671. metadata/generated/schema/type/changeEventType.py +1 -1
  672. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  673. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  674. metadata/generated/schema/type/csvDocumentation.py +1 -1
  675. metadata/generated/schema/type/csvErrorType.py +1 -1
  676. metadata/generated/schema/type/csvFile.py +1 -1
  677. metadata/generated/schema/type/csvImportResult.py +1 -1
  678. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  679. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  680. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  681. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  682. metadata/generated/schema/type/customProperty.py +1 -1
  683. metadata/generated/schema/type/dailyCount.py +1 -1
  684. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  685. metadata/generated/schema/type/entityHierarchy.py +1 -1
  686. metadata/generated/schema/type/entityHistory.py +1 -1
  687. metadata/generated/schema/type/entityLineage.py +1 -1
  688. metadata/generated/schema/type/entityReference.py +1 -1
  689. metadata/generated/schema/type/entityReferenceList.py +1 -1
  690. metadata/generated/schema/type/entityRelationship.py +1 -1
  691. metadata/generated/schema/type/entityUsage.py +1 -1
  692. metadata/generated/schema/type/filterPattern.py +1 -1
  693. metadata/generated/schema/type/function.py +1 -1
  694. metadata/generated/schema/type/include.py +1 -1
  695. metadata/generated/schema/type/jdbcConnection.py +1 -1
  696. metadata/generated/schema/type/lifeCycle.py +1 -1
  697. metadata/generated/schema/type/paging.py +1 -1
  698. metadata/generated/schema/type/profile.py +1 -1
  699. metadata/generated/schema/type/queryParserData.py +1 -1
  700. metadata/generated/schema/type/reaction.py +1 -1
  701. metadata/generated/schema/type/schedule.py +1 -1
  702. metadata/generated/schema/type/schema.py +1 -1
  703. metadata/generated/schema/type/tableQuery.py +1 -1
  704. metadata/generated/schema/type/tableUsageCount.py +1 -1
  705. metadata/generated/schema/type/tagLabel.py +2 -1
  706. metadata/generated/schema/type/usageDetails.py +1 -1
  707. metadata/generated/schema/type/usageRequest.py +1 -1
  708. metadata/generated/schema/type/votes.py +1 -1
  709. metadata/ingestion/api/topology_runner.py +30 -7
  710. metadata/ingestion/lineage/parser.py +2 -1
  711. metadata/ingestion/models/custom_pydantic.py +30 -2
  712. metadata/ingestion/models/patch_request.py +71 -3
  713. metadata/ingestion/ometa/mixins/es_mixin.py +11 -5
  714. metadata/ingestion/source/api/rest/connection.py +14 -12
  715. metadata/ingestion/source/api/rest/metadata.py +15 -2
  716. metadata/ingestion/source/dashboard/dashboard_service.py +1 -0
  717. metadata/ingestion/source/dashboard/powerbi/metadata.py +122 -38
  718. metadata/ingestion/source/dashboard/powerbi/models.py +22 -0
  719. metadata/ingestion/source/dashboard/tableau/client.py +152 -171
  720. metadata/ingestion/source/dashboard/tableau/connection.py +23 -48
  721. metadata/ingestion/source/dashboard/tableau/metadata.py +73 -99
  722. metadata/ingestion/source/dashboard/tableau/models.py +8 -18
  723. metadata/ingestion/source/dashboard/tableau/queries.py +2 -2
  724. metadata/ingestion/source/database/athena/metadata.py +26 -0
  725. metadata/ingestion/source/database/bigquery/connection.py +8 -3
  726. metadata/ingestion/source/database/bigquery/helper.py +8 -6
  727. metadata/ingestion/source/database/bigquery/metadata.py +23 -14
  728. metadata/ingestion/source/database/clickhouse/metadata.py +0 -33
  729. metadata/ingestion/source/database/common_db_source.py +13 -26
  730. metadata/ingestion/source/database/dbt/metadata.py +30 -17
  731. metadata/ingestion/source/database/hive/metadata.py +8 -1
  732. metadata/ingestion/source/database/life_cycle_query_mixin.py +9 -0
  733. metadata/ingestion/source/database/mysql/connection.py +11 -3
  734. metadata/ingestion/source/database/mysql/lineage.py +4 -4
  735. metadata/ingestion/source/database/mysql/queries.py +29 -0
  736. metadata/ingestion/source/database/mysql/query_parser.py +31 -0
  737. metadata/ingestion/source/database/oracle/metadata.py +0 -39
  738. metadata/ingestion/source/database/oracle/queries.py +2 -2
  739. metadata/ingestion/source/database/oracle/utils.py +0 -14
  740. metadata/ingestion/source/database/postgres/metadata.py +3 -1
  741. metadata/ingestion/source/database/postgres/queries.py +7 -0
  742. metadata/ingestion/source/database/postgres/utils.py +28 -19
  743. metadata/ingestion/source/database/snowflake/data_diff/__init__.py +0 -0
  744. metadata/ingestion/source/database/snowflake/data_diff/data_diff.py +37 -0
  745. metadata/ingestion/source/database/snowflake/metadata.py +77 -31
  746. metadata/ingestion/source/database/snowflake/queries.py +15 -7
  747. metadata/ingestion/source/database/snowflake/service_spec.py +4 -0
  748. metadata/ingestion/source/database/snowflake/utils.py +37 -17
  749. metadata/ingestion/source/database/unitycatalog/metadata.py +0 -15
  750. metadata/ingestion/source/database/vertica/queries.py +5 -20
  751. metadata/ingestion/source/messaging/kinesis/metadata.py +3 -0
  752. metadata/ingestion/source/pipeline/airbyte/constants.py +29 -0
  753. metadata/ingestion/source/pipeline/airbyte/metadata.py +67 -26
  754. metadata/ingestion/source/pipeline/airbyte/utils.py +99 -0
  755. metadata/ingestion/source/pipeline/openlineage/models.py +3 -2
  756. metadata/ingestion/source/pipeline/pipeline_service.py +2 -3
  757. metadata/ingestion/source/storage/s3/metadata.py +7 -8
  758. metadata/pii/algorithms/classifiers.py +180 -0
  759. metadata/pii/algorithms/column_patterns.py +61 -0
  760. metadata/pii/algorithms/feature_extraction.py +154 -0
  761. metadata/pii/algorithms/preprocessing.py +62 -0
  762. metadata/pii/algorithms/presidio_patches.py +45 -0
  763. metadata/pii/algorithms/presidio_utils.py +119 -0
  764. metadata/pii/algorithms/tags.py +111 -0
  765. metadata/pii/algorithms/utils.py +38 -0
  766. metadata/pii/base_processor.py +125 -0
  767. metadata/pii/constants.py +8 -0
  768. metadata/pii/processor.py +42 -138
  769. metadata/profiler/interface/sqlalchemy/profiler_interface.py +66 -36
  770. metadata/profiler/processor/runner.py +29 -6
  771. metadata/profiler/source/database/bigquery/profiler_source.py +2 -20
  772. metadata/profiler/source/database/mssql/profiler_source.py +86 -0
  773. metadata/profiler/source/fetcher/profiler_source_factory.py +13 -0
  774. metadata/readers/dataframe/json.py +5 -1
  775. metadata/readers/dataframe/parquet.py +10 -2
  776. metadata/readers/dataframe/reader_factory.py +8 -0
  777. metadata/sampler/processor.py +8 -1
  778. metadata/sampler/sampler_interface.py +3 -0
  779. metadata/sampler/sqlalchemy/bigquery/sampler.py +5 -0
  780. metadata/sampler/sqlalchemy/sampler.py +32 -40
  781. metadata/utils/bigquery_utils.py +35 -0
  782. metadata/utils/datalake/datalake_utils.py +9 -3
  783. metadata/utils/fqn.py +4 -4
  784. metadata/utils/service_spec/default.py +4 -0
  785. metadata/utils/service_spec/service_spec.py +1 -0
  786. metadata/utils/sqa_utils.py +15 -0
  787. metadata/utils/sqlalchemy_utils.py +5 -2
  788. metadata/workflow/base.py +8 -1
  789. metadata/workflow/profiler.py +9 -9
  790. metadata/workflow/workflow_status_mixin.py +1 -7
  791. {openmetadata_ingestion-1.7.0.0rc2.dist-info → openmetadata_ingestion-1.7.1.0.dist-info}/METADATA +432 -424
  792. {openmetadata_ingestion-1.7.0.0rc2.dist-info → openmetadata_ingestion-1.7.1.0.dist-info}/RECORD +796 -776
  793. {openmetadata_ingestion-1.7.0.0rc2.dist-info → openmetadata_ingestion-1.7.1.0.dist-info}/LICENSE +0 -0
  794. {openmetadata_ingestion-1.7.0.0rc2.dist-info → openmetadata_ingestion-1.7.1.0.dist-info}/WHEEL +0 -0
  795. {openmetadata_ingestion-1.7.0.0rc2.dist-info → openmetadata_ingestion-1.7.1.0.dist-info}/entry_points.txt +0 -0
  796. {openmetadata_ingestion-1.7.0.0rc2.dist-info → openmetadata_ingestion-1.7.1.0.dist-info}/top_level.txt +0 -0
@@ -18,6 +18,7 @@ supporting sqlalchemy abstraction layer
18
18
  import concurrent.futures
19
19
  import math
20
20
  import threading
21
+ import time
21
22
  import traceback
22
23
  from collections import defaultdict
23
24
  from datetime import datetime
@@ -397,43 +398,72 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
397
398
  f"Running profiler for {metric_func.table.__tablename__} on thread {threading.current_thread()}"
398
399
  )
399
400
  Session = self.session_factory # pylint: disable=invalid-name
400
- with Session() as session:
401
- self.set_session_tag(session)
402
- self.set_catalog(session)
403
- runner = self._create_thread_safe_runner(session, metric_func.column)
404
- row = None
405
- try:
406
- row = self._get_metric_fn[metric_func.metric_type.value](
407
- metric_func.metrics,
408
- runner=runner,
409
- session=session,
410
- column=metric_func.column,
411
- sample=runner.dataset,
412
- )
413
- if isinstance(row, dict):
414
- row = self._validate_nulls(row)
415
- if isinstance(row, list):
416
- row = [
417
- self._validate_nulls(r) if isinstance(r, dict) else r
418
- for r in row
419
- ]
420
-
421
- except Exception as exc:
422
- error = (
423
- f"{metric_func.column if metric_func.column is not None else metric_func.table.__tablename__} "
424
- f"metric_type.value: {exc}"
425
- )
426
- logger.error(error)
427
- self.status.failed_profiler(error, traceback.format_exc())
428
-
429
- if metric_func.column is not None:
430
- column = metric_func.column.name
431
- self.status.scanned(f"{metric_func.table.__tablename__}.{column}")
432
- else:
433
- self.status.scanned(metric_func.table.__tablename__)
434
- column = None
401
+ max_retries = 3
402
+ retry_count = 0
403
+ initial_backoff = 5
404
+ max_backoff = 30
405
+ row = None
406
+
407
+ while retry_count < max_retries:
408
+ with Session() as session:
409
+ self.set_session_tag(session)
410
+ self.set_catalog(session)
411
+ runner = self._create_thread_safe_runner(session, metric_func.column)
412
+ try:
413
+ row = self._get_metric_fn[metric_func.metric_type.value](
414
+ metric_func.metrics,
415
+ runner=runner,
416
+ session=session,
417
+ column=metric_func.column,
418
+ sample=runner.dataset,
419
+ )
420
+ if isinstance(row, dict):
421
+ row = self._validate_nulls(row)
422
+ if isinstance(row, list):
423
+ row = [
424
+ self._validate_nulls(r) if isinstance(r, dict) else r
425
+ for r in row
426
+ ]
427
+
428
+ # On success, log the scan and break out of the retry loop
429
+ if metric_func.column is not None:
430
+ column = metric_func.column.name
431
+ self.status.scanned(
432
+ f"{metric_func.table.__tablename__}.{column}"
433
+ )
434
+ else:
435
+ self.status.scanned(metric_func.table.__tablename__)
436
+ column = None
437
+
438
+ return row, column, metric_func.metric_type.value
439
+
440
+ except Exception as exc:
441
+ dialect = session.get_bind().dialect
442
+ if dialect.is_disconnect(exc, session.get_bind(), None):
443
+ retry_count += 1
444
+ if retry_count < max_retries:
445
+ backoff = min(
446
+ initial_backoff * (2 ** (retry_count - 1)), max_backoff
447
+ )
448
+ logger.debug(
449
+ f"Connection error detected, retrying ({retry_count}/{max_retries}) "
450
+ f"after {backoff:.2f} seconds..."
451
+ )
452
+ session.rollback()
453
+ time.sleep(backoff)
454
+ continue
455
+ logger.error(
456
+ f"Max retries ({max_retries}) exceeded for disconnection"
457
+ )
458
+ error = (
459
+ f"{metric_func.column if metric_func.column is not None else metric_func.table.__tablename__} "
460
+ f"metric_type.value: {exc}"
461
+ )
462
+ logger.error(error)
463
+ self.status.failed_profiler(error, traceback.format_exc())
435
464
 
436
- return row, column, metric_func.metric_type.value
465
+ # If we've exhausted all retries without success, return a tuple of None values
466
+ return None, None, None
437
467
 
438
468
  @staticmethod
439
469
  def _validate_nulls(row: Dict[str, Any]) -> Dict[str, Any]:
@@ -23,7 +23,10 @@ from sqlalchemy.orm import DeclarativeMeta, Query, Session
23
23
  from sqlalchemy.orm.util import AliasedClass
24
24
 
25
25
  from metadata.utils.logger import query_runner_logger
26
- from metadata.utils.sqa_utils import get_query_filter_for_runner
26
+ from metadata.utils.sqa_utils import (
27
+ get_query_filter_for_runner,
28
+ get_query_group_by_for_runner,
29
+ )
27
30
 
28
31
  logger = query_runner_logger()
29
32
 
@@ -88,6 +91,11 @@ class QueryRunner:
88
91
  """Table name attribute access"""
89
92
  return self._session
90
93
 
94
+ @property
95
+ def dialect(self) -> str:
96
+ """Dialect attribute access"""
97
+ return self._session.get_bind().dialect.name
98
+
91
99
  def _build_query(self, *entities, **kwargs) -> Query:
92
100
  """Build query object
93
101
 
@@ -106,11 +114,15 @@ class QueryRunner:
106
114
  **kwargs: kwargs to pass to the query
107
115
  """
108
116
  filter_ = get_query_filter_for_runner(kwargs)
117
+ group_by_ = get_query_group_by_for_runner(kwargs)
109
118
 
110
119
  query = self._build_query(*entities, **kwargs).select_from(self._dataset)
111
120
 
112
121
  if filter_ is not None:
113
- return query.filter(filter_)
122
+ query = query.filter(filter_)
123
+
124
+ if group_by_ is not None:
125
+ query = query.group_by(*group_by_)
114
126
 
115
127
  return query
116
128
 
@@ -122,7 +134,7 @@ class QueryRunner:
122
134
  **kwargs: kwargs to pass to the query
123
135
  """
124
136
  filter_ = get_query_filter_for_runner(kwargs)
125
-
137
+ group_by_ = get_query_group_by_for_runner(kwargs)
126
138
  user_query = self._session.query(self._dataset).from_statement(
127
139
  text(f"{self.profile_sample_query}")
128
140
  )
@@ -130,7 +142,10 @@ class QueryRunner:
130
142
  query = self._build_query(*entities, **kwargs).select_from(user_query)
131
143
 
132
144
  if filter_ is not None:
133
- return query.filter(filter_)
145
+ query = query.filter(filter_)
146
+
147
+ if group_by_ is not None:
148
+ query = query.group_by(*group_by_)
134
149
 
135
150
  return query
136
151
 
@@ -143,13 +158,17 @@ class QueryRunner:
143
158
  **kwargs: kwargs to pass to the query
144
159
  """
145
160
  filter_ = get_query_filter_for_runner(kwargs)
161
+ group_by_ = get_query_group_by_for_runner(kwargs)
146
162
 
147
163
  if self.profile_sample_query:
148
164
  return self._select_from_user_query(*entities, **kwargs).first()
149
165
  query = self._build_query(*entities, **kwargs).select_from(self.table)
150
166
 
151
167
  if filter_ is not None:
152
- return query.filter(filter_).first()
168
+ query = query.filter(filter_)
169
+
170
+ if group_by_ is not None:
171
+ query = query.group_by(*group_by_)
153
172
 
154
173
  return query.first()
155
174
 
@@ -162,6 +181,7 @@ class QueryRunner:
162
181
  **kwargs: kwargs to pass to the query
163
182
  """
164
183
  filter_ = get_query_filter_for_runner(kwargs)
184
+ group_by_ = get_query_group_by_for_runner(kwargs)
165
185
 
166
186
  if self.profile_sample_query:
167
187
  return self._select_from_user_query(*entities, **kwargs).all()
@@ -169,7 +189,10 @@ class QueryRunner:
169
189
  query = self._build_query(*entities, **kwargs).select_from(self.table)
170
190
 
171
191
  if filter_ is not None:
172
- return query.filter(filter_).all()
192
+ query = query.filter(filter_)
193
+
194
+ if group_by_ is not None:
195
+ query = query.group_by(*group_by_)
173
196
 
174
197
  return query.all()
175
198
 
@@ -13,8 +13,6 @@
13
13
  Bigquery Profiler source
14
14
  """
15
15
 
16
- from copy import deepcopy
17
-
18
16
  from metadata.generated.schema.entity.data.database import Database
19
17
  from metadata.generated.schema.entity.services.connections.database.bigQueryConnection import (
20
18
  BigQueryConnection,
@@ -22,12 +20,8 @@ from metadata.generated.schema.entity.services.connections.database.bigQueryConn
22
20
  from metadata.generated.schema.metadataIngestion.workflow import (
23
21
  OpenMetadataWorkflowConfig,
24
22
  )
25
- from metadata.generated.schema.security.credentials.gcpValues import (
26
- GcpCredentialsValues,
27
- MultipleProjectId,
28
- SingleProjectId,
29
- )
30
23
  from metadata.profiler.source.database.base.profiler_source import ProfilerSource
24
+ from metadata.utils.bigquery_utils import copy_service_config
31
25
 
32
26
 
33
27
  class BigQueryProfilerSource(ProfilerSource):
@@ -46,16 +40,4 @@ class BigQueryProfilerSource(ProfilerSource):
46
40
  Returns:
47
41
  DatabaseConnection
48
42
  """
49
- config_copy: BigQueryConnection = deepcopy(
50
- config.source.serviceConnection.root.config # type: ignore
51
- )
52
-
53
- if isinstance(config_copy.credentials.gcpConfig, GcpCredentialsValues):
54
- if isinstance(
55
- config_copy.credentials.gcpConfig.projectId, MultipleProjectId
56
- ):
57
- config_copy.credentials.gcpConfig.projectId = SingleProjectId(
58
- database.name.root
59
- )
60
-
61
- return config_copy
43
+ return copy_service_config(config, database.name.root)
@@ -0,0 +1,86 @@
1
+ """Extend the ProfilerSource class to add support for MSSQL is_disconnect SQA method"""
2
+ from metadata.generated.schema.configuration.profilerConfiguration import (
3
+ ProfilerConfiguration,
4
+ )
5
+ from metadata.generated.schema.entity.data.database import Database
6
+ from metadata.generated.schema.entity.services.connections.database.mssqlConnection import (
7
+ MssqlScheme,
8
+ )
9
+ from metadata.generated.schema.metadataIngestion.workflow import (
10
+ OpenMetadataWorkflowConfig,
11
+ )
12
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
13
+ from metadata.profiler.source.database.base.profiler_source import ProfilerSource
14
+
15
+
16
+ def is_disconnect(is_disconnect_original):
17
+ """Wrapper to add custom is_disconnect method for the MSSQL dialects"""
18
+
19
+ def inner_is_disconnect(self, e, connection, cursor):
20
+ """is_disconnect method for the MSSQL dialects"""
21
+ error_str = str(e)
22
+
23
+ mssql_disconnect_codes = [
24
+ "08S01", # Communication link failure
25
+ "08001", # Cannot connect
26
+ "HY000", # General error often used for connection issues
27
+ ]
28
+
29
+ mssql_disconnect_messages = [
30
+ "Server closed connection",
31
+ "ClosedConnectionError",
32
+ "Connection is closed",
33
+ "Connection reset by peer",
34
+ "Timeout expired",
35
+ "Socket closed",
36
+ ]
37
+
38
+ if any(code in error_str for code in mssql_disconnect_codes) or any(
39
+ message in error_str for message in mssql_disconnect_messages
40
+ ):
41
+ return True
42
+
43
+ # If none of our custom checks match, fall back to SQLAlchemy's built-in detection
44
+ return is_disconnect_original(self, e, connection, cursor)
45
+
46
+ return inner_is_disconnect
47
+
48
+
49
+ class MssqlProfilerSource(ProfilerSource):
50
+ """MSSQL Profiler source"""
51
+
52
+ def __init__(
53
+ self,
54
+ config: OpenMetadataWorkflowConfig,
55
+ database: Database,
56
+ ometa_client: OpenMetadata,
57
+ global_profiler_config: ProfilerConfiguration,
58
+ ):
59
+ super().__init__(config, database, ometa_client, global_profiler_config)
60
+ self.set_is_disconnect(config)
61
+
62
+ def set_is_disconnect(self, config: OpenMetadataWorkflowConfig):
63
+ """Set the is_disconnect method based on the configured connection scheme"""
64
+ # pylint: disable=import-outside-toplevel
65
+
66
+ # Get the configured scheme from the source connection
67
+ scheme = config.source.serviceConnection.root.config.scheme
68
+
69
+ # Set the appropriate is_disconnect method based on the scheme
70
+ if scheme == MssqlScheme.mssql_pytds:
71
+ from sqlalchemy_pytds.dialect import MSDialect_pytds
72
+
73
+ original_is_disconnect = MSDialect_pytds.is_disconnect
74
+ MSDialect_pytds.is_disconnect = is_disconnect(original_is_disconnect)
75
+ elif scheme == MssqlScheme.mssql_pyodbc:
76
+ from sqlalchemy.dialects.mssql.pyodbc import MSDialect_pyodbc
77
+
78
+ original_is_disconnect = MSDialect_pyodbc.is_disconnect
79
+ MSDialect_pyodbc.is_disconnect = is_disconnect(original_is_disconnect)
80
+ elif scheme == MssqlScheme.mssql_pymssql:
81
+ from sqlalchemy.dialects.mssql.pymssql import MSDialect_pymssql
82
+
83
+ original_is_disconnect = MSDialect_pymssql.is_disconnect
84
+ MSDialect_pymssql.is_disconnect = is_disconnect(original_is_disconnect)
85
+ else:
86
+ raise ValueError(f"Unsupported MSSQL scheme: {scheme}")
@@ -21,6 +21,9 @@ from metadata.generated.schema.entity.services.connections.database.bigQueryConn
21
21
  from metadata.generated.schema.entity.services.connections.database.databricksConnection import (
22
22
  DatabricksType,
23
23
  )
24
+ from metadata.generated.schema.entity.services.connections.database.mssqlConnection import (
25
+ MssqlType,
26
+ )
24
27
  from metadata.profiler.source.profiler_source_interface import ProfilerSourceInterface
25
28
 
26
29
 
@@ -79,10 +82,20 @@ class ProfilerSourceFactory:
79
82
 
80
83
  return DataBricksProfilerSource
81
84
 
85
+ @staticmethod
86
+ def mssql() -> Type[ProfilerSourceInterface]:
87
+ """Lazy loading of the MSSQL source"""
88
+ from metadata.profiler.source.database.mssql.profiler_source import (
89
+ MssqlProfilerSource,
90
+ )
91
+
92
+ return MssqlProfilerSource
93
+
82
94
 
83
95
  source = {
84
96
  BigqueryType.BigQuery.value.lower(): ProfilerSourceFactory.bigquery,
85
97
  DatabricksType.Databricks.value.lower(): ProfilerSourceFactory.databricks,
98
+ MssqlType.Mssql.value.lower(): ProfilerSourceFactory.mssql,
86
99
  }
87
100
 
88
101
  profiler_source_factory = ProfilerSourceFactory()
@@ -35,7 +35,11 @@ def _get_json_text(key: str, text: bytes, decode: bool) -> Union[str, bytes]:
35
35
  with zipfile.ZipFile(io.BytesIO(text)) as zip_file:
36
36
  processed_text = zip_file.read(zip_file.infolist()[0])
37
37
  if decode:
38
- return processed_text.decode(UTF_8) if isinstance(text, bytes) else text
38
+ return (
39
+ processed_text.decode(UTF_8, errors="ignore")
40
+ if isinstance(text, bytes)
41
+ else text
42
+ )
39
43
  return processed_text
40
44
 
41
45
 
@@ -68,8 +68,16 @@ class ParquetDataFrameReader(DataFrameReader):
68
68
  from pyarrow.parquet import ParquetDataset
69
69
 
70
70
  client_kwargs = {
71
- "endpoint_override": str(self.config_source.securityConfig.endPointURL),
72
- "region": self.config_source.securityConfig.awsRegion,
71
+ "endpoint_override": (
72
+ str(self.config_source.securityConfig.endPointURL)
73
+ if self.config_source.securityConfig.endPointURL
74
+ else None
75
+ ),
76
+ "region": (
77
+ self.config_source.securityConfig.awsRegion
78
+ if self.config_source.securityConfig.awsRegion
79
+ else None
80
+ ),
73
81
  "access_key": self.config_source.securityConfig.awsAccessKeyId,
74
82
  "session_token": self.config_source.securityConfig.awsSessionToken,
75
83
  "role_arn": self.config_source.securityConfig.assumeRoleArn,
@@ -39,6 +39,10 @@ class SupportedTypes(Enum):
39
39
  TSV = "tsv"
40
40
  AVRO = "avro"
41
41
  PARQUET = "parquet"
42
+ PARQUET_PQ = "pq"
43
+ PARQUET_PQT = "pqt"
44
+ PARQUET_PARQ = "parq"
45
+ PARQUET_SNAPPY = "parquet.snappy"
42
46
  JSON = "json"
43
47
  JSONGZ = "json.gz"
44
48
  JSONZIP = "json.zip"
@@ -52,6 +56,10 @@ DF_READER_MAP = {
52
56
  SupportedTypes.TSV.value: TSVDataFrameReader,
53
57
  SupportedTypes.AVRO.value: AvroDataFrameReader,
54
58
  SupportedTypes.PARQUET.value: ParquetDataFrameReader,
59
+ SupportedTypes.PARQUET_PQ.value: ParquetDataFrameReader,
60
+ SupportedTypes.PARQUET_PQT.value: ParquetDataFrameReader,
61
+ SupportedTypes.PARQUET_PARQ.value: ParquetDataFrameReader,
62
+ SupportedTypes.PARQUET_SNAPPY.value: ParquetDataFrameReader,
55
63
  SupportedTypes.JSON.value: JSONDataFrameReader,
56
64
  SupportedTypes.JSONGZ.value: JSONDataFrameReader,
57
65
  SupportedTypes.JSONZIP.value: JSONDataFrameReader,
@@ -17,6 +17,9 @@ from typing import Optional, cast
17
17
 
18
18
  from metadata.generated.schema.entity.data.database import Database
19
19
  from metadata.generated.schema.entity.data.table import Table
20
+ from metadata.generated.schema.entity.services.connections.database.bigQueryConnection import (
21
+ BigQueryConnection,
22
+ )
20
23
  from metadata.generated.schema.entity.services.databaseService import DatabaseConnection
21
24
  from metadata.generated.schema.entity.services.ingestionPipelines.status import (
22
25
  StackTraceError,
@@ -38,6 +41,7 @@ from metadata.profiler.source.metadata import ProfilerSourceAndEntity
38
41
  from metadata.sampler.config import get_config_for_table
39
42
  from metadata.sampler.models import SampleConfig, SampleData, SamplerResponse
40
43
  from metadata.sampler.sampler_interface import SamplerInterface
44
+ from metadata.utils.bigquery_utils import copy_service_config
41
45
  from metadata.utils.profiler_utils import get_context_entities
42
46
  from metadata.utils.service_spec.service_spec import import_sampler_class
43
47
 
@@ -95,7 +99,7 @@ class SamplerProcessor(Processor):
95
99
  data=sampler_interface.generate_sample_data(),
96
100
  store=self.source_config.storeSampleData,
97
101
  )
98
-
102
+ sampler_interface.close()
99
103
  return Either(
100
104
  right=SamplerResponse(
101
105
  table=entity,
@@ -133,6 +137,9 @@ class SamplerProcessor(Processor):
133
137
  Returns:
134
138
  DatabaseService.__config__
135
139
  """
140
+ if isinstance(config.source.serviceConnection.root.config, BigQueryConnection):
141
+ return copy_service_config(config, database.name.root)
142
+
136
143
  config_copy = deepcopy(
137
144
  config.source.serviceConnection.root.config # type: ignore
138
145
  )
@@ -245,3 +245,6 @@ class SamplerInterface(ABC):
245
245
  logger.debug(traceback.format_exc())
246
246
  logger.warning(f"Error fetching sample data: {err}")
247
247
  raise err
248
+
249
+ def close(self):
250
+ """Default noop"""
@@ -35,6 +35,11 @@ from metadata.ingestion.ometa.ometa_api import OpenMetadata
35
35
  from metadata.sampler.models import SampleConfig
36
36
  from metadata.sampler.sqlalchemy.sampler import SQASampler
37
37
  from metadata.utils.constants import SAMPLE_DATA_DEFAULT_COUNT
38
+ from metadata.utils.logger import profiler_interface_registry_logger
39
+
40
+ logger = profiler_interface_registry_logger()
41
+
42
+ RANDOM_LABEL = "random"
38
43
 
39
44
 
40
45
  class BigQuerySampler(SQASampler):
@@ -13,7 +13,6 @@ Helper module to handle data sampling
13
13
  for the profiler
14
14
  """
15
15
  import hashlib
16
- import traceback
17
16
  from typing import List, Optional, Union, cast
18
17
 
19
18
  from sqlalchemy import Column, inspect, text
@@ -100,16 +99,16 @@ class SQASampler(SamplerInterface, SQAInterfaceMixin):
100
99
  """
101
100
  # only sample the column if we are computing a column metric to limit the amount of data scaned
102
101
  selectable = self.set_tablesample(self.raw_dataset.__table__)
102
+ client = self.get_client()
103
103
 
104
104
  entity = selectable if column is None else selectable.c.get(column.key)
105
- with self.get_client() as client:
106
- if label is not None:
107
- query = client.query(entity, label)
108
- else:
109
- query = client.query(entity)
105
+ if label is not None:
106
+ query = client.query(entity, label)
107
+ else:
108
+ query = client.query(entity)
110
109
 
111
- if self.partition_details:
112
- query = self.get_partitioned_query(query)
110
+ if self.partition_details:
111
+ query = self.get_partitioned_query(query)
113
112
  return query
114
113
 
115
114
  def get_sampler_table_name(self) -> str:
@@ -125,19 +124,18 @@ class SQASampler(SamplerInterface, SQAInterfaceMixin):
125
124
 
126
125
  def get_sample_query(self, *, column=None) -> Query:
127
126
  """get query for sample data"""
127
+ client = self.get_client()
128
128
  if self.sample_config.profileSampleType == ProfileSampleType.PERCENTAGE:
129
129
  rnd = self._base_sample_query(
130
130
  column,
131
131
  (ModuloFn(RandomNumFn(), 100)).label(RANDOM_LABEL),
132
132
  ).cte(f"{self.get_sampler_table_name()}_rnd")
133
- with self.get_client() as client:
134
- session_query = client.query(rnd)
133
+ session_query = client.query(rnd)
135
134
  return session_query.where(
136
135
  rnd.c.random <= self.sample_config.profileSample
137
136
  ).cte(f"{self.get_sampler_table_name()}_sample")
138
137
 
139
- with self.get_client() as client:
140
- table_query = client.query(self.raw_dataset)
138
+ table_query = client.query(self.raw_dataset)
141
139
  session_query = self._base_sample_query(
142
140
  column,
143
141
  (ModuloFn(RandomNumFn(), table_query.count())).label(RANDOM_LABEL)
@@ -198,31 +196,20 @@ class SQASampler(SamplerInterface, SQAInterfaceMixin):
198
196
  for col in inspect(ds).c
199
197
  if col.name != RANDOM_LABEL and col.name in names
200
198
  ]
199
+
201
200
  with self.get_client() as client:
202
- try:
203
- sqa_sample = (
204
- client.query(*sqa_columns)
205
- .select_from(ds)
206
- .limit(self.sample_limit)
207
- .all()
208
- )
209
- except Exception:
210
- logger.debug(
211
- "Cannot fetch sample data with random sampling. Falling back to 100 rows."
212
- )
213
- logger.debug(traceback.format_exc())
214
- sqa_columns = list(inspect(self.raw_dataset).c)
215
- sqa_sample = (
216
- client.query(*sqa_columns)
217
- .select_from(self.raw_dataset)
218
- .limit(100)
219
- .all()
220
- )
221
- return TableData(
222
- columns=[column.name for column in sqa_columns],
223
- rows=[list(row) for row in sqa_sample],
201
+ sqa_sample = (
202
+ client.query(*sqa_columns)
203
+ .select_from(ds)
204
+ .limit(self.sample_limit)
205
+ .all()
224
206
  )
225
207
 
208
+ return TableData(
209
+ columns=[column.name for column in sqa_columns],
210
+ rows=[list(row) for row in sqa_sample],
211
+ )
212
+
226
213
  def _fetch_sample_data_from_user_query(self) -> TableData:
227
214
  """Returns a table data object using results from query execution"""
228
215
  if not is_safe_sql_query(self.sample_query):
@@ -246,10 +233,11 @@ class SQASampler(SamplerInterface, SQAInterfaceMixin):
246
233
 
247
234
  stmt = text(f"{self.sample_query}")
248
235
  stmt = stmt.columns(*list(inspect(self.raw_dataset).c))
249
- with self.get_client() as client:
250
- return client.query(stmt.subquery()).cte(
251
- f"{self.get_sampler_table_name()}_user_sampled"
252
- )
236
+ return (
237
+ self.get_client()
238
+ .query(stmt.subquery())
239
+ .cte(f"{self.get_sampler_table_name()}_user_sampled")
240
+ )
253
241
 
254
242
  def _partitioned_table(self) -> Query:
255
243
  """Return the Query object for partitioned tables"""
@@ -266,9 +254,13 @@ class SQASampler(SamplerInterface, SQAInterfaceMixin):
266
254
  )
267
255
  if query is not None:
268
256
  return query.filter(partition_filter)
269
- with self.get_client() as client:
270
- return client.query(self.raw_dataset).filter(partition_filter)
257
+ return self.get_client().query(self.raw_dataset).filter(partition_filter)
271
258
 
272
259
  def get_columns(self):
273
260
  """get columns from entity"""
274
261
  return list(inspect(self.raw_dataset).c)
262
+
263
+ def close(self):
264
+ """Close the connection"""
265
+ self.get_client().close()
266
+ self.connection.pool.dispose()
@@ -13,10 +13,22 @@
13
13
  Utils module of BigQuery
14
14
  """
15
15
 
16
+ from copy import deepcopy
16
17
  from typing import List, Optional
17
18
 
18
19
  from google.cloud import bigquery
19
20
 
21
+ from metadata.generated.schema.entity.services.connections.database.bigQueryConnection import (
22
+ BigQueryConnection,
23
+ )
24
+ from metadata.generated.schema.metadataIngestion.workflow import (
25
+ OpenMetadataWorkflowConfig,
26
+ )
27
+ from metadata.generated.schema.security.credentials.gcpValues import (
28
+ GcpCredentialsValues,
29
+ MultipleProjectId,
30
+ SingleProjectId,
31
+ )
20
32
  from metadata.utils.credentials import (
21
33
  get_gcp_default_credentials,
22
34
  get_gcp_impersonate_credentials,
@@ -56,3 +68,26 @@ def get_bigquery_client(
56
68
  return bigquery.Client(
57
69
  credentials=credentials, project=project_id, location=location
58
70
  )
71
+
72
+
73
+ def copy_service_config(
74
+ config: OpenMetadataWorkflowConfig, database_name: str
75
+ ) -> BigQueryConnection:
76
+ """Handles multiple project id in the service config and replace it with the database name
77
+
78
+ Args:
79
+ config (OpenMetadataWorkflowConfig): openmetadata workflow config
80
+ database_name (str): database name
81
+
82
+ Returns:
83
+ BigQueryConnection: bigquery connection
84
+ """
85
+ config_copy: BigQueryConnection = deepcopy(
86
+ config.source.serviceConnection.root.config # type: ignore
87
+ )
88
+
89
+ if isinstance(config_copy.credentials.gcpConfig, GcpCredentialsValues):
90
+ if isinstance(config_copy.credentials.gcpConfig.projectId, MultipleProjectId):
91
+ config_copy.credentials.gcpConfig.projectId = SingleProjectId(database_name)
92
+
93
+ return config_copy