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
@@ -22,8 +22,6 @@ from metadata.generated.schema.entity.data.table import (
22
22
  PartitionIntervalTypes,
23
23
  PartitionProfilerConfig,
24
24
  )
25
- from metadata.profiler.orm.functions.modulo import ModuloFn
26
- from metadata.profiler.orm.functions.random_num import RandomNumFn
27
25
  from metadata.utils.logger import profiler_logger
28
26
  from metadata.utils.sqa_utils import (
29
27
  build_query_filter,
@@ -80,49 +78,3 @@ def build_partition_predicate(
80
78
  [(Column(partition_field), "ge", date_or_datetime_fn)],
81
79
  False,
82
80
  )
83
-
84
-
85
- # pylint: disable=invalid-name,protected-access
86
- class partition_filter_handler:
87
- """Decorator to handle partioned queries (hence lowercase class name)
88
-
89
- Attributes:
90
- first (bool): whether to return just the first row
91
- sampled (bool): whether data should be sampled
92
- build_sample (bool): whether to build the sample data set
93
- """
94
-
95
- def __init__(
96
- self,
97
- first: bool = True,
98
- sampled: bool = False,
99
- build_sample: bool = False,
100
- ):
101
- self.first = first
102
- self.sampled = sampled
103
- self.build_sample = build_sample
104
-
105
- def __call__(self, func):
106
- def handle_and_execute(_self, *args, **kwargs):
107
- """Handle partitioned queries"""
108
- if _self._partition_details:
109
- partition_filter = build_partition_predicate(
110
- _self._partition_details,
111
- _self.table.__table__.c,
112
- )
113
- if self.build_sample:
114
- return (
115
- _self._base_sample_query(
116
- kwargs.get("column"),
117
- (ModuloFn(RandomNumFn(), 100)).label(RANDOM_LABEL),
118
- )
119
- .filter(partition_filter)
120
- .cte(f"{_self.table.__tablename__}_rnd")
121
- )
122
- query_results = _self._build_query(*args, **kwargs).select_from(
123
- _self._sample if self.sampled else _self.table
124
- )
125
- return query_results.first() if self.first else query_results.all()
126
- return func(_self, *args, **kwargs)
127
-
128
- return handle_and_execute
@@ -18,14 +18,10 @@ and manage behavior such as timeouts.
18
18
  """
19
19
  from typing import Dict, Optional, Union
20
20
 
21
- from sqlalchemy import text
21
+ from sqlalchemy import Table, text
22
22
  from sqlalchemy.orm import DeclarativeMeta, Query, Session
23
23
  from sqlalchemy.orm.util import AliasedClass
24
24
 
25
- from metadata.profiler.processor.handle_partition import (
26
- build_partition_predicate,
27
- partition_filter_handler,
28
- )
29
25
  from metadata.utils.logger import query_runner_logger
30
26
  from metadata.utils.sqa_utils import get_query_filter_for_runner
31
27
 
@@ -47,25 +43,71 @@ class QueryRunner:
47
43
  def __init__(
48
44
  self,
49
45
  session: Session,
50
- table: DeclarativeMeta,
51
- sample: Union[DeclarativeMeta, AliasedClass],
46
+ dataset: Union[DeclarativeMeta, AliasedClass],
47
+ raw_dataset: Table,
52
48
  partition_details: Optional[Dict] = None,
53
49
  profile_sample_query: Optional[str] = None,
54
50
  ):
55
51
  self._session = session
56
- self.table = table
57
- self._sample = sample
58
- self._partition_details = partition_details
59
- self._profile_sample_query = profile_sample_query
52
+ self._dataset = dataset
53
+ self.partition_details = partition_details
54
+ self.profile_sample_query = profile_sample_query
55
+ self.raw_dataset = raw_dataset
56
+
57
+ @property
58
+ def table(self) -> Table:
59
+ """Backward compatibility table attribute access"""
60
+ return self.raw_dataset
61
+
62
+ @property
63
+ def _sample(self):
64
+ """Backward compatibility _sample attribute access"""
65
+ return self._dataset
66
+
67
+ @property
68
+ def dataset(self):
69
+ """Dataset attribute access"""
70
+ return self._dataset
71
+
72
+ @dataset.setter
73
+ def dataset(self, dataset):
74
+ self._dataset = dataset
75
+
76
+ @property
77
+ def table_name(self):
78
+ """Table name attribute access"""
79
+ return self.raw_dataset.__table__.name
80
+
81
+ @property
82
+ def schema_name(self):
83
+ """Table name attribute access"""
84
+ return self.raw_dataset.__table__.schema
85
+
86
+ @property
87
+ def session(self):
88
+ """Table name attribute access"""
89
+ return self._session
60
90
 
61
91
  def _build_query(self, *entities, **kwargs) -> Query:
92
+ """Build query object
93
+
94
+ Args:
95
+ *entities: entities to select
96
+ **kwargs: kwargs to pass to the query
97
+ """
62
98
  return self._session.query(*entities, **kwargs)
63
99
 
64
100
  def _select_from_sample(self, *entities, **kwargs):
65
- """Run select statement against sample data"""
101
+ """This method will use the sample data
102
+ and the partitioning logic if available otherwise it will use the raw table.
103
+
104
+ Args:
105
+ *entities: entities to select
106
+ **kwargs: kwargs to pass to the query
107
+ """
66
108
  filter_ = get_query_filter_for_runner(kwargs)
67
109
 
68
- query = self._build_query(*entities, **kwargs).select_from(self._sample)
110
+ query = self._build_query(*entities, **kwargs).select_from(self._dataset)
69
111
 
70
112
  if filter_ is not None:
71
113
  return query.filter(filter_)
@@ -73,11 +115,16 @@ class QueryRunner:
73
115
  return query
74
116
 
75
117
  def _select_from_user_query(self, *entities, **kwargs):
76
- """Run select statement against user defined query"""
118
+ """Use the user query to select data from the table
119
+
120
+ Args:
121
+ *entities: entities to select
122
+ **kwargs: kwargs to pass to the query
123
+ """
77
124
  filter_ = get_query_filter_for_runner(kwargs)
78
125
 
79
- user_query = self._session.query(self.table).from_statement(
80
- text(f"{self._profile_sample_query}")
126
+ user_query = self._session.query(self._dataset).from_statement(
127
+ text(f"{self.profile_sample_query}")
81
128
  )
82
129
 
83
130
  query = self._build_query(*entities, **kwargs).select_from(user_query)
@@ -87,12 +134,17 @@ class QueryRunner:
87
134
 
88
135
  return query
89
136
 
90
- @partition_filter_handler()
91
137
  def select_first_from_table(self, *entities, **kwargs):
92
- """Select first row from the table"""
138
+ """Select first row from the table. This method will use the raw table and
139
+ omit any sampling or partitioning logic.
140
+
141
+ Args:
142
+ *entities: entities to select
143
+ **kwargs: kwargs to pass to the query
144
+ """
93
145
  filter_ = get_query_filter_for_runner(kwargs)
94
146
 
95
- if self._profile_sample_query:
147
+ if self.profile_sample_query:
96
148
  return self._select_from_user_query(*entities, **kwargs).first()
97
149
  query = self._build_query(*entities, **kwargs).select_from(self.table)
98
150
 
@@ -101,12 +153,17 @@ class QueryRunner:
101
153
 
102
154
  return query.first()
103
155
 
104
- @partition_filter_handler(first=False)
105
156
  def select_all_from_table(self, *entities, **kwargs):
106
- """Select all rows from the table"""
157
+ """Select all rows from the table. This method will use the raw table and
158
+ omit any sampling or partitioning logic.
159
+
160
+ Args:
161
+ *entities: entities to select
162
+ **kwargs: kwargs to pass to the query
163
+ """
107
164
  filter_ = get_query_filter_for_runner(kwargs)
108
165
 
109
- if self._profile_sample_query:
166
+ if self.profile_sample_query:
110
167
  return self._select_from_user_query(*entities, **kwargs).all()
111
168
 
112
169
  query = self._build_query(*entities, **kwargs).select_from(self.table)
@@ -116,23 +173,33 @@ class QueryRunner:
116
173
 
117
174
  return query.all()
118
175
 
119
- @partition_filter_handler(sampled=True)
120
176
  def select_first_from_sample(self, *entities, **kwargs):
177
+ """Select first row from the sample data. This method will use the sample data
178
+ and the partitioning logic if available otherwise it will use the raw table.
179
+
180
+ Args:
181
+ *entities: entities to select
182
+ **kwargs: kwargs to pass to the query
183
+ """
121
184
  return self._select_from_sample(*entities, **kwargs).first()
122
185
 
123
- @partition_filter_handler(first=False, sampled=True)
124
186
  def select_all_from_sample(self, *entities, **kwargs):
187
+ """Select all rows from the sample data. This method will use the sample data
188
+ and the partitioning logic if available otherwise it will use the raw table.
189
+
190
+ Args:
191
+ *entities: entities to select
192
+ **kwargs: kwargs to pass to the query
193
+ """
125
194
  return self._select_from_sample(*entities, **kwargs).all()
126
195
 
127
196
  def yield_from_sample(self, *entities, **kwargs):
128
- query = self._select_from_sample(*entities, **kwargs)
129
- if self._partition_details:
130
- partition_filter = build_partition_predicate(
131
- self._partition_details,
132
- self.table.__table__.c,
133
- )
134
- query.filter(partition_filter)
197
+ """Yield rows from the sample data
135
198
 
199
+ Args:
200
+ *entities: entities to select
201
+ **kwargs: kwargs to pass to the query
202
+ """
136
203
  result = self._session.execute(self._select_from_sample(*entities, **kwargs))
137
204
  while True:
138
205
  rows = result.fetchmany(1000)
@@ -141,15 +208,29 @@ class QueryRunner:
141
208
  yield from rows
142
209
 
143
210
  def dispatch_query_select_first(self, *entities, **kwargs):
144
- """dispatch query to sample or all table"""
145
- if isinstance(self._sample, AliasedClass):
146
- return self.select_first_from_sample(*entities, **kwargs)
147
- return self.select_first_from_table(*entities, **kwargs)
211
+ """Dispatch query to sample or all table.
212
+ Note: Kept for backward compatibility
213
+
214
+ Args:
215
+ *entities: entities to select
216
+ **kwargs: kwargs to pass to the query
217
+ """
218
+ return self.select_first_from_sample(*entities, **kwargs)
148
219
 
149
220
  @staticmethod
150
221
  def select_first_from_query(query: Query):
222
+ """Given a query object, return the first row
223
+
224
+ Args:
225
+ query (Query): query object
226
+ """
151
227
  return query.first()
152
228
 
153
229
  @staticmethod
154
230
  def select_all_from_query(query: Query):
231
+ """Given a query object, return all the rows
232
+
233
+ Args:
234
+ query (Query): query object
235
+ """
155
236
  return query.all()
@@ -16,6 +16,7 @@ import traceback
16
16
  from datetime import datetime
17
17
  from functools import singledispatch
18
18
  from io import BytesIO
19
+ from typing import Optional
19
20
 
20
21
  from metadata.clients.aws_client import AWSClient
21
22
  from metadata.generated.schema.entity.data.table import Table, TableData
@@ -24,7 +25,6 @@ from metadata.generated.schema.entity.services.connections.connectionBasicType i
24
25
  )
25
26
  from metadata.generated.schema.security.credentials.awsCredentials import AWSCredentials
26
27
  from metadata.ingestion.models.custom_pydantic import ignore_type_decoder
27
- from metadata.profiler.interface.profiler_interface import ProfilerInterface
28
28
  from metadata.utils.helpers import clean_uri
29
29
  from metadata.utils.logger import profiler_logger
30
30
 
@@ -72,14 +72,17 @@ def _get_object_key(
72
72
  return file_name
73
73
 
74
74
 
75
- def upload_sample_data(data: TableData, profiler_interface: ProfilerInterface) -> None:
75
+ def upload_sample_data(
76
+ data: TableData,
77
+ entity: Table,
78
+ sample_storage_config: Optional[DataStorageConfig] = None,
79
+ ) -> None:
76
80
  """
77
81
  Upload Sample data to storage config
78
82
  """
79
83
  import pandas as pd # pylint: disable=import-outside-toplevel
80
84
 
81
85
  try:
82
- sample_storage_config: DataStorageConfig = profiler_interface.storage_config
83
86
  if not sample_storage_config:
84
87
  return
85
88
  # Ignore any decoding error for byte data
@@ -92,7 +95,7 @@ def upload_sample_data(data: TableData, profiler_interface: ProfilerInterface) -
92
95
  pq_buffer = BytesIO()
93
96
  df.to_parquet(pq_buffer)
94
97
  object_key = _get_object_key(
95
- table=profiler_interface.table_entity,
98
+ table=entity,
96
99
  prefix=sample_storage_config.prefix,
97
100
  overwrite_data=sample_storage_config.overwriteData,
98
101
  file_path_format=sample_storage_config.filePathPattern,
@@ -14,19 +14,14 @@ Base source for the profiler used to instantiate a profiler runner with
14
14
  its interface
15
15
  """
16
16
  from copy import deepcopy
17
- from typing import List, Optional, Tuple, Type, cast
18
-
19
- from sqlalchemy import MetaData
17
+ from typing import Optional, cast
20
18
 
21
19
  from metadata.generated.schema.configuration.profilerConfiguration import (
22
20
  ProfilerConfiguration,
23
21
  )
24
22
  from metadata.generated.schema.entity.data.database import Database
25
23
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
26
- from metadata.generated.schema.entity.data.table import ColumnProfilerConfig, Table
27
- from metadata.generated.schema.entity.services.connections.database.datalakeConnection import (
28
- DatalakeConnection,
29
- )
24
+ from metadata.generated.schema.entity.data.table import Table
30
25
  from metadata.generated.schema.entity.services.databaseService import (
31
26
  DatabaseConnection,
32
27
  DatabaseService,
@@ -45,11 +40,19 @@ from metadata.profiler.metrics.registry import Metrics
45
40
  from metadata.profiler.processor.core import Profiler
46
41
  from metadata.profiler.processor.default import DefaultProfiler, get_default_metrics
47
42
  from metadata.profiler.source.profiler_source_interface import ProfilerSourceInterface
48
- from metadata.utils.importer import import_from_module
43
+ from metadata.sampler.config import (
44
+ get_config_for_table,
45
+ get_exclude_columns,
46
+ get_include_columns,
47
+ )
48
+ from metadata.sampler.models import SampleConfig
49
+ from metadata.sampler.sampler_interface import SamplerInterface
49
50
  from metadata.utils.logger import profiler_logger
50
- from metadata.utils.service_spec.service_spec import BaseSpec
51
-
52
- NON_SQA_DATABASE_CONNECTIONS = (DatalakeConnection,)
51
+ from metadata.utils.profiler_utils import get_context_entities
52
+ from metadata.utils.service_spec.service_spec import (
53
+ import_profiler_class,
54
+ import_sampler_class,
55
+ )
53
56
 
54
57
  logger = profiler_logger()
55
58
 
@@ -62,21 +65,21 @@ class ProfilerSource(ProfilerSourceInterface):
62
65
  def __init__(
63
66
  self,
64
67
  config: OpenMetadataWorkflowConfig,
65
- database: DatabaseService,
68
+ database: Database,
66
69
  ometa_client: OpenMetadata,
67
70
  global_profiler_configuration: ProfilerConfiguration,
68
71
  ):
72
+ self.config = config
69
73
  self.service_conn_config = self._copy_service_config(config, database)
70
- self.source_config = DatabaseServiceProfilerPipeline.model_validate(
71
- config.source.sourceConfig.config
72
- )
73
74
  self.profiler_config = ProfilerProcessorConfig.model_validate(
74
75
  config.processor.model_dump().get("config")
75
76
  )
76
77
  self.ometa_client = ometa_client
77
- self.profiler_interface_type: str = config.source.type.lower()
78
- self.sqa_metadata = self._set_sqa_metadata()
78
+ self._interface_type: str = config.source.type.lower()
79
79
  self._interface = None
80
+ # We define this in create_profiler_interface to help us reuse
81
+ # this method for the sampler, which does not have a DatabaseServiceProfilerPipeline
82
+ self.source_config = None
80
83
  self.global_profiler_configuration = global_profiler_configuration
81
84
 
82
85
  @property
@@ -91,68 +94,8 @@ class ProfilerSource(ProfilerSourceInterface):
91
94
  """Set the interface"""
92
95
  self._interface = interface
93
96
 
94
- def _set_sqa_metadata(self):
95
- """Set sqlalchemy metadata"""
96
- if not isinstance(self.service_conn_config, NON_SQA_DATABASE_CONNECTIONS):
97
- return MetaData()
98
- return None
99
-
100
- @staticmethod
101
- def get_config_for_table(entity: Table, profiler_config) -> Optional[TableConfig]:
102
- """Get config for a specific entity
103
-
104
- Args:
105
- entity: table entity
106
- """
107
- for table_config in profiler_config.tableConfig or []:
108
- if table_config.fullyQualifiedName.root == entity.fullyQualifiedName.root:
109
- return table_config
110
-
111
- for schema_config in profiler_config.schemaConfig or []:
112
- if (
113
- schema_config.fullyQualifiedName.root
114
- == entity.databaseSchema.fullyQualifiedName
115
- ):
116
- return TableConfig.from_database_and_schema_config(
117
- schema_config, entity.fullyQualifiedName.root
118
- )
119
- for database_config in profiler_config.databaseConfig or []:
120
- if (
121
- database_config.fullyQualifiedName.root
122
- == entity.database.fullyQualifiedName
123
- ):
124
- return TableConfig.from_database_and_schema_config(
125
- database_config, entity.fullyQualifiedName.root
126
- )
127
-
128
- return None
129
-
130
- def _get_include_columns(
131
- self, entity, entity_config: Optional[TableConfig]
132
- ) -> Optional[List[ColumnProfilerConfig]]:
133
- """get included columns"""
134
- if entity_config and entity_config.columnConfig:
135
- return entity_config.columnConfig.includeColumns
136
-
137
- if entity.tableProfilerConfig:
138
- return entity.tableProfilerConfig.includeColumns
139
-
140
- return None
141
-
142
- def _get_exclude_columns(
143
- self, entity, entity_config: Optional[TableConfig]
144
- ) -> Optional[List[str]]:
145
- """get included columns"""
146
- if entity_config and entity_config.columnConfig:
147
- return entity_config.columnConfig.excludeColumns
148
-
149
- if entity.tableProfilerConfig:
150
- return entity.tableProfilerConfig.excludeColumns
151
-
152
- return None
153
-
154
97
  def _copy_service_config(
155
- self, config: OpenMetadataWorkflowConfig, database: DatabaseService
98
+ self, config: OpenMetadataWorkflowConfig, database: Database
156
99
  ) -> DatabaseConnection:
157
100
  """Make a copy of the service config and update the database name
158
101
 
@@ -189,75 +132,50 @@ class ProfilerSource(ProfilerSourceInterface):
189
132
  db_service: Optional[DatabaseService],
190
133
  ) -> ProfilerInterface:
191
134
  """Create sqlalchemy profiler interface"""
192
- profiler_class = self.import_profiler_class(
193
- ServiceType.Database, source_type=self.profiler_interface_type
135
+ self.source_config = DatabaseServiceProfilerPipeline.model_validate(
136
+ self.config.source.sourceConfig.config
137
+ )
138
+ profiler_class = import_profiler_class(
139
+ ServiceType.Database, source_type=self._interface_type
140
+ )
141
+ sampler_class = import_sampler_class(
142
+ ServiceType.Database, source_type=self._interface_type
194
143
  )
144
+ # This is shared between the sampler and profiler interfaces
145
+ sampler_interface: SamplerInterface = sampler_class.create(
146
+ service_connection_config=self.service_conn_config,
147
+ ometa_client=self.ometa_client,
148
+ entity=entity,
149
+ schema_entity=schema_entity,
150
+ database_entity=database_entity,
151
+ table_config=config,
152
+ default_sample_config=SampleConfig(
153
+ profile_sample=self.source_config.profileSample,
154
+ profile_sample_type=self.source_config.profileSampleType,
155
+ sampling_method_type=self.source_config.samplingMethodType,
156
+ ),
157
+ )
158
+
195
159
  profiler_interface: ProfilerInterface = profiler_class.create(
196
- entity,
197
- schema_entity,
198
- database_entity,
199
- db_service,
200
- config,
201
- profiler_config,
202
- self.source_config,
203
- self.service_conn_config,
204
- self.ometa_client,
205
- sqa_metadata=self.sqa_metadata,
160
+ entity=entity,
161
+ source_config=self.source_config,
162
+ service_connection_config=self.service_conn_config,
163
+ sampler=sampler_interface,
164
+ ometa_client=self.ometa_client,
206
165
  ) # type: ignore
207
166
 
208
167
  self.interface = profiler_interface
209
168
  return self.interface
210
169
 
211
- def import_profiler_class(
212
- self, service_type: ServiceType, source_type: str
213
- ) -> Type[ProfilerInterface]:
214
- class_path = BaseSpec.get_for_source(service_type, source_type).profiler_class
215
- return cast(Type[ProfilerInterface], import_from_module(class_path))
216
-
217
- def _get_context_entities(
218
- self, entity: Table
219
- ) -> Tuple[DatabaseSchema, Database, DatabaseService]:
220
- schema_entity = None
221
- database_entity = None
222
- db_service = None
223
-
224
- if entity.databaseSchema:
225
- schema_entity_list = self.ometa_client.es_search_from_fqn(
226
- entity_type=DatabaseSchema,
227
- fqn_search_string=entity.databaseSchema.fullyQualifiedName,
228
- fields="databaseSchemaProfilerConfig",
229
- )
230
- if schema_entity_list:
231
- schema_entity = schema_entity_list[0]
232
-
233
- if entity.database:
234
- database_entity_list = self.ometa_client.es_search_from_fqn(
235
- entity_type=Database,
236
- fqn_search_string=entity.database.fullyQualifiedName,
237
- fields="databaseProfilerConfig",
238
- )
239
- if database_entity_list:
240
- database_entity = database_entity_list[0]
241
-
242
- if entity.service:
243
- db_service_list = self.ometa_client.es_search_from_fqn(
244
- entity_type=DatabaseService,
245
- fqn_search_string=entity.service.fullyQualifiedName,
246
- )
247
- if db_service_list:
248
- db_service = db_service_list[0]
249
-
250
- return schema_entity, database_entity, db_service
251
-
252
170
  def get_profiler_runner(
253
171
  self, entity: Table, profiler_config: ProfilerProcessorConfig
254
172
  ) -> Profiler:
255
173
  """
256
174
  Returns the runner for the profiler
257
175
  """
258
- table_config = self.get_config_for_table(entity, profiler_config)
259
- schema_entity, database_entity, db_service = self._get_context_entities(
260
- entity=entity
176
+ table_config = get_config_for_table(entity, profiler_config)
177
+ schema_entity, database_entity, db_service = get_context_entities(
178
+ entity=entity, metadata=self.ometa_client
261
179
  )
262
180
  profiler_interface = self.create_profiler_interface(
263
181
  entity,
@@ -271,8 +189,8 @@ class ProfilerSource(ProfilerSourceInterface):
271
189
  if not profiler_config.profiler:
272
190
  return DefaultProfiler(
273
191
  profiler_interface=profiler_interface,
274
- include_columns=self._get_include_columns(entity, table_config),
275
- exclude_columns=self._get_exclude_columns(entity, table_config),
192
+ include_columns=get_include_columns(entity, table_config),
193
+ exclude_columns=get_exclude_columns(entity, table_config),
276
194
  global_profiler_configuration=self.global_profiler_configuration,
277
195
  db_service=db_service,
278
196
  )
@@ -290,7 +208,7 @@ class ProfilerSource(ProfilerSourceInterface):
290
208
  return Profiler(
291
209
  *metrics, # type: ignore
292
210
  profiler_interface=profiler_interface,
293
- include_columns=self._get_include_columns(entity, table_config),
294
- exclude_columns=self._get_exclude_columns(entity, table_config),
211
+ include_columns=get_include_columns(entity, table_config),
212
+ exclude_columns=get_exclude_columns(entity, table_config),
295
213
  global_profiler_configuration=self.global_profiler_configuration,
296
214
  )
@@ -15,10 +15,10 @@ Bigquery Profiler source
15
15
 
16
16
  from copy import deepcopy
17
17
 
18
+ from metadata.generated.schema.entity.data.database import Database
18
19
  from metadata.generated.schema.entity.services.connections.database.bigQueryConnection import (
19
20
  BigQueryConnection,
20
21
  )
21
- from metadata.generated.schema.entity.services.databaseService import DatabaseService
22
22
  from metadata.generated.schema.metadataIngestion.workflow import (
23
23
  OpenMetadataWorkflowConfig,
24
24
  )
@@ -34,14 +34,14 @@ class BigQueryProfilerSource(ProfilerSource):
34
34
  """override the base profiler source to handle BigQuery specific connection configs"""
35
35
 
36
36
  def _copy_service_config(
37
- self, config: OpenMetadataWorkflowConfig, database: DatabaseService
37
+ self, config: OpenMetadataWorkflowConfig, database: Database
38
38
  ) -> BigQueryConnection:
39
39
  """Make a copy of the database connection config. If MultiProjectId is used, replace it
40
40
  with SingleProjectId with the database name being profiled. We iterate over all non filtered
41
41
  database in workflow.py `def execute`.
42
42
 
43
43
  Args:
44
- database (DatabaseService): a database entity
44
+ database (Database): a database entity
45
45
 
46
46
  Returns:
47
47
  DatabaseConnection
@@ -1,9 +1,8 @@
1
1
  """Extend the ProfilerSource class to add support for Databricks is_disconnect SQA method"""
2
-
3
2
  from metadata.generated.schema.configuration.profilerConfiguration import (
4
3
  ProfilerConfiguration,
5
4
  )
6
- from metadata.generated.schema.entity.services.databaseService import DatabaseService
5
+ from metadata.generated.schema.entity.data.database import Database
7
6
  from metadata.generated.schema.metadataIngestion.workflow import (
8
7
  OpenMetadataWorkflowConfig,
9
8
  )
@@ -25,7 +24,7 @@ class DataBricksProfilerSource(ProfilerSource):
25
24
  def __init__(
26
25
  self,
27
26
  config: OpenMetadataWorkflowConfig,
28
- database: DatabaseService,
27
+ database: Database,
29
28
  ometa_client: OpenMetadata,
30
29
  global_profiler_config: ProfilerConfiguration,
31
30
  ):