openmetadata-ingestion 1.6.0.0rc1__py3-none-any.whl → 1.6.0.0rc3__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 (815) hide show
  1. metadata/cli/classify.py +52 -0
  2. metadata/clients/aws_client.py +2 -2
  3. metadata/cmd.py +9 -0
  4. metadata/data_quality/builders/{i_validator_builder.py → validator_builder.py} +40 -29
  5. metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +25 -25
  6. metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +23 -50
  7. metadata/data_quality/interface/test_suite_interface.py +45 -56
  8. metadata/data_quality/processor/test_case_runner.py +9 -9
  9. metadata/data_quality/runner/base_test_suite_source.py +52 -26
  10. metadata/data_quality/validations/base_test_handler.py +14 -9
  11. metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +1 -1
  12. metadata/data_quality/validations/column/sqlalchemy/columnValueMaxToBeBetween.py +1 -1
  13. metadata/data_quality/validations/column/sqlalchemy/columnValueMeanToBeBetween.py +1 -1
  14. metadata/data_quality/validations/column/sqlalchemy/columnValueMedianToBeBetween.py +1 -1
  15. metadata/data_quality/validations/column/sqlalchemy/columnValueMinToBeBetween.py +1 -1
  16. metadata/data_quality/validations/column/sqlalchemy/columnValueStdDevToBeBetween.py +1 -1
  17. metadata/data_quality/validations/column/sqlalchemy/columnValuesMissingCount.py +1 -1
  18. metadata/data_quality/validations/column/sqlalchemy/columnValuesSumToBeBetween.py +1 -1
  19. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeAtExpectedLocation.py +1 -1
  20. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +1 -1
  21. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +1 -1
  22. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +1 -1
  23. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +1 -1
  24. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +2 -8
  25. metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
  26. metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +1 -1
  27. metadata/data_quality/validations/runtime_param_setter/param_setter.py +2 -3
  28. metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +45 -17
  29. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +21 -16
  30. metadata/data_quality/validations/table/sqlalchemy/tableCustomSQLQuery.py +7 -1
  31. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +21 -18
  32. metadata/data_quality/validations/table/sqlalchemy/tableRowInsertedCountToBeBetween.py +2 -2
  33. metadata/examples/workflows/bigquery_classifier.yaml +56 -0
  34. metadata/examples/workflows/bigquery_profiler.yaml +1 -2
  35. metadata/examples/workflows/db2_profiler.yaml +1 -2
  36. metadata/examples/workflows/dbtcloud.yaml +2 -1
  37. metadata/examples/workflows/{mstr.yaml → microstrategy.yaml} +3 -2
  38. metadata/examples/workflows/mongodb.yaml +4 -0
  39. metadata/examples/workflows/mysql_profiler.yaml +0 -1
  40. metadata/examples/workflows/redshift_classifier.yaml +38 -0
  41. metadata/examples/workflows/redshift_profiler.yaml +2 -3
  42. metadata/generated/antlr/FqnLexer.py +15 -15
  43. metadata/generated/schema/analytics/__init__.py +1 -1
  44. metadata/generated/schema/analytics/basic.py +1 -1
  45. metadata/generated/schema/analytics/reportData.py +1 -1
  46. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  47. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  48. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  49. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  50. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  51. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  52. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  53. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  54. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  55. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  56. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  57. metadata/generated/schema/api/__init__.py +1 -1
  58. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  59. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  60. metadata/generated/schema/api/analytics/__init__.py +1 -1
  61. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  62. metadata/generated/schema/api/automations/__init__.py +1 -1
  63. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  64. metadata/generated/schema/api/bulkAssets.py +1 -1
  65. metadata/generated/schema/api/classification/__init__.py +1 -1
  66. metadata/generated/schema/api/classification/createClassification.py +1 -1
  67. metadata/generated/schema/api/classification/createTag.py +1 -1
  68. metadata/generated/schema/api/classification/loadTags.py +1 -1
  69. metadata/generated/schema/api/createBot.py +1 -1
  70. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  71. metadata/generated/schema/api/createType.py +1 -1
  72. metadata/generated/schema/api/data/__init__.py +1 -1
  73. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  74. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  75. metadata/generated/schema/api/data/createChart.py +1 -1
  76. metadata/generated/schema/api/data/createContainer.py +1 -1
  77. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  78. metadata/generated/schema/api/data/createDashboard.py +1 -1
  79. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  80. metadata/generated/schema/api/data/createDatabase.py +1 -1
  81. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  82. metadata/generated/schema/api/data/createGlossary.py +1 -1
  83. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  84. metadata/generated/schema/api/data/createMetric.py +1 -1
  85. metadata/generated/schema/api/data/createMlModel.py +1 -1
  86. metadata/generated/schema/api/data/createPipeline.py +1 -1
  87. metadata/generated/schema/api/data/createQuery.py +1 -1
  88. metadata/generated/schema/api/data/createSearchIndex.py +8 -1
  89. metadata/generated/schema/api/data/createStoredProcedure.py +8 -1
  90. metadata/generated/schema/api/data/createTable.py +1 -1
  91. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  92. metadata/generated/schema/api/data/createTopic.py +1 -1
  93. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  94. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  95. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  96. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  97. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  98. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  99. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  100. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  101. metadata/generated/schema/api/docStore/__init__.py +1 -1
  102. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  103. metadata/generated/schema/api/domains/__init__.py +1 -1
  104. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  105. metadata/generated/schema/api/domains/createDomain.py +1 -1
  106. metadata/generated/schema/api/feed/__init__.py +1 -1
  107. metadata/generated/schema/api/feed/closeTask.py +1 -1
  108. metadata/generated/schema/api/feed/createPost.py +1 -1
  109. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  110. metadata/generated/schema/api/feed/createThread.py +1 -1
  111. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  112. metadata/generated/schema/api/feed/threadCount.py +1 -1
  113. metadata/generated/schema/api/governance/__init__.py +1 -1
  114. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  115. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  116. metadata/generated/schema/api/lineage/__init__.py +1 -1
  117. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  118. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  119. metadata/generated/schema/api/policies/__init__.py +1 -1
  120. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  121. metadata/generated/schema/api/services/__init__.py +1 -1
  122. metadata/generated/schema/api/services/createApiService.py +1 -1
  123. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  124. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  125. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  126. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  127. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  128. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  129. metadata/generated/schema/api/services/createSearchService.py +1 -1
  130. metadata/generated/schema/api/services/createStorageService.py +1 -1
  131. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  132. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  133. metadata/generated/schema/api/setOwner.py +1 -1
  134. metadata/generated/schema/api/teams/__init__.py +1 -1
  135. metadata/generated/schema/api/teams/createPersona.py +1 -1
  136. metadata/generated/schema/api/teams/createRole.py +1 -1
  137. metadata/generated/schema/api/teams/createTeam.py +1 -1
  138. metadata/generated/schema/api/teams/createUser.py +1 -1
  139. metadata/generated/schema/api/tests/__init__.py +1 -1
  140. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  141. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  142. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  143. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  144. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  145. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  146. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  147. metadata/generated/schema/api/voteRequest.py +1 -1
  148. metadata/generated/schema/auth/__init__.py +1 -1
  149. metadata/generated/schema/auth/basicAuth.py +1 -1
  150. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  151. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  152. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  153. metadata/generated/schema/auth/emailRequest.py +1 -1
  154. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  155. metadata/generated/schema/auth/generateToken.py +1 -1
  156. metadata/generated/schema/auth/jwtAuth.py +1 -1
  157. metadata/generated/schema/auth/loginRequest.py +1 -1
  158. metadata/generated/schema/auth/logoutRequest.py +1 -1
  159. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  160. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  161. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  162. metadata/generated/schema/auth/refreshToken.py +1 -1
  163. metadata/generated/schema/auth/registrationRequest.py +1 -1
  164. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  165. metadata/generated/schema/auth/revokeToken.py +1 -1
  166. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  167. metadata/generated/schema/auth/ssoAuth.py +1 -1
  168. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  169. metadata/generated/schema/configuration/__init__.py +1 -1
  170. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  171. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  172. metadata/generated/schema/configuration/authConfig.py +1 -1
  173. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  178. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  179. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  184. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  185. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  186. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  187. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  188. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  189. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  190. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  191. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  192. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/searchSettings.py +1 -1
  196. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -14
  197. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  200. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  201. metadata/generated/schema/dataInsight/__init__.py +1 -1
  202. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  203. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  204. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  205. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  206. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  207. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  208. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  209. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  210. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  211. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  212. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  213. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  214. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  215. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  216. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  217. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  218. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  219. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  220. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  221. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  222. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  223. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  224. metadata/generated/schema/email/__init__.py +1 -1
  225. metadata/generated/schema/email/emailRequest.py +1 -1
  226. metadata/generated/schema/email/emailTemplate.py +1 -1
  227. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  228. metadata/generated/schema/email/smtpSettings.py +1 -1
  229. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  230. metadata/generated/schema/entity/__init__.py +1 -1
  231. metadata/generated/schema/entity/applications/__init__.py +1 -1
  232. metadata/generated/schema/entity/applications/app.py +2 -1
  233. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  234. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +4 -2
  237. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +22 -0
  254. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.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 +1 -1
  265. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  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 +1 -1
  281. metadata/generated/schema/entity/data/database.py +1 -1
  282. metadata/generated/schema/entity/data/databaseSchema.py +1 -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/report.py +1 -1
  290. metadata/generated/schema/entity/data/searchIndex.py +13 -1
  291. metadata/generated/schema/entity/data/storedProcedure.py +13 -1
  292. metadata/generated/schema/entity/data/table.py +1 -1
  293. metadata/generated/schema/entity/data/topic.py +1 -1
  294. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  295. metadata/generated/schema/entity/docStore/document.py +1 -1
  296. metadata/generated/schema/entity/domains/__init__.py +1 -1
  297. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  298. metadata/generated/schema/entity/domains/domain.py +1 -1
  299. metadata/generated/schema/entity/events/__init__.py +1 -1
  300. metadata/generated/schema/entity/events/webhook.py +1 -1
  301. metadata/generated/schema/entity/feed/__init__.py +1 -1
  302. metadata/generated/schema/entity/feed/assets.py +1 -1
  303. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  304. metadata/generated/schema/entity/feed/description.py +1 -1
  305. metadata/generated/schema/entity/feed/domain.py +1 -1
  306. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  307. metadata/generated/schema/entity/feed/owner.py +1 -1
  308. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  309. metadata/generated/schema/entity/feed/tag.py +1 -1
  310. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  311. metadata/generated/schema/entity/feed/thread.py +1 -1
  312. metadata/generated/schema/entity/policies/__init__.py +1 -1
  313. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  314. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  315. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  316. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  317. metadata/generated/schema/entity/policies/filters.py +1 -1
  318. metadata/generated/schema/entity/policies/policy.py +1 -1
  319. metadata/generated/schema/entity/services/__init__.py +1 -1
  320. metadata/generated/schema/entity/services/apiService.py +1 -1
  321. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  322. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  323. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  324. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  325. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  326. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  327. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  328. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  329. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  330. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  332. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  334. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +67 -0
  336. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  352. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/db2Connection.py +13 -1
  372. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +6 -2
  395. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +6 -3
  397. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  418. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  424. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  425. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  432. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  438. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +17 -5
  446. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  458. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  460. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  461. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  462. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  466. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  471. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  472. metadata/generated/schema/entity/services/dashboardService.py +4 -4
  473. metadata/generated/schema/entity/services/databaseService.py +1 -1
  474. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  475. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +2 -1
  476. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  477. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  478. metadata/generated/schema/entity/services/messagingService.py +1 -1
  479. metadata/generated/schema/entity/services/metadataService.py +1 -1
  480. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  481. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  482. metadata/generated/schema/entity/services/searchService.py +1 -1
  483. metadata/generated/schema/entity/services/serviceType.py +1 -1
  484. metadata/generated/schema/entity/services/storageService.py +1 -1
  485. metadata/generated/schema/entity/teams/__init__.py +1 -1
  486. metadata/generated/schema/entity/teams/persona.py +1 -1
  487. metadata/generated/schema/entity/teams/role.py +1 -1
  488. metadata/generated/schema/entity/teams/team.py +1 -1
  489. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  490. metadata/generated/schema/entity/teams/user.py +1 -1
  491. metadata/generated/schema/entity/type.py +1 -1
  492. metadata/generated/schema/entity/utils/__init__.py +1 -1
  493. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  494. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  495. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  496. metadata/generated/schema/events/__init__.py +1 -1
  497. metadata/generated/schema/events/alertMetrics.py +1 -1
  498. metadata/generated/schema/events/api/__init__.py +1 -1
  499. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  500. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  501. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  502. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  503. metadata/generated/schema/events/api/typedEvent.py +1 -1
  504. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  505. metadata/generated/schema/events/eventFilterRule.py +1 -1
  506. metadata/generated/schema/events/eventSubscription.py +1 -1
  507. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  508. metadata/generated/schema/events/failedEvent.py +1 -1
  509. metadata/generated/schema/events/failedEventResponse.py +1 -1
  510. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  511. metadata/generated/schema/events/statusContext.py +1 -1
  512. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  513. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  514. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  515. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  516. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  517. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  518. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  519. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  520. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  521. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  522. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  523. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  524. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  525. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  526. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  527. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  528. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  529. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  530. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  531. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  532. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  533. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +2 -2
  534. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  535. metadata/generated/schema/governance/workflows/workflowInstance.py +8 -1
  536. metadata/generated/schema/governance/workflows/workflowInstanceState.py +8 -1
  537. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  538. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  539. metadata/generated/schema/metadataIngestion/application.py +1 -1
  540. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  541. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  542. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  543. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +111 -0
  544. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  545. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -33
  546. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  547. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  548. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  549. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  550. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  551. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  552. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  553. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  554. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +9 -1
  555. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +9 -1
  556. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  557. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  558. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  559. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  561. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +9 -1
  562. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  563. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  564. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  565. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  566. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  567. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  568. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  569. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  570. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  571. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  572. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  573. metadata/generated/schema/metadataIngestion/workflow.py +3 -1
  574. metadata/generated/schema/monitoring/__init__.py +1 -1
  575. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  576. metadata/generated/schema/security/__init__.py +1 -1
  577. metadata/generated/schema/security/client/__init__.py +1 -1
  578. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  579. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  580. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  581. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  582. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  583. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  584. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  585. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  586. metadata/generated/schema/security/credentials/__init__.py +1 -1
  587. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  588. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  589. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  590. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  591. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  592. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  593. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  594. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  595. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  596. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  597. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  598. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  599. metadata/generated/schema/security/sasl/__init__.py +1 -1
  600. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  601. metadata/generated/schema/security/secrets/__init__.py +1 -1
  602. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  603. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  604. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  605. metadata/generated/schema/security/securityConfiguration.py +1 -1
  606. metadata/generated/schema/security/ssl/__init__.py +1 -1
  607. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  608. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  609. metadata/generated/schema/settings/__init__.py +1 -1
  610. metadata/generated/schema/settings/settings.py +1 -1
  611. metadata/generated/schema/system/__init__.py +1 -1
  612. metadata/generated/schema/system/entityError.py +1 -1
  613. metadata/generated/schema/system/eventPublisherJob.py +2 -1
  614. metadata/generated/schema/system/indexingError.py +1 -1
  615. metadata/generated/schema/system/limitsResponse.py +1 -1
  616. metadata/generated/schema/system/ui/__init__.py +1 -1
  617. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  618. metadata/generated/schema/system/ui/page.py +1 -1
  619. metadata/generated/schema/system/validationResponse.py +1 -1
  620. metadata/generated/schema/tests/__init__.py +1 -1
  621. metadata/generated/schema/tests/assigned.py +1 -1
  622. metadata/generated/schema/tests/basic.py +1 -1
  623. metadata/generated/schema/tests/customMetric.py +1 -1
  624. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  625. metadata/generated/schema/tests/resolved.py +1 -1
  626. metadata/generated/schema/tests/testCase.py +1 -1
  627. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  628. metadata/generated/schema/tests/testDefinition.py +1 -1
  629. metadata/generated/schema/tests/testSuite.py +1 -1
  630. metadata/generated/schema/type/__init__.py +1 -1
  631. metadata/generated/schema/type/apiSchema.py +1 -1
  632. metadata/generated/schema/type/assetCertification.py +1 -1
  633. metadata/generated/schema/type/auditLog.py +1 -1
  634. metadata/generated/schema/type/basic.py +1 -1
  635. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  636. metadata/generated/schema/type/changeEvent.py +1 -1
  637. metadata/generated/schema/type/changeEventType.py +1 -1
  638. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  639. metadata/generated/schema/type/csvDocumentation.py +1 -1
  640. metadata/generated/schema/type/csvErrorType.py +1 -1
  641. metadata/generated/schema/type/csvFile.py +1 -1
  642. metadata/generated/schema/type/csvImportResult.py +1 -1
  643. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  644. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  645. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  646. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  647. metadata/generated/schema/type/customProperty.py +1 -1
  648. metadata/generated/schema/type/dailyCount.py +1 -1
  649. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  650. metadata/generated/schema/type/entityHierarchy.py +1 -1
  651. metadata/generated/schema/type/entityHistory.py +1 -1
  652. metadata/generated/schema/type/entityLineage.py +1 -1
  653. metadata/generated/schema/type/entityReference.py +1 -1
  654. metadata/generated/schema/type/entityReferenceList.py +1 -1
  655. metadata/generated/schema/type/entityRelationship.py +2 -1
  656. metadata/generated/schema/type/entityUsage.py +1 -1
  657. metadata/generated/schema/type/filterPattern.py +1 -1
  658. metadata/generated/schema/type/function.py +1 -1
  659. metadata/generated/schema/type/include.py +1 -1
  660. metadata/generated/schema/type/jdbcConnection.py +1 -1
  661. metadata/generated/schema/type/lifeCycle.py +1 -1
  662. metadata/generated/schema/type/paging.py +1 -1
  663. metadata/generated/schema/type/profile.py +1 -1
  664. metadata/generated/schema/type/queryParserData.py +1 -1
  665. metadata/generated/schema/type/reaction.py +1 -1
  666. metadata/generated/schema/type/schedule.py +1 -1
  667. metadata/generated/schema/type/schema.py +1 -1
  668. metadata/generated/schema/type/tableQuery.py +1 -1
  669. metadata/generated/schema/type/tableUsageCount.py +1 -1
  670. metadata/generated/schema/type/tagLabel.py +1 -1
  671. metadata/generated/schema/type/usageDetails.py +1 -1
  672. metadata/generated/schema/type/usageRequest.py +1 -1
  673. metadata/generated/schema/type/votes.py +1 -1
  674. metadata/ingestion/api/models.py +9 -5
  675. metadata/ingestion/lineage/parser.py +6 -4
  676. metadata/ingestion/lineage/sql_lineage.py +258 -29
  677. metadata/ingestion/models/patch_request.py +2 -0
  678. metadata/ingestion/ometa/client.py +13 -8
  679. metadata/ingestion/ometa/mixins/data_insight_mixin.py +3 -2
  680. metadata/ingestion/ometa/mixins/ingestion_pipeline_mixin.py +5 -3
  681. metadata/ingestion/ometa/mixins/suggestions_mixin.py +3 -3
  682. metadata/ingestion/ometa/mixins/table_mixin.py +1 -1
  683. metadata/ingestion/ometa/models.py +1 -0
  684. metadata/ingestion/ometa/ometa_api.py +6 -3
  685. metadata/ingestion/sink/metadata_rest.py +23 -18
  686. metadata/ingestion/source/dashboard/dashboard_service.py +2 -0
  687. metadata/ingestion/source/dashboard/microstrategy/client.py +268 -0
  688. metadata/ingestion/source/dashboard/{mstr → microstrategy}/connection.py +11 -11
  689. metadata/ingestion/source/dashboard/{mstr → microstrategy}/metadata.py +74 -51
  690. metadata/ingestion/source/dashboard/{mstr → microstrategy}/models.py +9 -3
  691. metadata/ingestion/source/dashboard/microstrategy/service_spec.py +6 -0
  692. metadata/ingestion/source/dashboard/powerbi/client.py +1 -2
  693. metadata/ingestion/source/dashboard/superset/db_source.py +1 -1
  694. metadata/ingestion/source/dashboard/tableau/metadata.py +29 -12
  695. metadata/ingestion/source/dashboard/tableau/models.py +10 -0
  696. metadata/ingestion/source/database/athena/metadata.py +8 -0
  697. metadata/ingestion/source/database/azuresql/service_spec.py +2 -0
  698. metadata/ingestion/source/database/bigquery/profiler/profiler.py +1 -1
  699. metadata/ingestion/source/database/bigquery/profiler/system.py +5 -4
  700. metadata/ingestion/source/database/bigquery/service_spec.py +2 -0
  701. metadata/ingestion/source/database/common_nosql_source.py +7 -0
  702. metadata/ingestion/source/database/databricks/metadata.py +1 -3
  703. metadata/ingestion/source/database/databricks/service_spec.py +4 -0
  704. metadata/ingestion/source/database/datalake/clients/azure_blob.py +0 -3
  705. metadata/ingestion/source/database/datalake/clients/base.py +10 -1
  706. metadata/ingestion/source/database/datalake/clients/gcs.py +4 -2
  707. metadata/ingestion/source/database/datalake/clients/s3.py +0 -3
  708. metadata/ingestion/source/database/datalake/service_spec.py +8 -1
  709. metadata/ingestion/source/database/db2/connection.py +14 -1
  710. metadata/ingestion/source/database/dbt/constants.py +12 -0
  711. metadata/ingestion/source/database/dbt/dbt_config.py +19 -1
  712. metadata/ingestion/source/database/dbt/dbt_service.py +25 -1
  713. metadata/ingestion/source/database/dbt/dbt_utils.py +29 -0
  714. metadata/ingestion/source/database/dbt/metadata.py +70 -1
  715. metadata/ingestion/source/database/dbt/models.py +2 -0
  716. metadata/ingestion/source/database/dynamodb/service_spec.py +4 -1
  717. metadata/ingestion/source/database/mongodb/service_spec.py +4 -1
  718. metadata/ingestion/source/database/mysql/connection.py +5 -0
  719. metadata/ingestion/source/database/mysql/lineage.py +12 -30
  720. metadata/ingestion/source/database/mysql/queries.py +43 -0
  721. metadata/ingestion/source/database/mysql/query_parser.py +46 -0
  722. metadata/ingestion/source/database/mysql/service_spec.py +7 -1
  723. metadata/{data_quality/builders/pandas_validator_builder.py → ingestion/source/database/mysql/usage.py} +9 -14
  724. metadata/ingestion/source/database/redshift/profiler/system.py +5 -4
  725. metadata/ingestion/source/database/sample_data.py +4 -12
  726. metadata/ingestion/source/database/snowflake/connection.py +8 -3
  727. metadata/ingestion/source/database/snowflake/lineage.py +35 -1
  728. metadata/ingestion/source/database/snowflake/metadata.py +38 -19
  729. metadata/ingestion/source/database/snowflake/models.py +1 -0
  730. metadata/ingestion/source/database/snowflake/profiler/system.py +5 -4
  731. metadata/ingestion/source/database/snowflake/queries.py +22 -1
  732. metadata/ingestion/source/database/snowflake/service_spec.py +6 -0
  733. metadata/ingestion/source/database/stored_procedures_mixin.py +20 -8
  734. metadata/ingestion/source/database/trino/service_spec.py +2 -0
  735. metadata/ingestion/source/database/unitycatalog/service_spec.py +4 -0
  736. metadata/ingestion/source/pipeline/airflow/connection.py +45 -2
  737. metadata/ingestion/source/pipeline/airflow/metadata.py +35 -25
  738. metadata/ingestion/source/pipeline/dbtcloud/client.py +67 -28
  739. metadata/ingestion/source/pipeline/dbtcloud/connection.py +1 -3
  740. metadata/ingestion/source/pipeline/dbtcloud/models.py +1 -1
  741. metadata/ingestion/source/pipeline/fivetran/metadata.py +1 -1
  742. metadata/ingestion/source/pipeline/kafkaconnect/client.py +1 -1
  743. metadata/ingestion/source/search/elasticsearch/metadata.py +53 -0
  744. metadata/ingestion/source/search/search_service.py +44 -1
  745. metadata/mixins/pandas/pandas_mixin.py +2 -31
  746. metadata/mixins/sqalchemy/sqa_mixin.py +16 -16
  747. metadata/pii/processor.py +10 -9
  748. metadata/profiler/api/models.py +3 -79
  749. metadata/profiler/config.py +39 -0
  750. metadata/profiler/interface/nosql/profiler_interface.py +1 -26
  751. metadata/profiler/interface/pandas/profiler_interface.py +37 -77
  752. metadata/profiler/interface/profiler_interface.py +10 -282
  753. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +0 -19
  754. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +2 -17
  755. metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +1 -1
  756. metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +2 -2
  757. metadata/profiler/interface/sqlalchemy/profiler_interface.py +46 -109
  758. metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +2 -2
  759. metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +1 -1
  760. metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +6 -8
  761. metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +2 -2
  762. metadata/profiler/orm/converter/base.py +21 -12
  763. metadata/profiler/orm/functions/table_metric_computer.py +9 -8
  764. metadata/profiler/processor/core.py +5 -58
  765. metadata/profiler/processor/handle_partition.py +0 -48
  766. metadata/profiler/processor/runner.py +116 -35
  767. metadata/profiler/processor/sample_data_handler.py +7 -4
  768. metadata/profiler/source/database/base/profiler_source.py +56 -138
  769. metadata/profiler/source/database/bigquery/profiler_source.py +3 -3
  770. metadata/profiler/source/database/databricks/profiler_source.py +2 -3
  771. metadata/profiler/source/fetcher/config.py +44 -0
  772. metadata/profiler/source/fetcher/fetcher_strategy.py +2 -4
  773. metadata/sampler/config.py +237 -0
  774. metadata/sampler/models.py +106 -0
  775. metadata/{profiler/processor/sampler → sampler}/nosql/sampler.py +44 -12
  776. metadata/sampler/pandas/sampler.py +239 -0
  777. metadata/{utils → sampler}/partition.py +66 -51
  778. metadata/sampler/processor.py +154 -0
  779. metadata/sampler/sampler_interface.py +251 -0
  780. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/azuresql/sampler.py +1 -1
  781. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/bigquery/sampler.py +55 -26
  782. metadata/sampler/sqlalchemy/postgres/sampler.py +91 -0
  783. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/sampler.py +93 -98
  784. metadata/sampler/sqlalchemy/snowflake/sampler.py +95 -0
  785. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/trino/sampler.py +5 -3
  786. metadata/utils/class_helper.py +7 -0
  787. metadata/utils/constants.py +63 -0
  788. metadata/utils/helpers.py +1 -2
  789. metadata/utils/importer.py +1 -1
  790. metadata/utils/logger.py +9 -0
  791. metadata/utils/profiler_utils.py +42 -0
  792. metadata/utils/service_spec/default.py +6 -0
  793. metadata/utils/service_spec/service_spec.py +47 -0
  794. metadata/utils/sqlalchemy_utils.py +1 -1
  795. metadata/utils/ssl_manager.py +39 -1
  796. metadata/workflow/classification.py +53 -0
  797. metadata/workflow/data_quality.py +5 -1
  798. metadata/workflow/profiler.py +1 -17
  799. {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc3.dist-info}/METADATA +373 -373
  800. {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc3.dist-info}/RECORD +805 -795
  801. metadata/data_quality/builders/sqa_validator_builder.py +0 -25
  802. metadata/data_quality/interface/test_suite_interface_factory.py +0 -158
  803. metadata/data_quality/runner/test_suite_source_factory.py +0 -38
  804. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +0 -54
  805. metadata/ingestion/source/dashboard/mstr/client.py +0 -209
  806. metadata/ingestion/source/dashboard/mstr/service_spec.py +0 -4
  807. metadata/profiler/processor/sampler/pandas/sampler.py +0 -170
  808. metadata/profiler/processor/sampler/sampler_factory.py +0 -100
  809. metadata/profiler/processor/sampler/sampler_interface.py +0 -74
  810. metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +0 -83
  811. /metadata/ingestion/source/dashboard/{mstr → microstrategy}/__init__.py +0 -0
  812. {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc3.dist-info}/LICENSE +0 -0
  813. {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc3.dist-info}/WHEEL +0 -0
  814. {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc3.dist-info}/entry_points.txt +0 -0
  815. {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc3.dist-info}/top_level.txt +0 -0
@@ -15,25 +15,27 @@ Base source for the data quality used to instantiate a data quality runner with
15
15
  from copy import deepcopy
16
16
  from typing import Optional, cast
17
17
 
18
- from sqlalchemy import MetaData
19
-
18
+ from metadata.data_quality.builders.validator_builder import ValidatorBuilder
20
19
  from metadata.data_quality.interface.test_suite_interface import TestSuiteInterface
21
- from metadata.data_quality.interface.test_suite_interface_factory import (
22
- test_suite_interface_factory,
23
- )
24
20
  from metadata.data_quality.runner.core import DataTestsRunner
25
21
  from metadata.generated.schema.entity.data.table import Table
26
- from metadata.generated.schema.entity.services.connections.database.datalakeConnection import (
27
- DatalakeConnection,
28
- )
29
22
  from metadata.generated.schema.entity.services.databaseService import DatabaseConnection
23
+ from metadata.generated.schema.entity.services.serviceType import ServiceType
24
+ from metadata.generated.schema.metadataIngestion.testSuitePipeline import (
25
+ TestSuitePipeline,
26
+ )
30
27
  from metadata.generated.schema.metadataIngestion.workflow import (
31
28
  OpenMetadataWorkflowConfig,
32
29
  )
33
30
  from metadata.generated.schema.type.entityReference import EntityReference
34
31
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
35
-
36
- NON_SQA_DATABASE_CONNECTIONS = (DatalakeConnection,)
32
+ from metadata.sampler.models import SampleConfig
33
+ from metadata.sampler.sampler_interface import SamplerInterface
34
+ from metadata.utils.profiler_utils import get_context_entities
35
+ from metadata.utils.service_spec.service_spec import (
36
+ import_sampler_class,
37
+ import_test_suite_class,
38
+ )
37
39
 
38
40
 
39
41
  class BaseTestSuiteRunner:
@@ -45,11 +47,16 @@ class BaseTestSuiteRunner:
45
47
  ometa_client: OpenMetadata,
46
48
  entity: Table,
47
49
  ):
50
+ self.validator_builder_class = ValidatorBuilder
48
51
  self._interface = None
49
52
  self.entity = entity
50
53
  self.service_conn_config = self._copy_service_config(config, self.entity.database) # type: ignore
54
+ self._interface_type: str = self.service_conn_config.type.value.lower()
55
+
56
+ self.source_config = TestSuitePipeline.model_validate(
57
+ config.source.sourceConfig.config
58
+ )
51
59
  self.ometa_client = ometa_client
52
- self.sqa_metadata = self._set_sqa_metadata()
53
60
 
54
61
  @property
55
62
  def interface(self) -> Optional[TestSuiteInterface]:
@@ -87,28 +94,47 @@ class BaseTestSuiteRunner:
87
94
 
88
95
  return config_copy
89
96
 
90
- def _set_sqa_metadata(self):
91
- """Set sqlalchemy metadata"""
92
- if not isinstance(self.service_conn_config, NON_SQA_DATABASE_CONNECTIONS):
93
- return MetaData()
94
- return None
95
-
96
97
  def create_data_quality_interface(self) -> TestSuiteInterface:
97
98
  """Create data quality interface
98
99
 
99
100
  Returns:
100
101
  TestSuiteInterface: a data quality interface
101
102
  """
102
- data_quality_interface: TestSuiteInterface = (
103
- test_suite_interface_factory.create(
104
- self.service_conn_config,
105
- self.ometa_client,
106
- self.entity,
107
- sqa_metadata=self.sqa_metadata,
108
- )
103
+ schema_entity, database_entity, _ = get_context_entities(
104
+ entity=self.entity, metadata=self.ometa_client
105
+ )
106
+ test_suite_class = import_test_suite_class(
107
+ ServiceType.Database,
108
+ source_type=self._interface_type,
109
+ source_config_type=self.service_conn_config.type.value,
110
+ )
111
+ sampler_class = import_sampler_class(
112
+ ServiceType.Database,
113
+ source_type=self._interface_type,
114
+ source_config_type=self.service_conn_config.type.value,
115
+ )
116
+ # This is shared between the sampler and DQ interfaces
117
+ sampler_interface: SamplerInterface = sampler_class.create(
118
+ service_connection_config=self.service_conn_config,
119
+ ometa_client=self.ometa_client,
120
+ entity=self.entity,
121
+ schema_entity=schema_entity,
122
+ database_entity=database_entity,
123
+ default_sample_config=SampleConfig(
124
+ profile_sample=self.source_config.profileSample,
125
+ profile_sample_type=self.source_config.profileSampleType,
126
+ sampling_method_type=self.source_config.samplingMethodType,
127
+ ),
128
+ )
129
+
130
+ self.interface: TestSuiteInterface = test_suite_class.create(
131
+ service_connection_config=self.service_conn_config,
132
+ ometa_client=self.ometa_client,
133
+ sampler=sampler_interface,
134
+ table_entity=self.entity,
135
+ validator_builder=self.validator_builder_class,
109
136
  )
110
- self.interface = data_quality_interface
111
- return data_quality_interface
137
+ return self.interface
112
138
 
113
139
  def get_data_quality_runner(self) -> DataTestsRunner:
114
140
  """Get a data quality runner
@@ -19,10 +19,9 @@ import reprlib
19
19
  from abc import ABC, abstractmethod
20
20
  from typing import TYPE_CHECKING, Callable, List, Optional, Type, TypeVar, Union
21
21
 
22
+ from pydantic import BaseModel
23
+
22
24
  from metadata.data_quality.validations import utils
23
- from metadata.data_quality.validations.runtime_param_setter.param_setter import (
24
- RuntimeParameterSetter,
25
- )
26
25
  from metadata.generated.schema.tests.basic import (
27
26
  TestCaseResult,
28
27
  TestCaseStatus,
@@ -37,6 +36,7 @@ if TYPE_CHECKING:
37
36
 
38
37
  T = TypeVar("T", bound=Callable)
39
38
  R = TypeVar("R")
39
+ S = TypeVar("S", bound=BaseModel)
40
40
 
41
41
 
42
42
  class BaseTestValidator(ABC):
@@ -45,8 +45,6 @@ class BaseTestValidator(ABC):
45
45
  This can be useful to resolve complex test parameters based on the parameters gibven by the user.
46
46
  """
47
47
 
48
- runtime_parameter_setter: Optional[Type[RuntimeParameterSetter]] = None
49
-
50
48
  def __init__(
51
49
  self,
52
50
  runner: Union[QueryRunner, List["DataFrame"]],
@@ -120,10 +118,10 @@ class BaseTestValidator(ABC):
120
118
  failed_rows = (
121
119
  failed_rows if failed_rows is not None else (row_count - passed_rows)
122
120
  )
123
- test_case_result.passedRows = passed_rows
124
- test_case_result.failedRows = failed_rows
125
- test_case_result.passedRowsPercentage = (passed_rows / row_count) * 100
126
- test_case_result.failedRowsPercentage = (failed_rows / row_count) * 100 # type: ignore
121
+ test_case_result.passedRows = int(passed_rows)
122
+ test_case_result.failedRows = int(failed_rows)
123
+ test_case_result.passedRowsPercentage = float(passed_rows / row_count) * 100
124
+ test_case_result.failedRowsPercentage = float(failed_rows / row_count) * 100 # type: ignore
127
125
 
128
126
  return test_case_result
129
127
 
@@ -168,3 +166,10 @@ class BaseTestValidator(ABC):
168
166
  def get_predicted_value(self) -> Optional[str]:
169
167
  """Get predicted value"""
170
168
  return None
169
+
170
+ def get_runtime_parameters(self, setter_class: Type[S]) -> S:
171
+ """Get runtime parameters"""
172
+ for param in self.test_case.parameterValues or []:
173
+ if param.name == setter_class.__name__:
174
+ return setter_class.model_validate_json(param.value)
175
+ raise ValueError(f"Runtime parameter {setter_class.__name__} not found")
@@ -40,7 +40,7 @@ class ColumnValueLengthsToBeBetweenValidator(
40
40
  """
41
41
  return self.get_column_name(
42
42
  self.test_case.entityLink.root,
43
- inspect(self.runner.table).c,
43
+ inspect(self.runner.dataset).c,
44
44
  )
45
45
 
46
46
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -38,7 +38,7 @@ class ColumnValueMaxToBeBetweenValidator(
38
38
  """
39
39
  return self.get_column_name(
40
40
  self.test_case.entityLink.root,
41
- inspect(self.runner.table).c,
41
+ inspect(self.runner.dataset).c,
42
42
  )
43
43
 
44
44
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValueMeanToBeBetweenValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValueMedianToBeBetweenValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValueMinToBeBetweenValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValueStdDevToBeBetweenValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -42,7 +42,7 @@ class ColumnValuesMissingCountValidator(
42
42
  """
43
43
  return self.get_column_name(
44
44
  self.test_case.entityLink.root,
45
- inspect(self.runner.table).c,
45
+ inspect(self.runner.dataset).c,
46
46
  )
47
47
 
48
48
  def _run_results(self, metric: Metrics, column: Column, **kwargs) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValuesSumToBeBetweenValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -37,7 +37,7 @@ class ColumnValuesToBeAtExpectedLocationValidator(
37
37
  def _fetch_data(self, columns: List[str]) -> Iterator:
38
38
  """Fetch data from the runner object"""
39
39
  self.runner = cast(QueryRunner, self.runner)
40
- inspection = inspect(self.runner.table)
40
+ inspection = inspect(self.runner.dataset)
41
41
  table_columns: List[Column] = inspection.c if inspection is not None else []
42
42
  cols = [col for col in table_columns if col.name in columns]
43
43
  for col in cols:
@@ -39,7 +39,7 @@ class ColumnValuesToBeBetweenValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValuesToBeInSetValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column, **kwargs) -> Optional[int]:
@@ -39,7 +39,7 @@ class ColumnValuesToBeNotInSetValidator(
39
39
  """
40
40
  return self.get_column_name(
41
41
  self.test_case.entityLink.root,
42
- inspect(self.runner.table).c,
42
+ inspect(self.runner.dataset).c,
43
43
  )
44
44
 
45
45
  def _run_results(self, metric: Metrics, column: Column, **kwargs) -> Optional[int]:
@@ -42,7 +42,7 @@ class ColumnValuesToBeNotNullValidator(
42
42
  """
43
43
  return self.get_column_name(
44
44
  self.test_case.entityLink.root,
45
- inspect(self.runner.table).c,
45
+ inspect(self.runner.dataset).c,
46
46
  )
47
47
 
48
48
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -17,7 +17,6 @@ from typing import Optional
17
17
 
18
18
  from sqlalchemy import Column, inspect
19
19
  from sqlalchemy.exc import SQLAlchemyError
20
- from sqlalchemy.orm.util import AliasedClass
21
20
 
22
21
  from metadata.data_quality.validations.column.base.columnValuesToBeUnique import (
23
22
  BaseColumnValuesToBeUniqueValidator,
@@ -41,7 +40,7 @@ class ColumnValuesToBeUniqueValidator(
41
40
  """
42
41
  return self.get_column_name(
43
42
  self.test_case.entityLink.root,
44
- inspect(self.runner.table).c,
43
+ inspect(self.runner.dataset).c,
45
44
  )
46
45
 
47
46
  def _run_results(self, metric: Metrics, column: Column) -> Optional[int]:
@@ -53,12 +52,7 @@ class ColumnValuesToBeUniqueValidator(
53
52
  """
54
53
  count = Metrics.COUNT.value(column).fn()
55
54
  unique_count = Metrics.UNIQUE_COUNT.value(column).query(
56
- sample=self.runner._sample # pylint: disable=protected-access
57
- if isinstance(
58
- self.runner._sample, # pylint: disable=protected-access
59
- AliasedClass,
60
- )
61
- else self.runner.table,
55
+ sample=self.runner.dataset,
62
56
  session=self.runner._session, # pylint: disable=protected-access
63
57
  ) # type: ignore
64
58
 
@@ -43,7 +43,7 @@ class ColumnValuesToMatchRegexValidator(
43
43
  """
44
44
  return self.get_column_name(
45
45
  self.test_case.entityLink.root,
46
- inspect(self.runner.table).c,
46
+ inspect(self.runner.dataset).c,
47
47
  )
48
48
 
49
49
  def _run_results(
@@ -43,7 +43,7 @@ class ColumnValuesToNotMatchRegexValidator(
43
43
  """
44
44
  return self.get_column_name(
45
45
  self.test_case.entityLink.root,
46
- inspect(self.runner.table).c,
46
+ inspect(self.runner.dataset).c,
47
47
  )
48
48
 
49
49
  def _run_results(self, metric: Metrics, column: Column, **kwargs) -> Optional[int]:
@@ -15,14 +15,13 @@ from pydantic import BaseModel
15
15
 
16
16
  from metadata.generated.schema.entity.data.table import Table
17
17
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
18
- from metadata.profiler.processor.sampler.sqlalchemy.sampler import SQASampler
19
18
 
20
19
 
21
20
  class RuntimeParameterSetter(ABC):
22
21
  """
23
22
  Set runtime parameters for a test case. This can be useful for resolving parameters based on the
24
23
  state of OpenMetadata entities.
25
- You can see an example implemnentation in `TableDiffParamsSetter`.
24
+ You can see an example implementation in `TableDiffParamsSetter`.
26
25
  """
27
26
 
28
27
  def __init__(
@@ -30,7 +29,7 @@ class RuntimeParameterSetter(ABC):
30
29
  ometa_client: OpenMetadata,
31
30
  service_connection_config,
32
31
  table_entity: Table,
33
- sampler: SQASampler,
32
+ sampler,
34
33
  ):
35
34
  self.ometa_client = ometa_client
36
35
  self.service_connection_config = service_connection_config
@@ -13,8 +13,8 @@ Module that defines the RuntimeParameterFactory class.
13
13
  This class is responsible for creating instances of the RuntimeParameterSetter
14
14
  based on the test case.
15
15
  """
16
-
17
- from typing import Optional
16
+ import sys
17
+ from typing import Dict, Set, Type
18
18
 
19
19
  from metadata.data_quality.validations.runtime_param_setter.param_setter import (
20
20
  RuntimeParameterSetter,
@@ -22,7 +22,35 @@ from metadata.data_quality.validations.runtime_param_setter.param_setter import
22
22
  from metadata.data_quality.validations.runtime_param_setter.table_diff_params_setter import (
23
23
  TableDiffParamsSetter,
24
24
  )
25
+ from metadata.data_quality.validations.table.sqlalchemy.tableDiff import (
26
+ TableDiffValidator,
27
+ )
28
+ from metadata.generated.schema.entity.data.table import Table
25
29
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
30
+ from metadata.sampler.sampler_interface import SamplerInterface
31
+
32
+
33
+ def removesuffix(s: str, suffix: str) -> str:
34
+ """A custom implementation of removesuffix for python versions < 3.9
35
+
36
+ Args:
37
+ s (str): The string to remove the suffix from
38
+ suffix (str): The suffix to remove
39
+
40
+ Returns:
41
+ str: The string with the suffix removed
42
+ """
43
+ if sys.version_info >= (3, 9):
44
+ return s.removesuffix(suffix)
45
+ if s.endswith(suffix):
46
+ return s[: -len(suffix)]
47
+ return s
48
+
49
+
50
+ def validator_name(test_case_class: Type) -> str:
51
+ return removesuffix(
52
+ test_case_class.__name__[0].lower() + test_case_class.__name__[1:], "Validator"
53
+ )
26
54
 
27
55
 
28
56
  class RuntimeParameterSetterFactory:
@@ -30,25 +58,25 @@ class RuntimeParameterSetterFactory:
30
58
 
31
59
  def __init__(self) -> None:
32
60
  """Set"""
33
- self._setter_map = {
34
- TableDiffParamsSetter: {"tableDiff"},
61
+ self._setter_map: Dict[str, Set[Type[RuntimeParameterSetter]]] = {
62
+ validator_name(TableDiffValidator): {TableDiffParamsSetter},
35
63
  }
36
64
 
37
- def get_runtime_param_setter(
65
+ def get_runtime_param_setters(
38
66
  self,
39
67
  name: str,
40
68
  ometa: OpenMetadata,
41
69
  service_connection_config,
42
- table_entity,
43
- sampler,
44
- ) -> Optional[RuntimeParameterSetter]:
70
+ table_entity: Table,
71
+ sampler: SamplerInterface,
72
+ ) -> Set[RuntimeParameterSetter]:
45
73
  """Get the runtime parameter setter"""
46
- for setter_cls, validator_names in self._setter_map.items():
47
- if name in validator_names:
48
- return setter_cls(
49
- ometa,
50
- service_connection_config,
51
- table_entity,
52
- sampler,
53
- )
54
- return None
74
+ return {
75
+ setter(
76
+ ometa,
77
+ service_connection_config,
78
+ table_entity,
79
+ sampler,
80
+ )
81
+ for setter in self._setter_map.get(name, set())
82
+ }
@@ -10,7 +10,7 @@
10
10
  # limitations under the License.
11
11
  """Module that defines the TableDiffParamsSetter class."""
12
12
  from ast import literal_eval
13
- from typing import List, Optional
13
+ from typing import List, Optional, Set
14
14
  from urllib.parse import urlparse
15
15
 
16
16
  from metadata.data_quality.validations import utils
@@ -75,7 +75,9 @@ class TableDiffParamsSetter(RuntimeParameterSetter):
75
75
  DatabaseService, table2.service.id, nullable=False
76
76
  )
77
77
  key_columns = self.get_key_columns(test_case)
78
- extra_columns = self.get_extra_columns(key_columns, test_case)
78
+ extra_columns = self.get_extra_columns(
79
+ key_columns, test_case, self.table_entity.columns, table2.columns
80
+ )
79
81
  return TableDiffRuntimeParameters(
80
82
  table_profile_config=self.table_entity.tableProfilerConfig,
81
83
  table1=TableParameter(
@@ -111,19 +113,18 @@ class TableDiffParamsSetter(RuntimeParameterSetter):
111
113
  case_sensitive=case_sensitive_columns,
112
114
  ),
113
115
  ),
114
- keyColumns=key_columns,
115
- extraColumns=extra_columns,
116
+ keyColumns=list(key_columns),
117
+ extraColumns=list(extra_columns),
116
118
  whereClause=self.build_where_clause(test_case),
117
119
  )
118
120
 
119
- # pylint: disable=protected-access
120
121
  def build_where_clause(self, test_case) -> Optional[str]:
121
122
  param_where_clause = self.get_parameter(test_case, "where", None)
122
123
  partition_where_clause = (
123
124
  None
124
125
  if not (
125
- self.sampler._partition_details
126
- and self.sampler._partition_details.enablePartitioning
126
+ self.sampler.partition_details
127
+ and self.sampler.partition_details.enablePartitioning
127
128
  )
128
129
  else self.sampler.get_partitioned_query().whereclause.compile(
129
130
  compile_kwargs={"literal_binds": True}
@@ -135,21 +136,25 @@ class TableDiffParamsSetter(RuntimeParameterSetter):
135
136
  return " AND ".join(where_clauses)
136
137
 
137
138
  def get_extra_columns(
138
- self, key_columns: List[str], test_case
139
- ) -> Optional[List[str]]:
139
+ self,
140
+ key_columns: Set[str],
141
+ test_case,
142
+ left_columns: List[Column],
143
+ right_columns: List[Column],
144
+ ) -> Optional[Set[str]]:
140
145
  extra_columns_param = self.get_parameter(test_case, "useColumns", None)
141
146
  if extra_columns_param is not None:
142
147
  extra_columns: List[str] = literal_eval(extra_columns_param)
143
148
  self.validate_columns(extra_columns)
144
- return extra_columns
149
+ return set(extra_columns)
145
150
  if extra_columns_param is None:
146
151
  extra_columns_param = []
147
- for column in self.table_entity.columns:
152
+ for column in left_columns + right_columns:
148
153
  if column.name.root not in key_columns:
149
154
  extra_columns_param.insert(0, column.name.root)
150
- return extra_columns_param
155
+ return set(extra_columns_param)
151
156
 
152
- def get_key_columns(self, test_case) -> List[str]:
157
+ def get_key_columns(self, test_case) -> Set[str]:
153
158
  key_columns_param = self.get_parameter(test_case, "keyColumns", "[]")
154
159
  key_columns: List[str] = literal_eval(key_columns_param)
155
160
  if key_columns:
@@ -168,13 +173,13 @@ class TableDiffParamsSetter(RuntimeParameterSetter):
168
173
  "Could not find primary key or unique constraint columns.\n",
169
174
  "Specify 'keyColumns' to explicitly set the columns to use as keys.",
170
175
  )
171
- return key_columns
176
+ return set(key_columns)
172
177
 
173
178
  @staticmethod
174
179
  def filter_relevant_columns(
175
180
  columns: List[Column],
176
- key_columns: List[str],
177
- extra_columns: List[str],
181
+ key_columns: Set[str],
182
+ extra_columns: Set[str],
178
183
  case_sensitive: bool,
179
184
  ) -> List[Column]:
180
185
  validated_columns = (
@@ -37,7 +37,13 @@ class TableCustomSQLQueryValidator(BaseTableCustomSQLQueryValidator, SQAValidato
37
37
  text(sql_expression)
38
38
  )
39
39
  if strategy == Strategy.COUNT:
40
- return cursor.scalar()
40
+ result = cursor.scalar()
41
+ if not isinstance(result, int):
42
+ raise ValueError(
43
+ f"When using COUNT strategy, the result must be an integer. Received: {type(result)}\n"
44
+ "Example: SELECT COUNT(*) FROM table_name WHERE my_value IS NOT NULL"
45
+ )
46
+ return result
41
47
  return cursor.fetchall()
42
48
  except Exception as exc:
43
49
  self.runner._session.rollback() # pylint: disable=protected-access
@@ -48,6 +48,7 @@ from metadata.generated.schema.tests.basic import (
48
48
  TestCaseStatus,
49
49
  TestResultValue,
50
50
  )
51
+ from metadata.profiler.metrics.registry import Metrics
51
52
  from metadata.profiler.orm.converter.base import build_orm_col
52
53
  from metadata.profiler.orm.functions.md5 import MD5
53
54
  from metadata.profiler.orm.functions.substr import Substr
@@ -178,7 +179,7 @@ class TableDiffValidator(BaseTestValidator, SQAValidatorMixin):
178
179
  runtime_params: TableDiffRuntimeParameters
179
180
 
180
181
  def run_validation(self) -> TestCaseResult:
181
- self.runtime_params = self.get_runtime_params()
182
+ self.runtime_params = self.get_runtime_parameters(TableDiffRuntimeParameters)
182
183
  try:
183
184
  self._validate_dialects()
184
185
  return self._run()
@@ -273,15 +274,16 @@ class TableDiffValidator(BaseTestValidator, SQAValidatorMixin):
273
274
  ).with_schema()
274
275
  result = []
275
276
  for column in table1.key_columns + table1.extra_columns:
276
- col1_type = self._get_column_python_type(
277
- table1._schema[column] # pylint: disable=protected-access
278
- )
279
- # Skip columns that are not in the second table. We cover this case in get_changed_added_columns.
280
- if table2._schema.get(column) is None: # pylint: disable=protected-access
277
+ col1 = table1._schema.get(column) # pylint: disable=protected-access
278
+ if col1 is None:
279
+ # Skip columns that are not in the first table. We cover this case in get_changed_added_columns.
281
280
  continue
282
- col2_type = self._get_column_python_type(
283
- table2._schema[column] # pylint: disable=protected-access
284
- )
281
+ col2 = table2._schema.get(column) # pylint: disable=protected-access
282
+ if col2 is None:
283
+ # Skip columns that are not in the second table. We cover this case in get_changed_added_columns.
284
+ continue
285
+ col1_type = self._get_column_python_type(col1)
286
+ col2_type = self._get_column_python_type(col2)
285
287
  if is_numeric(col1_type) and is_numeric(col2_type):
286
288
  continue
287
289
  if col1_type != col2_type:
@@ -429,7 +431,7 @@ class TableDiffValidator(BaseTestValidator, SQAValidatorMixin):
429
431
  self.runtime_params.table_profile_config.profileSampleType
430
432
  == ProfileSampleType.ROWS
431
433
  ):
432
- row_count = self.get_row_count()
434
+ row_count = self.get_total_row_count()
433
435
  if row_count is None:
434
436
  raise ValueError("Row count is required for ROWS profile sample type")
435
437
  return int(
@@ -438,13 +440,6 @@ class TableDiffValidator(BaseTestValidator, SQAValidatorMixin):
438
440
  )
439
441
  raise ValueError("Invalid profile sample type")
440
442
 
441
- def get_runtime_params(self) -> TableDiffRuntimeParameters:
442
- raw = self.get_test_case_param_value(
443
- self.test_case.parameterValues, "runtimeParams", str
444
- )
445
- runtime_params = TableDiffRuntimeParameters.model_validate_json(raw)
446
- return runtime_params
447
-
448
443
  def get_row_diff_test_case_result(
449
444
  self,
450
445
  threshold: int,
@@ -640,5 +635,13 @@ class TableDiffValidator(BaseTestValidator, SQAValidatorMixin):
640
635
  )
641
636
 
642
637
  def get_row_count(self) -> Optional[int]:
643
- self.runner._sample = None # pylint: disable=protected-access
644
638
  return self._compute_row_count(self.runner, None)
639
+
640
+ def get_total_row_count(self) -> Optional[int]:
641
+ row_count = Metrics.ROW_COUNT()
642
+ try:
643
+ row = self.runner.select_first_from_table(row_count.fn())
644
+ return dict(row).get(Metrics.ROW_COUNT.name)
645
+ except Exception as e:
646
+ logger.error(f"Error getting row count: {e}")
647
+ return None