openmetadata-ingestion 1.5.13.0__py3-none-any.whl → 1.6.0.0rc2__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 (1009) hide show
  1. _openmetadata_testutils/dict.py +23 -0
  2. _openmetadata_testutils/pydantic/test_utils.py +22 -2
  3. _openmetadata_testutils/pytest_openmetadata/plugin.py +86 -0
  4. _openmetadata_testutils/pytest_openmetadata/test_utils.py +99 -0
  5. metadata/cli/app.py +1 -0
  6. metadata/cli/classify.py +52 -0
  7. metadata/cli/dataquality.py +4 -1
  8. metadata/cli/ingest.py +2 -1
  9. metadata/cli/lineage.py +2 -1
  10. metadata/cli/profile.py +4 -1
  11. metadata/cli/usage.py +2 -1
  12. metadata/cmd.py +9 -0
  13. metadata/config/common.py +3 -1
  14. metadata/data_quality/api/models.py +2 -1
  15. metadata/data_quality/builders/{i_validator_builder.py → validator_builder.py} +45 -31
  16. metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +25 -24
  17. metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +23 -49
  18. metadata/data_quality/interface/test_suite_interface.py +36 -52
  19. metadata/data_quality/processor/test_case_runner.py +9 -9
  20. metadata/data_quality/runner/base_test_suite_source.py +52 -26
  21. metadata/data_quality/source/test_suite.py +1 -1
  22. metadata/data_quality/validations/base_test_handler.py +13 -8
  23. metadata/data_quality/validations/column/base/columnValuesToBeInSet.py +4 -2
  24. metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +1 -1
  25. metadata/data_quality/validations/column/sqlalchemy/columnValueMaxToBeBetween.py +1 -1
  26. metadata/data_quality/validations/column/sqlalchemy/columnValueMeanToBeBetween.py +1 -1
  27. metadata/data_quality/validations/column/sqlalchemy/columnValueMedianToBeBetween.py +1 -1
  28. metadata/data_quality/validations/column/sqlalchemy/columnValueMinToBeBetween.py +1 -1
  29. metadata/data_quality/validations/column/sqlalchemy/columnValueStdDevToBeBetween.py +1 -1
  30. metadata/data_quality/validations/column/sqlalchemy/columnValuesMissingCount.py +1 -1
  31. metadata/data_quality/validations/column/sqlalchemy/columnValuesSumToBeBetween.py +1 -1
  32. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeAtExpectedLocation.py +1 -1
  33. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +1 -1
  34. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +1 -1
  35. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +1 -1
  36. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +1 -1
  37. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +2 -8
  38. metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
  39. metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +1 -1
  40. metadata/data_quality/validations/models.py +6 -1
  41. metadata/data_quality/validations/runtime_param_setter/param_setter.py +2 -3
  42. metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +45 -17
  43. metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +26 -16
  44. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +192 -17
  45. metadata/data_quality/validations/table/sqlalchemy/tableRowInsertedCountToBeBetween.py +2 -2
  46. metadata/examples/workflows/bigquery_classifier.yaml +56 -0
  47. metadata/examples/workflows/bigquery_profiler.yaml +1 -2
  48. metadata/examples/workflows/datafactory.yaml +29 -0
  49. metadata/examples/workflows/db2_profiler.yaml +1 -2
  50. metadata/examples/workflows/dbtcloud.yaml +2 -1
  51. metadata/examples/workflows/matillion.yaml +31 -0
  52. metadata/examples/workflows/{mstr.yaml → microstrategy.yaml} +3 -2
  53. metadata/examples/workflows/mysql_profiler.yaml +0 -1
  54. metadata/examples/workflows/redshift_classifier.yaml +38 -0
  55. metadata/examples/workflows/redshift_profiler.yaml +2 -3
  56. metadata/examples/workflows/rest.yaml +20 -0
  57. metadata/examples/workflows/sigma.yaml +25 -0
  58. metadata/examples/workflows/trino_profiler.yaml +20 -0
  59. metadata/generated/antlr/EntityLinkLexer.py +70 -99
  60. metadata/generated/schema/analytics/__init__.py +1 -1
  61. metadata/generated/schema/analytics/basic.py +1 -1
  62. metadata/generated/schema/analytics/reportData.py +1 -1
  63. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  64. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  65. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  66. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  67. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  68. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  69. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  70. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  71. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  72. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  73. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  74. metadata/generated/schema/api/__init__.py +1 -1
  75. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  76. metadata/generated/schema/api/addTagToAssetsRequest.py +43 -0
  77. metadata/generated/schema/api/analytics/__init__.py +1 -1
  78. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  79. metadata/generated/schema/api/automations/__init__.py +1 -1
  80. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  81. metadata/generated/schema/api/bulkAssets.py +1 -1
  82. metadata/generated/schema/api/classification/__init__.py +1 -1
  83. metadata/generated/schema/api/classification/createClassification.py +1 -1
  84. metadata/generated/schema/api/classification/createTag.py +1 -1
  85. metadata/generated/schema/api/classification/loadTags.py +1 -1
  86. metadata/generated/schema/api/createBot.py +1 -1
  87. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  88. metadata/generated/schema/api/createType.py +1 -1
  89. metadata/generated/schema/api/data/__init__.py +1 -1
  90. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  91. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  92. metadata/generated/schema/api/data/createChart.py +1 -1
  93. metadata/generated/schema/api/data/createContainer.py +1 -1
  94. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  95. metadata/generated/schema/api/data/createDashboard.py +1 -1
  96. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  97. metadata/generated/schema/api/data/createDatabase.py +1 -1
  98. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  99. metadata/generated/schema/api/data/createGlossary.py +1 -1
  100. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  101. metadata/generated/schema/api/data/createMetric.py +83 -0
  102. metadata/generated/schema/api/data/createMlModel.py +1 -1
  103. metadata/generated/schema/api/data/createPipeline.py +1 -1
  104. metadata/generated/schema/api/data/createQuery.py +1 -1
  105. metadata/generated/schema/api/data/createSearchIndex.py +8 -1
  106. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  107. metadata/generated/schema/api/data/createTable.py +1 -1
  108. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  109. metadata/generated/schema/api/data/createTopic.py +1 -1
  110. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  111. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  112. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  113. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  114. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  115. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  116. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  117. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  118. metadata/generated/schema/api/docStore/__init__.py +1 -1
  119. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  120. metadata/generated/schema/api/domains/__init__.py +1 -1
  121. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  122. metadata/generated/schema/api/domains/createDomain.py +1 -1
  123. metadata/generated/schema/api/feed/__init__.py +1 -1
  124. metadata/generated/schema/api/feed/closeTask.py +1 -1
  125. metadata/generated/schema/api/feed/createPost.py +1 -1
  126. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  127. metadata/generated/schema/api/feed/createThread.py +1 -1
  128. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  129. metadata/generated/schema/api/feed/threadCount.py +1 -1
  130. metadata/generated/schema/api/governance/__init__.py +3 -0
  131. metadata/generated/schema/api/governance/createWorkflowDefinition.py +83 -0
  132. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +22 -0
  133. metadata/generated/schema/api/lineage/__init__.py +1 -1
  134. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  135. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  136. metadata/generated/schema/api/policies/__init__.py +1 -1
  137. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  138. metadata/generated/schema/api/services/__init__.py +1 -1
  139. metadata/generated/schema/api/services/createApiService.py +2 -2
  140. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  141. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  142. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  143. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  144. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  145. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  146. metadata/generated/schema/api/services/createSearchService.py +1 -1
  147. metadata/generated/schema/api/services/createStorageService.py +1 -1
  148. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  149. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  150. metadata/generated/schema/api/setOwner.py +1 -1
  151. metadata/generated/schema/api/teams/__init__.py +1 -1
  152. metadata/generated/schema/api/teams/createPersona.py +1 -1
  153. metadata/generated/schema/api/teams/createRole.py +1 -1
  154. metadata/generated/schema/api/teams/createTeam.py +1 -1
  155. metadata/generated/schema/api/teams/createUser.py +1 -1
  156. metadata/generated/schema/api/tests/__init__.py +1 -1
  157. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  158. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  159. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  160. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  161. metadata/generated/schema/api/tests/createTestCaseResult.py +71 -0
  162. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  163. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  164. metadata/generated/schema/api/voteRequest.py +1 -1
  165. metadata/generated/schema/auth/__init__.py +1 -1
  166. metadata/generated/schema/auth/basicAuth.py +1 -1
  167. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  168. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  169. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  170. metadata/generated/schema/auth/emailRequest.py +1 -1
  171. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  172. metadata/generated/schema/auth/generateToken.py +1 -1
  173. metadata/generated/schema/auth/jwtAuth.py +1 -1
  174. metadata/generated/schema/auth/loginRequest.py +1 -1
  175. metadata/generated/schema/auth/logoutRequest.py +1 -1
  176. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  177. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  178. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  179. metadata/generated/schema/auth/refreshToken.py +1 -1
  180. metadata/generated/schema/auth/registrationRequest.py +1 -1
  181. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  182. metadata/generated/schema/auth/revokeToken.py +1 -1
  183. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  184. metadata/generated/schema/auth/ssoAuth.py +1 -1
  185. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  186. metadata/generated/schema/configuration/__init__.py +1 -1
  187. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  188. metadata/generated/schema/configuration/assetCertificationSettings.py +22 -0
  189. metadata/generated/schema/configuration/authConfig.py +1 -1
  190. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  192. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  200. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  201. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  202. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  203. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  204. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  205. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  206. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  207. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  208. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  209. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  210. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  211. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  212. metadata/generated/schema/configuration/searchSettings.py +1 -1
  213. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -14
  214. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  215. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  216. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  217. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  218. metadata/generated/schema/dataInsight/__init__.py +1 -1
  219. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  220. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  221. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +9 -1
  222. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  223. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  224. metadata/generated/schema/dataInsight/custom/lineChart.py +23 -8
  225. metadata/generated/schema/dataInsight/custom/summaryCard.py +20 -9
  226. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  227. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  228. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  229. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  230. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  231. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  232. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  233. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  234. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  235. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  236. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  237. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  238. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  239. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  240. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  241. metadata/generated/schema/email/__init__.py +1 -1
  242. metadata/generated/schema/email/emailRequest.py +1 -1
  243. metadata/generated/schema/email/emailTemplate.py +1 -1
  244. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  245. metadata/generated/schema/email/smtpSettings.py +1 -1
  246. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  247. metadata/generated/schema/entity/__init__.py +1 -1
  248. metadata/generated/schema/entity/applications/__init__.py +1 -1
  249. metadata/generated/schema/entity/applications/app.py +9 -1
  250. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  251. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +4 -2
  254. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +54 -2
  262. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +22 -0
  271. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  277. metadata/generated/schema/entity/applications/createAppRequest.py +8 -1
  278. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  279. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  280. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  281. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +8 -1
  282. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +8 -1
  283. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  284. metadata/generated/schema/entity/automations/__init__.py +1 -1
  285. metadata/generated/schema/entity/automations/testServiceConnection.py +3 -1
  286. metadata/generated/schema/entity/automations/workflow.py +1 -1
  287. metadata/generated/schema/entity/bot.py +1 -1
  288. metadata/generated/schema/entity/classification/__init__.py +1 -1
  289. metadata/generated/schema/entity/classification/classification.py +2 -2
  290. metadata/generated/schema/entity/classification/tag.py +2 -2
  291. metadata/generated/schema/entity/data/__init__.py +1 -1
  292. metadata/generated/schema/entity/data/apiCollection.py +4 -2
  293. metadata/generated/schema/entity/data/apiEndpoint.py +4 -2
  294. metadata/generated/schema/entity/data/chart.py +4 -3
  295. metadata/generated/schema/entity/data/container.py +4 -2
  296. metadata/generated/schema/entity/data/dashboard.py +4 -2
  297. metadata/generated/schema/entity/data/dashboardDataModel.py +5 -2
  298. metadata/generated/schema/entity/data/database.py +7 -7
  299. metadata/generated/schema/entity/data/databaseSchema.py +5 -2
  300. metadata/generated/schema/entity/data/glossary.py +2 -2
  301. metadata/generated/schema/entity/data/glossaryTerm.py +3 -2
  302. metadata/generated/schema/entity/data/metric.py +196 -0
  303. metadata/generated/schema/entity/data/mlmodel.py +4 -2
  304. metadata/generated/schema/entity/data/pipeline.py +4 -3
  305. metadata/generated/schema/entity/data/query.py +3 -5
  306. metadata/generated/schema/entity/data/report.py +1 -1
  307. metadata/generated/schema/entity/data/searchIndex.py +16 -2
  308. metadata/generated/schema/entity/data/storedProcedure.py +4 -2
  309. metadata/generated/schema/entity/data/table.py +36 -3
  310. metadata/generated/schema/entity/data/topic.py +4 -3
  311. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  312. metadata/generated/schema/entity/docStore/document.py +1 -1
  313. metadata/generated/schema/entity/domains/__init__.py +1 -1
  314. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  315. metadata/generated/schema/entity/domains/domain.py +1 -1
  316. metadata/generated/schema/entity/events/__init__.py +1 -1
  317. metadata/generated/schema/entity/events/webhook.py +19 -2
  318. metadata/generated/schema/entity/feed/__init__.py +1 -1
  319. metadata/generated/schema/entity/feed/assets.py +1 -1
  320. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  321. metadata/generated/schema/entity/feed/description.py +1 -1
  322. metadata/generated/schema/entity/feed/domain.py +1 -1
  323. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  324. metadata/generated/schema/entity/feed/owner.py +1 -1
  325. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  326. metadata/generated/schema/entity/feed/tag.py +1 -1
  327. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  328. metadata/generated/schema/entity/feed/thread.py +1 -1
  329. metadata/generated/schema/entity/policies/__init__.py +1 -1
  330. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  331. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +4 -1
  332. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  333. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  334. metadata/generated/schema/entity/policies/filters.py +1 -1
  335. metadata/generated/schema/entity/policies/policy.py +1 -1
  336. metadata/generated/schema/entity/services/__init__.py +1 -1
  337. metadata/generated/schema/entity/services/apiService.py +7 -7
  338. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  339. metadata/generated/schema/entity/services/connections/{apiService → api}/__init__.py +1 -1
  340. metadata/generated/schema/entity/services/connections/{apiService → api}/restConnection.py +15 -7
  341. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  342. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  343. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  344. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  345. metadata/generated/schema/entity/services/connections/connectionBasicType.py +29 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +67 -0
  353. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  358. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  359. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  360. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  361. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +41 -0
  366. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +5 -1
  370. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +9 -1
  372. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +11 -0
  380. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/db2Connection.py +4 -1
  389. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/druidConnection.py +4 -1
  396. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +84 -0
  398. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +4 -1
  400. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +4 -1
  401. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +4 -1
  410. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +4 -1
  411. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +3 -2
  412. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +5 -1
  413. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +11 -7
  414. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +5 -1
  415. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +4 -1
  416. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +5 -1
  417. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +9 -1
  419. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +5 -1
  425. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +4 -1
  427. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +9 -1
  428. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +4 -1
  429. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +4 -1
  431. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +7 -2
  432. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  435. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  441. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  442. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  449. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +69 -0
  462. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +17 -5
  463. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +65 -0
  469. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +43 -0
  474. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  479. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/serviceConnection.py +3 -3
  482. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  483. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  488. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  489. metadata/generated/schema/entity/services/dashboardService.py +8 -5
  490. metadata/generated/schema/entity/services/databaseService.py +5 -2
  491. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  492. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +2 -1
  493. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  494. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  495. metadata/generated/schema/entity/services/messagingService.py +2 -2
  496. metadata/generated/schema/entity/services/metadataService.py +2 -2
  497. metadata/generated/schema/entity/services/mlmodelService.py +2 -2
  498. metadata/generated/schema/entity/services/pipelineService.py +11 -2
  499. metadata/generated/schema/entity/services/searchService.py +2 -2
  500. metadata/generated/schema/entity/services/serviceType.py +2 -2
  501. metadata/generated/schema/entity/services/storageService.py +2 -2
  502. metadata/generated/schema/entity/teams/__init__.py +1 -1
  503. metadata/generated/schema/entity/teams/persona.py +1 -1
  504. metadata/generated/schema/entity/teams/role.py +1 -1
  505. metadata/generated/schema/entity/teams/team.py +1 -1
  506. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  507. metadata/generated/schema/entity/teams/user.py +1 -1
  508. metadata/generated/schema/entity/type.py +1 -1
  509. metadata/generated/schema/entity/utils/__init__.py +1 -1
  510. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  511. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  512. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  513. metadata/generated/schema/events/__init__.py +1 -1
  514. metadata/generated/schema/events/alertMetrics.py +1 -1
  515. metadata/generated/schema/events/api/__init__.py +1 -1
  516. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  517. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +69 -0
  518. metadata/generated/schema/events/api/eventsRecord.py +37 -0
  519. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -4
  520. metadata/generated/schema/events/api/typedEvent.py +46 -0
  521. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  522. metadata/generated/schema/events/eventFilterRule.py +1 -1
  523. metadata/generated/schema/events/eventSubscription.py +15 -46
  524. metadata/generated/schema/events/eventSubscriptionOffset.py +7 -2
  525. metadata/generated/schema/events/failedEvent.py +1 -1
  526. metadata/generated/schema/events/failedEventResponse.py +38 -0
  527. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  528. metadata/generated/schema/events/statusContext.py +43 -0
  529. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  530. metadata/generated/schema/events/subscriptionStatus.py +78 -0
  531. metadata/generated/schema/events/testDestinationStatus.py +88 -0
  532. metadata/generated/schema/governance/workflows/__init__.py +3 -0
  533. metadata/generated/schema/governance/workflows/elements/__init__.py +5 -0
  534. metadata/generated/schema/governance/workflows/elements/edge.py +29 -0
  535. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +16 -0
  536. metadata/generated/schema/governance/workflows/elements/nodeType.py +14 -0
  537. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +3 -0
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +5 -0
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +44 -0
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +49 -0
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +42 -0
  542. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +3 -0
  543. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +30 -0
  544. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +3 -0
  545. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +30 -0
  546. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +3 -0
  547. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +57 -0
  548. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +3 -0
  549. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +43 -0
  550. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +44 -0
  551. metadata/generated/schema/{entity/data/metrics.py → governance/workflows/workflowDefinition.py} +36 -49
  552. metadata/generated/schema/governance/workflows/workflowInstance.py +50 -0
  553. metadata/generated/schema/governance/workflows/workflowInstanceState.py +73 -0
  554. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  555. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +53 -0
  556. metadata/generated/schema/metadataIngestion/application.py +1 -1
  557. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  558. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  559. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +127 -0
  561. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -9
  562. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +28 -17
  563. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +42 -1
  564. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  565. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  567. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  568. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  569. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  570. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  571. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +9 -1
  572. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +9 -1
  573. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  574. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  575. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  576. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  577. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  578. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +9 -1
  579. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  580. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  581. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  582. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  583. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  584. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  585. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  586. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  587. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  588. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  589. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +4 -1
  590. metadata/generated/schema/metadataIngestion/workflow.py +15 -1
  591. metadata/generated/schema/monitoring/__init__.py +1 -1
  592. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  593. metadata/generated/schema/security/__init__.py +1 -1
  594. metadata/generated/schema/security/client/__init__.py +1 -1
  595. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  596. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  597. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  598. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  599. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  600. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  601. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  602. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  603. metadata/generated/schema/security/credentials/__init__.py +1 -1
  604. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  605. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  606. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  607. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  608. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  609. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  610. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  611. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  612. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  613. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  614. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  615. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  616. metadata/generated/schema/security/sasl/__init__.py +1 -1
  617. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  618. metadata/generated/schema/security/secrets/__init__.py +1 -1
  619. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  620. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  621. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  622. metadata/generated/schema/security/securityConfiguration.py +1 -1
  623. metadata/generated/schema/security/ssl/__init__.py +1 -1
  624. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  625. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  626. metadata/generated/schema/settings/__init__.py +1 -1
  627. metadata/generated/schema/settings/settings.py +7 -1
  628. metadata/generated/schema/system/__init__.py +1 -1
  629. metadata/generated/schema/system/entityError.py +1 -1
  630. metadata/generated/schema/system/eventPublisherJob.py +2 -1
  631. metadata/generated/schema/system/indexingError.py +1 -1
  632. metadata/generated/schema/system/limitsResponse.py +1 -1
  633. metadata/generated/schema/system/ui/__init__.py +1 -1
  634. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  635. metadata/generated/schema/system/ui/page.py +1 -1
  636. metadata/generated/schema/system/validationResponse.py +1 -1
  637. metadata/generated/schema/tests/__init__.py +1 -1
  638. metadata/generated/schema/tests/assigned.py +1 -1
  639. metadata/generated/schema/tests/basic.py +19 -4
  640. metadata/generated/schema/tests/customMetric.py +1 -1
  641. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  642. metadata/generated/schema/tests/resolved.py +1 -1
  643. metadata/generated/schema/tests/testCase.py +6 -2
  644. metadata/generated/schema/tests/testCaseResolutionStatus.py +17 -2
  645. metadata/generated/schema/tests/testDefinition.py +1 -1
  646. metadata/generated/schema/tests/testSuite.py +9 -2
  647. metadata/generated/schema/type/__init__.py +1 -1
  648. metadata/generated/schema/type/apiSchema.py +1 -1
  649. metadata/generated/schema/type/assetCertification.py +26 -0
  650. metadata/generated/schema/type/auditLog.py +1 -1
  651. metadata/generated/schema/type/basic.py +1 -1
  652. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  653. metadata/generated/schema/type/changeEvent.py +1 -1
  654. metadata/generated/schema/type/changeEventType.py +1 -1
  655. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  656. metadata/generated/schema/type/csvDocumentation.py +1 -1
  657. metadata/generated/schema/type/csvErrorType.py +1 -1
  658. metadata/generated/schema/type/csvFile.py +1 -1
  659. metadata/generated/schema/type/csvImportResult.py +1 -1
  660. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  661. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  662. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  663. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  664. metadata/generated/schema/type/customProperty.py +8 -1
  665. metadata/generated/schema/type/dailyCount.py +1 -1
  666. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  667. metadata/generated/schema/type/entityHierarchy.py +1 -1
  668. metadata/generated/schema/type/entityHistory.py +1 -1
  669. metadata/generated/schema/type/entityLineage.py +1 -1
  670. metadata/generated/schema/type/entityReference.py +1 -1
  671. metadata/generated/schema/type/entityReferenceList.py +1 -1
  672. metadata/generated/schema/type/entityRelationship.py +1 -1
  673. metadata/generated/schema/type/entityUsage.py +1 -1
  674. metadata/generated/schema/type/filterPattern.py +1 -1
  675. metadata/generated/schema/type/function.py +1 -1
  676. metadata/generated/schema/type/include.py +1 -1
  677. metadata/generated/schema/type/jdbcConnection.py +1 -1
  678. metadata/generated/schema/type/lifeCycle.py +1 -1
  679. metadata/generated/schema/type/paging.py +1 -1
  680. metadata/generated/schema/type/profile.py +1 -1
  681. metadata/generated/schema/type/queryParserData.py +1 -1
  682. metadata/generated/schema/type/reaction.py +1 -1
  683. metadata/generated/schema/type/schedule.py +1 -1
  684. metadata/generated/schema/type/schema.py +1 -1
  685. metadata/generated/schema/type/tableQuery.py +1 -1
  686. metadata/generated/schema/type/tableUsageCount.py +1 -1
  687. metadata/generated/schema/type/tagLabel.py +1 -1
  688. metadata/generated/schema/type/usageDetails.py +1 -1
  689. metadata/generated/schema/type/usageRequest.py +1 -1
  690. metadata/generated/schema/type/votes.py +1 -1
  691. metadata/ingestion/api/models.py +9 -5
  692. metadata/ingestion/api/parser.py +14 -0
  693. metadata/ingestion/lineage/parser.py +4 -6
  694. metadata/ingestion/lineage/sql_lineage.py +29 -185
  695. metadata/ingestion/models/custom_basemodel_validation.py +80 -0
  696. metadata/ingestion/models/custom_pydantic.py +33 -1
  697. metadata/ingestion/models/custom_types.py +2 -0
  698. metadata/ingestion/models/entity_interface.py +71 -0
  699. metadata/ingestion/models/patch_request.py +0 -1
  700. metadata/ingestion/ometa/mixins/es_mixin.py +66 -8
  701. metadata/ingestion/ometa/models.py +1 -0
  702. metadata/ingestion/ometa/ometa_api.py +6 -3
  703. metadata/ingestion/ometa/routes.py +4 -2
  704. metadata/ingestion/processor/query_parser.py +2 -2
  705. metadata/ingestion/sink/metadata_rest.py +23 -18
  706. metadata/ingestion/source/api/api_service.py +212 -0
  707. metadata/ingestion/source/api/rest/connection.py +93 -0
  708. metadata/ingestion/source/api/rest/metadata.py +278 -0
  709. metadata/ingestion/source/api/rest/models.py +41 -0
  710. metadata/ingestion/source/api/rest/service_spec.py +4 -0
  711. metadata/ingestion/source/dashboard/domodashboard/service_spec.py +6 -0
  712. metadata/ingestion/source/dashboard/lightdash/service_spec.py +4 -0
  713. metadata/ingestion/source/dashboard/looker/metadata.py +33 -4
  714. metadata/ingestion/source/dashboard/looker/service_spec.py +4 -0
  715. metadata/ingestion/source/dashboard/metabase/service_spec.py +4 -0
  716. metadata/ingestion/source/dashboard/microstrategy/__init__.py +0 -0
  717. metadata/ingestion/source/dashboard/{mstr → microstrategy}/client.py +27 -32
  718. metadata/ingestion/source/dashboard/{mstr → microstrategy}/connection.py +7 -10
  719. metadata/ingestion/source/dashboard/{mstr → microstrategy}/metadata.py +18 -14
  720. metadata/ingestion/source/dashboard/{mstr → microstrategy}/models.py +1 -1
  721. metadata/ingestion/source/dashboard/microstrategy/service_spec.py +6 -0
  722. metadata/ingestion/source/dashboard/mode/service_spec.py +4 -0
  723. metadata/ingestion/source/dashboard/powerbi/client.py +1 -2
  724. metadata/ingestion/source/dashboard/powerbi/service_spec.py +4 -0
  725. metadata/ingestion/source/dashboard/qlikcloud/service_spec.py +4 -0
  726. metadata/ingestion/source/dashboard/qliksense/service_spec.py +4 -0
  727. metadata/ingestion/source/dashboard/quicksight/service_spec.py +4 -0
  728. metadata/ingestion/source/dashboard/redash/service_spec.py +4 -0
  729. metadata/ingestion/source/dashboard/sigma/__init__.py +0 -0
  730. metadata/ingestion/source/dashboard/sigma/client.py +186 -0
  731. metadata/ingestion/source/dashboard/sigma/connection.py +67 -0
  732. metadata/ingestion/source/dashboard/sigma/metadata.py +331 -0
  733. metadata/ingestion/source/dashboard/sigma/models.py +97 -0
  734. metadata/ingestion/source/dashboard/sigma/service_spec.py +4 -0
  735. metadata/ingestion/source/dashboard/superset/service_spec.py +4 -0
  736. metadata/ingestion/source/dashboard/tableau/service_spec.py +4 -0
  737. metadata/ingestion/source/database/athena/service_spec.py +10 -0
  738. metadata/ingestion/source/database/azuresql/service_spec.py +12 -0
  739. metadata/ingestion/source/database/bigquery/connection.py +28 -2
  740. metadata/ingestion/source/database/bigquery/lineage.py +29 -2
  741. metadata/ingestion/source/database/bigquery/metadata.py +1 -25
  742. metadata/ingestion/source/database/bigquery/profiler/__init__.py +0 -0
  743. metadata/ingestion/source/database/bigquery/profiler/profiler.py +30 -0
  744. metadata/ingestion/source/database/bigquery/profiler/system.py +165 -0
  745. metadata/ingestion/source/database/bigquery/queries.py +69 -1
  746. metadata/ingestion/source/database/bigquery/service_spec.py +16 -0
  747. metadata/ingestion/source/database/bigtable/service_spec.py +4 -0
  748. metadata/ingestion/source/database/clickhouse/service_spec.py +12 -0
  749. metadata/ingestion/source/database/common_db_source.py +150 -147
  750. metadata/ingestion/source/database/common_nosql_source.py +0 -14
  751. metadata/ingestion/source/database/couchbase/metadata.py +62 -2
  752. metadata/{data_quality/builders/sqa_validator_builder.py → ingestion/source/database/couchbase/models.py} +15 -9
  753. metadata/ingestion/source/database/couchbase/queries.py +6 -1
  754. metadata/ingestion/source/database/couchbase/service_spec.py +4 -0
  755. metadata/ingestion/source/database/database_service.py +15 -22
  756. metadata/ingestion/source/database/databricks/metadata.py +12 -1
  757. metadata/ingestion/source/database/databricks/service_spec.py +20 -0
  758. metadata/ingestion/source/database/datalake/clients/azure_blob.py +0 -3
  759. metadata/ingestion/source/database/datalake/clients/base.py +10 -1
  760. metadata/ingestion/source/database/datalake/clients/gcs.py +10 -6
  761. metadata/ingestion/source/database/datalake/clients/s3.py +0 -3
  762. metadata/ingestion/source/database/datalake/metadata.py +2 -13
  763. metadata/ingestion/source/database/datalake/service_spec.py +16 -0
  764. metadata/ingestion/source/database/db2/lineage.py +46 -0
  765. metadata/ingestion/source/database/db2/service_spec.py +9 -0
  766. metadata/ingestion/source/database/dbt/constants.py +4 -0
  767. metadata/ingestion/source/database/dbt/dbt_config.py +19 -1
  768. metadata/ingestion/source/database/dbt/dbt_service.py +8 -1
  769. metadata/ingestion/source/database/dbt/dbt_utils.py +29 -0
  770. metadata/ingestion/source/database/dbt/metadata.py +73 -7
  771. metadata/ingestion/source/database/dbt/models.py +2 -0
  772. metadata/ingestion/source/database/dbt/service_spec.py +4 -0
  773. metadata/ingestion/source/database/deltalake/metadata.py +1 -12
  774. metadata/ingestion/source/database/deltalake/service_spec.py +4 -0
  775. metadata/ingestion/source/database/domodatabase/metadata.py +1 -12
  776. metadata/ingestion/source/database/domodatabase/service_spec.py +4 -0
  777. metadata/ingestion/source/database/doris/metadata.py +1 -1
  778. metadata/ingestion/source/database/doris/service_spec.py +4 -0
  779. metadata/ingestion/source/database/druid/lineage.py +46 -0
  780. metadata/ingestion/source/database/druid/service_spec.py +4 -0
  781. metadata/ingestion/source/database/dynamodb/service_spec.py +10 -0
  782. metadata/ingestion/source/database/exasol/__init__.py +0 -0
  783. metadata/ingestion/source/database/exasol/connection.py +87 -0
  784. metadata/ingestion/source/database/exasol/metadata.py +27 -0
  785. metadata/ingestion/source/database/exasol/service_spec.py +4 -0
  786. metadata/ingestion/source/database/glue/metadata.py +49 -19
  787. metadata/ingestion/source/database/glue/models.py +8 -0
  788. metadata/ingestion/source/database/glue/service_spec.py +4 -0
  789. metadata/ingestion/source/database/greenplum/lineage.py +46 -0
  790. metadata/ingestion/source/database/greenplum/service_spec.py +4 -0
  791. metadata/ingestion/source/database/hive/lineage.py +46 -0
  792. metadata/ingestion/source/database/hive/service_spec.py +4 -0
  793. metadata/ingestion/source/database/iceberg/metadata.py +1 -16
  794. metadata/ingestion/source/database/iceberg/service_spec.py +4 -0
  795. metadata/ingestion/source/database/impala/lineage.py +46 -0
  796. metadata/ingestion/source/database/impala/service_spec.py +4 -0
  797. metadata/ingestion/source/database/life_cycle_query_mixin.py +3 -5
  798. metadata/ingestion/source/database/lineage_source.py +124 -32
  799. metadata/ingestion/source/database/mariadb/lineage.py +46 -0
  800. metadata/ingestion/source/database/mariadb/service_spec.py +4 -0
  801. metadata/ingestion/source/database/mongodb/service_spec.py +10 -0
  802. metadata/ingestion/source/database/mssql/lineage.py +51 -2
  803. metadata/ingestion/source/database/mssql/metadata.py +2 -44
  804. metadata/ingestion/source/database/mssql/service_spec.py +10 -0
  805. metadata/ingestion/source/database/mysql/lineage.py +0 -2
  806. metadata/ingestion/source/database/mysql/queries.py +0 -2
  807. metadata/ingestion/source/database/mysql/service_spec.py +10 -0
  808. metadata/ingestion/source/database/mysql/usage.py +0 -2
  809. metadata/ingestion/source/database/oracle/lineage.py +28 -1
  810. metadata/ingestion/source/database/oracle/metadata.py +2 -23
  811. metadata/ingestion/source/database/oracle/service_spec.py +10 -0
  812. metadata/ingestion/source/database/pinotdb/lineage.py +46 -0
  813. metadata/ingestion/source/database/pinotdb/service_spec.py +4 -0
  814. metadata/ingestion/source/database/postgres/metadata.py +4 -13
  815. metadata/ingestion/source/database/postgres/service_spec.py +10 -0
  816. metadata/ingestion/source/database/postgres/utils.py +26 -0
  817. metadata/ingestion/source/database/presto/service_spec.py +4 -0
  818. metadata/ingestion/source/database/query/service_spec.py +9 -0
  819. metadata/ingestion/source/database/query_parser_source.py +1 -0
  820. metadata/ingestion/source/database/redshift/connection.py +9 -2
  821. metadata/ingestion/source/database/redshift/lineage.py +27 -3
  822. metadata/ingestion/source/database/redshift/metadata.py +2 -27
  823. metadata/ingestion/source/database/redshift/profiler/__init__.py +0 -0
  824. metadata/ingestion/source/database/redshift/profiler/profiler.py +14 -0
  825. metadata/ingestion/source/database/redshift/profiler/system.py +148 -0
  826. metadata/ingestion/source/database/redshift/queries.py +99 -8
  827. metadata/ingestion/source/database/redshift/service_spec.py +14 -0
  828. metadata/ingestion/source/database/redshift/utils.py +3 -3
  829. metadata/ingestion/source/database/salesforce/metadata.py +1 -12
  830. metadata/ingestion/source/database/salesforce/service_spec.py +4 -0
  831. metadata/ingestion/source/database/sample_data.py +129 -34
  832. metadata/ingestion/source/database/saperp/service_spec.py +4 -0
  833. metadata/ingestion/source/database/saphana/service_spec.py +7 -0
  834. metadata/ingestion/source/database/sas/metadata.py +1 -10
  835. metadata/ingestion/source/database/sas/service_spec.py +4 -0
  836. metadata/ingestion/source/database/singlestore/lineage.py +46 -0
  837. metadata/ingestion/source/database/singlestore/service_spec.py +9 -0
  838. metadata/ingestion/source/database/snowflake/connection.py +6 -1
  839. metadata/ingestion/source/database/snowflake/lineage.py +31 -2
  840. metadata/ingestion/source/database/snowflake/metadata.py +20 -62
  841. metadata/ingestion/source/database/snowflake/models.py +50 -2
  842. metadata/ingestion/source/database/snowflake/profiler/__init__.py +0 -0
  843. metadata/ingestion/source/database/snowflake/profiler/profiler.py +26 -0
  844. metadata/ingestion/source/database/snowflake/profiler/system.py +436 -0
  845. metadata/ingestion/source/database/snowflake/queries.py +28 -22
  846. metadata/ingestion/source/database/snowflake/service_spec.py +20 -0
  847. metadata/ingestion/source/database/sql_column_handler.py +26 -0
  848. metadata/ingestion/source/database/sqlite/lineage.py +46 -0
  849. metadata/ingestion/source/database/sqlite/service_spec.py +4 -0
  850. metadata/ingestion/source/database/stored_procedures_mixin.py +78 -52
  851. metadata/ingestion/source/database/teradata/lineage.py +46 -0
  852. metadata/ingestion/source/database/teradata/service_spec.py +4 -0
  853. metadata/ingestion/source/database/trino/connection.py +60 -23
  854. metadata/ingestion/source/database/trino/profiler/__init__.py +0 -0
  855. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +167 -0
  856. metadata/ingestion/source/database/trino/service_spec.py +16 -0
  857. metadata/ingestion/source/database/unitycatalog/metadata.py +3 -24
  858. metadata/ingestion/source/database/unitycatalog/service_spec.py +22 -0
  859. metadata/ingestion/source/database/usage_source.py +4 -1
  860. metadata/ingestion/source/database/vertica/service_spec.py +10 -0
  861. metadata/ingestion/source/messaging/kafka/service_spec.py +4 -0
  862. metadata/ingestion/source/messaging/kinesis/service_spec.py +4 -0
  863. metadata/ingestion/source/messaging/redpanda/service_spec.py +4 -0
  864. metadata/ingestion/source/metadata/alationsink/service_spec.py +4 -0
  865. metadata/ingestion/source/metadata/amundsen/service_spec.py +4 -0
  866. metadata/ingestion/source/metadata/atlas/service_spec.py +4 -0
  867. metadata/ingestion/source/mlmodel/mlflow/service_spec.py +4 -0
  868. metadata/ingestion/source/mlmodel/sagemaker/service_spec.py +4 -0
  869. metadata/ingestion/source/pipeline/airbyte/service_spec.py +4 -0
  870. metadata/ingestion/source/pipeline/airflow/connection.py +45 -2
  871. metadata/ingestion/source/pipeline/airflow/metadata.py +71 -27
  872. metadata/ingestion/source/pipeline/airflow/service_spec.py +4 -0
  873. metadata/ingestion/source/pipeline/dagster/metadata.py +3 -1
  874. metadata/ingestion/source/pipeline/dagster/service_spec.py +4 -0
  875. metadata/ingestion/source/pipeline/databrickspipeline/service_spec.py +6 -0
  876. metadata/ingestion/source/pipeline/dbtcloud/client.py +67 -28
  877. metadata/ingestion/source/pipeline/dbtcloud/connection.py +1 -3
  878. metadata/ingestion/source/pipeline/dbtcloud/models.py +1 -1
  879. metadata/ingestion/source/pipeline/dbtcloud/service_spec.py +4 -0
  880. metadata/ingestion/source/pipeline/domopipeline/service_spec.py +4 -0
  881. metadata/ingestion/source/pipeline/fivetran/service_spec.py +4 -0
  882. metadata/ingestion/source/pipeline/flink/service_spec.py +4 -0
  883. metadata/ingestion/source/pipeline/gluepipeline/service_spec.py +4 -0
  884. metadata/ingestion/source/pipeline/kafkaconnect/client.py +1 -1
  885. metadata/ingestion/source/pipeline/kafkaconnect/service_spec.py +4 -0
  886. metadata/ingestion/source/pipeline/nifi/service_spec.py +4 -0
  887. metadata/ingestion/source/pipeline/openlineage/service_spec.py +4 -0
  888. metadata/ingestion/source/pipeline/pipeline_service.py +3 -1
  889. metadata/ingestion/source/pipeline/spline/service_spec.py +4 -0
  890. metadata/ingestion/source/search/elasticsearch/metadata.py +53 -0
  891. metadata/ingestion/source/search/elasticsearch/service_spec.py +4 -0
  892. metadata/ingestion/source/search/search_service.py +44 -1
  893. metadata/ingestion/source/storage/gcs/metadata.py +2 -2
  894. metadata/ingestion/source/storage/gcs/service_spec.py +4 -0
  895. metadata/ingestion/source/storage/s3/service_spec.py +4 -0
  896. metadata/mixins/pandas/pandas_mixin.py +2 -31
  897. metadata/mixins/sqalchemy/sqa_mixin.py +18 -17
  898. metadata/parsers/avro_parser.py +51 -16
  899. metadata/parsers/json_schema_parser.py +45 -16
  900. metadata/pii/processor.py +10 -9
  901. metadata/pii/scanners/ner_scanner.py +2 -1
  902. metadata/profiler/api/models.py +4 -75
  903. metadata/profiler/config.py +39 -0
  904. metadata/profiler/interface/nosql/profiler_interface.py +1 -26
  905. metadata/profiler/interface/pandas/profiler_interface.py +37 -77
  906. metadata/profiler/interface/profiler_interface.py +25 -279
  907. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +0 -19
  908. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +2 -17
  909. metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +1 -1
  910. metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +7 -5
  911. metadata/profiler/interface/sqlalchemy/profiler_interface.py +73 -125
  912. metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +5 -5
  913. metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +1 -1
  914. metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +145 -0
  915. metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +9 -4
  916. metadata/profiler/metrics/system/system.py +69 -374
  917. metadata/profiler/orm/converter/base.py +23 -13
  918. metadata/profiler/orm/converter/bigquery/converter.py +1 -1
  919. metadata/profiler/orm/functions/count.py +9 -0
  920. metadata/profiler/orm/functions/md5.py +39 -0
  921. metadata/{data_quality/builders/pandas_validator_builder.py → profiler/orm/functions/substr.py} +13 -10
  922. metadata/profiler/orm/functions/table_metric_computer.py +6 -5
  923. metadata/profiler/orm/functions/unique_count.py +6 -0
  924. metadata/profiler/orm/registry.py +27 -2
  925. metadata/profiler/processor/core.py +13 -62
  926. metadata/profiler/processor/handle_partition.py +0 -48
  927. metadata/profiler/processor/processor.py +1 -1
  928. metadata/profiler/processor/runner.py +111 -35
  929. metadata/profiler/processor/sample_data_handler.py +7 -4
  930. metadata/profiler/source/database/base/profiler_source.py +215 -0
  931. metadata/profiler/source/{bigquery → database/bigquery}/profiler_source.py +4 -4
  932. metadata/profiler/source/{databricks → database/databricks}/profiler_source.py +6 -7
  933. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/first_quartile.py +1 -1
  934. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/median.py +1 -1
  935. metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/third_quartile.py +1 -1
  936. metadata/profiler/source/{single_store → database/single_store}/metrics/window/first_quartile.py +3 -1
  937. metadata/profiler/source/{single_store → database/single_store}/metrics/window/median.py +3 -1
  938. metadata/profiler/source/{single_store → database/single_store}/metrics/window/third_quartile.py +3 -1
  939. metadata/profiler/source/fetcher/config.py +44 -0
  940. metadata/profiler/source/fetcher/entity_fetcher.py +62 -0
  941. metadata/profiler/source/fetcher/fetcher_strategy.py +299 -0
  942. metadata/profiler/source/fetcher/profiler_source_factory.py +89 -0
  943. metadata/profiler/source/metadata.py +16 -201
  944. metadata/profiler/source/metadata_ext.py +23 -18
  945. metadata/profiler/source/model.py +29 -0
  946. metadata/sampler/config.py +237 -0
  947. metadata/sampler/models.py +106 -0
  948. metadata/{profiler/processor/sampler → sampler}/nosql/sampler.py +44 -12
  949. metadata/sampler/pandas/sampler.py +239 -0
  950. metadata/{utils → sampler}/partition.py +66 -51
  951. metadata/sampler/processor.py +158 -0
  952. metadata/sampler/sampler_interface.py +251 -0
  953. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/azuresql/sampler.py +1 -1
  954. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/bigquery/sampler.py +55 -26
  955. metadata/sampler/sqlalchemy/postgres/sampler.py +91 -0
  956. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/sampler.py +90 -98
  957. metadata/sampler/sqlalchemy/snowflake/sampler.py +95 -0
  958. metadata/{profiler/processor/sampler → sampler}/sqlalchemy/trino/sampler.py +5 -3
  959. metadata/utils/class_helper.py +5 -0
  960. metadata/utils/collaborative_super.py +28 -0
  961. metadata/utils/constants.py +65 -0
  962. metadata/utils/constraints.py +65 -0
  963. metadata/utils/dict.py +8 -0
  964. metadata/utils/dispatch.py +1 -53
  965. metadata/utils/entity_link.py +8 -2
  966. metadata/utils/entity_utils.py +93 -0
  967. metadata/utils/filters.py +15 -0
  968. metadata/utils/fqn.py +15 -0
  969. metadata/utils/helpers.py +3 -2
  970. metadata/utils/importer.py +12 -24
  971. metadata/utils/logger.py +31 -1
  972. metadata/utils/lru_cache.py +76 -15
  973. metadata/utils/profiler_utils.py +43 -9
  974. metadata/utils/service_spec/__init__.py +5 -0
  975. metadata/utils/service_spec/default.py +21 -0
  976. metadata/utils/service_spec/service_spec.py +146 -0
  977. metadata/utils/ssl_manager.py +33 -0
  978. metadata/utils/time_utils.py +33 -5
  979. metadata/workflow/application.py +7 -36
  980. metadata/workflow/base.py +47 -17
  981. metadata/workflow/classification.py +53 -0
  982. metadata/workflow/ingestion.py +6 -38
  983. metadata/workflow/profiler.py +1 -17
  984. metadata/workflow/workflow_output_handler.py +11 -8
  985. metadata/workflow/workflow_status_mixin.py +0 -2
  986. openmetadata_ingestion-1.6.0.0rc2.dist-info/LICENSE +114 -0
  987. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/METADATA +473 -548
  988. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/RECORD +995 -809
  989. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/entry_points.txt +3 -0
  990. metadata/data_quality/interface/test_suite_interface_factory.py +0 -128
  991. metadata/data_quality/runner/test_suite_source_factory.py +0 -38
  992. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +0 -54
  993. metadata/profiler/interface/profiler_interface_factory.py +0 -107
  994. metadata/profiler/metrics/system/queries/bigquery.py +0 -54
  995. metadata/profiler/metrics/system/queries/redshift.py +0 -103
  996. metadata/profiler/metrics/system/queries/snowflake.py +0 -191
  997. metadata/profiler/processor/sampler/pandas/sampler.py +0 -170
  998. metadata/profiler/processor/sampler/sampler_factory.py +0 -100
  999. metadata/profiler/processor/sampler/sampler_interface.py +0 -74
  1000. metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +0 -60
  1001. metadata/profiler/source/base/profiler_source.py +0 -299
  1002. metadata/profiler/source/profiler_source_factory.py +0 -54
  1003. openmetadata_ingestion-1.5.13.0.dist-info/LICENSE +0 -201
  1004. {metadata/ingestion/source/dashboard/mstr → _openmetadata_testutils/pytest_openmetadata}/__init__.py +0 -0
  1005. /metadata/profiler/source/{bigquery → database/bigquery}/type_mapper.py +0 -0
  1006. /metadata/profiler/source/{mariadb → database/mariadb}/functions/median.py +0 -0
  1007. /metadata/profiler/source/{single_store → database/single_store}/functions/median.py +0 -0
  1008. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/WHEEL +0 -0
  1009. {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -53,7 +53,7 @@ class AbstractTableMetricComputer(ABC):
53
53
  self._metrics = metrics
54
54
  self._conn_config = conn_config
55
55
  self._database = self._runner._session.get_bind().url.database
56
- self._table = self._runner.table
56
+ self._table = self._runner.dataset
57
57
  self._entity = entity
58
58
 
59
59
  @property
@@ -91,8 +91,8 @@ class AbstractTableMetricComputer(ABC):
91
91
  table (DeclarativeMeta): _description_
92
92
  """
93
93
  try:
94
- self._schema_name = self.table.__table_args__.get("schema")
95
- self._table_name = self.table.__tablename__
94
+ self._schema_name = self.table.schema
95
+ self._table_name = self.table.name
96
96
  except AttributeError:
97
97
  raise AttributeError(ERROR_MSG)
98
98
 
@@ -147,7 +147,8 @@ class BaseTableMetricComputer(AbstractTableMetricComputer):
147
147
  """Base table computer"""
148
148
 
149
149
  def compute(self):
150
- """Default compute behavior for table metrics"""
150
+ """Default compute behavior for table metrics. This method will use the raw table
151
+ to compute metrics and omit any sampling or partitioning logic."""
151
152
  return self.runner.select_first_from_table(
152
153
  *[metric().fn() for metric in self.metrics]
153
154
  )
@@ -412,7 +413,7 @@ class RedshiftTableMetricComputer(BaseTableMetricComputer):
412
413
  )
413
414
  res = self.runner._session.execute(query).first()
414
415
  if not res:
415
- return None
416
+ return super().compute()
416
417
  if res.rowCount is None or (
417
418
  res.rowCount == 0 and self._entity.tableType == TableType.View
418
419
  ):
@@ -53,5 +53,11 @@ def _unique_count_query_mssql(col, session, sample):
53
53
  )
54
54
 
55
55
 
56
+ def _unique_count_query_oracle(col, session, sample):
57
+ count_fn = CountFn(col)
58
+ return _unique_count_query(count_fn, session, sample)
59
+
60
+
56
61
  _unique_count_query_mapper = defaultdict(lambda: _unique_count_query)
57
62
  _unique_count_query_mapper[Dialects.MSSQL] = _unique_count_query_mssql
63
+ _unique_count_query_mapper[Dialects.Oracle] = _unique_count_query_oracle
@@ -14,10 +14,11 @@ Custom types' registry for easy access
14
14
  without having an import mess
15
15
  """
16
16
  import math
17
+ from enum import Enum
17
18
 
18
19
  import sqlalchemy
19
20
  from sqlalchemy import Date, DateTime, Integer, Numeric, Time
20
- from sqlalchemy.sql.sqltypes import Concatenable, Enum
21
+ from sqlalchemy.sql.sqltypes import Concatenable
21
22
 
22
23
  from metadata.generated.schema.entity.data.table import DataType
23
24
  from metadata.ingestion.source import sqa_types
@@ -45,7 +46,7 @@ class CustomTypes(TypeRegistry):
45
46
  UNDETERMINED = UndeterminedType
46
47
 
47
48
 
48
- class Dialects(Enum):
49
+ class PythonDialects(Enum):
49
50
  """
50
51
  Map the service types from DatabaseServiceType
51
52
  to the dialect scheme name used for ingesting
@@ -54,6 +55,8 @@ class Dialects(Enum):
54
55
  Keep this alphabetically ordered
55
56
  """
56
57
 
58
+ # pylint: disable=invalid-name
59
+
57
60
  Athena = "awsathena"
58
61
  AzureSQL = "azuresql"
59
62
  BigQuery = "bigquery"
@@ -83,6 +86,28 @@ class Dialects(Enum):
83
86
  Vertica = "vertica"
84
87
 
85
88
 
89
+ class EnumAdapter(type):
90
+ """A hack to use the Dialects string values can be accesses
91
+ without using the value attribute.
92
+
93
+ Example:
94
+ Dialets.MySQL == "mysql"
95
+
96
+ Instead of:
97
+ Dialects.MySQL.value == "mysql"
98
+
99
+ We use this functionality when registring sqlalchemy custom functions. But we should
100
+ avoid using this pattern as it can be confusing.
101
+ """
102
+
103
+ def __getattr__(cls, item):
104
+ return PythonDialects[item].value
105
+
106
+
107
+ class Dialects(metaclass=EnumAdapter):
108
+ pass
109
+
110
+
86
111
  # Sometimes we want to skip certain types for computing metrics.
87
112
  # If the type is NULL, then we won't run the metric execution
88
113
  # in the profiler.
@@ -40,7 +40,7 @@ from metadata.generated.schema.tests.customMetric import (
40
40
  CustomMetric as CustomMetricEntity,
41
41
  )
42
42
  from metadata.generated.schema.type.basic import Timestamp
43
- from metadata.profiler.api.models import ProfilerResponse, SampleData, ThreadPoolMetrics
43
+ from metadata.profiler.api.models import ProfilerResponse, ThreadPoolMetrics
44
44
  from metadata.profiler.interface.profiler_interface import ProfilerInterface
45
45
  from metadata.profiler.metrics.core import (
46
46
  ComposedMetric,
@@ -54,9 +54,6 @@ from metadata.profiler.metrics.static.row_count import RowCount
54
54
  from metadata.profiler.orm.functions.table_metric_computer import CREATE_DATETIME
55
55
  from metadata.profiler.orm.registry import NOT_COMPUTE
56
56
  from metadata.profiler.processor.metric_filter import MetricFilter
57
- from metadata.profiler.processor.sample_data_handler import upload_sample_data
58
- from metadata.utils.constants import SAMPLE_DATA_DEFAULT_COUNT
59
- from metadata.utils.execution_time_tracker import calculate_execution_time
60
57
  from metadata.utils.logger import profiler_logger
61
58
 
62
59
  logger = profiler_logger()
@@ -107,7 +104,6 @@ class Profiler(Generic[TMetric]):
107
104
  self.exclude_columns = exclude_columns
108
105
  self._metrics = metrics
109
106
  self._profile_ts = Timestamp(int(datetime.now().timestamp() * 1000))
110
- self.profile_sample_config = self.profiler_interface.profile_sample_config
111
107
 
112
108
  self.metric_filter = MetricFilter(
113
109
  metrics=self.metrics,
@@ -249,11 +245,6 @@ class Profiler(Generic[TMetric]):
249
245
  return column.customMetrics or None
250
246
  return None
251
247
 
252
- @property
253
- def sample(self):
254
- """Return the sample used for the profiler"""
255
- return self.profiler_interface.sample
256
-
257
248
  def validate_composed_metric(self) -> None:
258
249
  """
259
250
  Make sure that all composed metrics have
@@ -273,9 +264,6 @@ class Profiler(Generic[TMetric]):
273
264
 
274
265
  Data should be saved under self.results
275
266
  """
276
-
277
- logger.debug("Running post Profiler...")
278
-
279
267
  current_col_results: Dict[str, Any] = self._column_results.get(col.name)
280
268
  if not current_col_results:
281
269
  logger.debug(
@@ -320,12 +308,15 @@ class Profiler(Generic[TMetric]):
320
308
  col,
321
309
  metric,
322
310
  current_col_results,
323
- table=self.table,
324
311
  )
325
312
 
326
313
  def _prepare_table_metrics(self) -> List:
327
314
  """prepare table metrics"""
328
315
  metrics = []
316
+
317
+ if self.source_config and not self.source_config.computeTableMetrics:
318
+ return metrics
319
+
329
320
  table_metrics = [
330
321
  metric
331
322
  for metric in self.metric_filter.static_metrics
@@ -380,6 +371,9 @@ class Profiler(Generic[TMetric]):
380
371
  def _prepare_column_metrics(self) -> List:
381
372
  """prepare column metrics"""
382
373
  column_metrics_for_thread_pool = []
374
+ if self.source_config and not self.source_config.computeColumnMetrics:
375
+ return column_metrics_for_thread_pool
376
+
383
377
  columns = [
384
378
  column
385
379
  for column in self.columns
@@ -491,16 +485,6 @@ class Profiler(Generic[TMetric]):
491
485
  )
492
486
  self.compute_metrics()
493
487
 
494
- # We need the sample data for Sample Data or PII Sensitive processing.
495
- # We'll nullify the Sample Data after the PII processing so that it's not stored.
496
- if (
497
- self.source_config.generateSampleData
498
- or self.source_config.processPiiSensitive
499
- ):
500
- sample_data = self.generate_sample_data()
501
- else:
502
- sample_data = None
503
-
504
488
  profile = self.get_profile()
505
489
  if self.source_config.computeMetrics:
506
490
  self._check_profile_and_handle(profile)
@@ -508,43 +492,10 @@ class Profiler(Generic[TMetric]):
508
492
  table_profile = ProfilerResponse(
509
493
  table=self.profiler_interface.table_entity,
510
494
  profile=profile,
511
- sample_data=sample_data,
512
495
  )
513
496
 
514
497
  return table_profile
515
498
 
516
- @calculate_execution_time(store=False)
517
- def generate_sample_data(self) -> Optional[SampleData]:
518
- """Fetch and ingest sample data
519
-
520
- Returns:
521
- TableData: sample data
522
- """
523
- try:
524
- logger.debug(
525
- "Fetching sample data for "
526
- f"{self.profiler_interface.table_entity.fullyQualifiedName.root}..." # type: ignore
527
- )
528
- table_data = self.profiler_interface.fetch_sample_data(
529
- self.table, self.columns
530
- )
531
- upload_sample_data(
532
- data=table_data, profiler_interface=self.profiler_interface
533
- )
534
- table_data.rows = table_data.rows[
535
- : min(
536
- SAMPLE_DATA_DEFAULT_COUNT, self.profiler_interface.sample_data_count
537
- )
538
- ]
539
- return SampleData(
540
- data=table_data, store=self.source_config.generateSampleData
541
- )
542
-
543
- except Exception as err:
544
- logger.debug(traceback.format_exc())
545
- logger.warning(f"Error fetching sample data: {err}")
546
- return None
547
-
548
499
  def get_profile(self) -> CreateTableProfileRequest:
549
500
  """
550
501
  After executing the profiler, get all results
@@ -599,13 +550,13 @@ class Profiler(Generic[TMetric]):
599
550
  createDateTime=raw_create_date,
600
551
  sizeInByte=self._table_results.get("sizeInBytes"),
601
552
  profileSample=(
602
- self.profile_sample_config.profile_sample
603
- if self.profile_sample_config
553
+ self.profiler_interface.sampler.sample_config.profile_sample
554
+ if self.profiler_interface.sampler.sample_config
604
555
  else None
605
556
  ),
606
557
  profileSampleType=(
607
- self.profile_sample_config.profile_sample_type
608
- if self.profile_sample_config
558
+ self.profiler_interface.sampler.sample_config.profile_sample_type
559
+ if self.profiler_interface.sampler.sample_config
609
560
  else None
610
561
  ),
611
562
  customMetrics=self._table_results.get("customMetrics"),
@@ -613,7 +564,7 @@ class Profiler(Generic[TMetric]):
613
564
 
614
565
  if self._system_results:
615
566
  system_profile = [
616
- SystemProfile(**system_result)
567
+ SystemProfile.model_validate(system_result)
617
568
  for system_result in self._system_results
618
569
  ]
619
570
  else:
@@ -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
@@ -30,7 +30,7 @@ from metadata.ingestion.api.steps import Processor
30
30
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
31
31
  from metadata.profiler.api.models import ProfilerProcessorConfig, ProfilerResponse
32
32
  from metadata.profiler.processor.core import Profiler
33
- from metadata.profiler.source.metadata import ProfilerSourceAndEntity
33
+ from metadata.profiler.source.model import ProfilerSourceAndEntity
34
34
 
35
35
 
36
36
  class ProfilerProcessor(Processor):
@@ -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,66 @@ 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
60
85
 
61
86
  def _build_query(self, *entities, **kwargs) -> Query:
87
+ """Build query object
88
+
89
+ Args:
90
+ *entities: entities to select
91
+ **kwargs: kwargs to pass to the query
92
+ """
62
93
  return self._session.query(*entities, **kwargs)
63
94
 
64
95
  def _select_from_sample(self, *entities, **kwargs):
65
- """Run select statement against sample data"""
96
+ """This method will use the sample data
97
+ and the partitioning logic if available otherwise it will use the raw table.
98
+
99
+ Args:
100
+ *entities: entities to select
101
+ **kwargs: kwargs to pass to the query
102
+ """
66
103
  filter_ = get_query_filter_for_runner(kwargs)
67
104
 
68
- query = self._build_query(*entities, **kwargs).select_from(self._sample)
105
+ query = self._build_query(*entities, **kwargs).select_from(self._dataset)
69
106
 
70
107
  if filter_ is not None:
71
108
  return query.filter(filter_)
@@ -73,11 +110,16 @@ class QueryRunner:
73
110
  return query
74
111
 
75
112
  def _select_from_user_query(self, *entities, **kwargs):
76
- """Run select statement against user defined query"""
113
+ """Use the user query to select data from the table
114
+
115
+ Args:
116
+ *entities: entities to select
117
+ **kwargs: kwargs to pass to the query
118
+ """
77
119
  filter_ = get_query_filter_for_runner(kwargs)
78
120
 
79
- user_query = self._session.query(self.table).from_statement(
80
- text(f"{self._profile_sample_query}")
121
+ user_query = self._session.query(self._dataset).from_statement(
122
+ text(f"{self.profile_sample_query}")
81
123
  )
82
124
 
83
125
  query = self._build_query(*entities, **kwargs).select_from(user_query)
@@ -87,12 +129,17 @@ class QueryRunner:
87
129
 
88
130
  return query
89
131
 
90
- @partition_filter_handler()
91
132
  def select_first_from_table(self, *entities, **kwargs):
92
- """Select first row from the table"""
133
+ """Select first row from the table. This method will use the raw table and
134
+ omit any sampling or partitioning logic.
135
+
136
+ Args:
137
+ *entities: entities to select
138
+ **kwargs: kwargs to pass to the query
139
+ """
93
140
  filter_ = get_query_filter_for_runner(kwargs)
94
141
 
95
- if self._profile_sample_query:
142
+ if self.profile_sample_query:
96
143
  return self._select_from_user_query(*entities, **kwargs).first()
97
144
  query = self._build_query(*entities, **kwargs).select_from(self.table)
98
145
 
@@ -101,12 +148,17 @@ class QueryRunner:
101
148
 
102
149
  return query.first()
103
150
 
104
- @partition_filter_handler(first=False)
105
151
  def select_all_from_table(self, *entities, **kwargs):
106
- """Select all rows from the table"""
152
+ """Select all rows from the table. This method will use the raw table and
153
+ omit any sampling or partitioning logic.
154
+
155
+ Args:
156
+ *entities: entities to select
157
+ **kwargs: kwargs to pass to the query
158
+ """
107
159
  filter_ = get_query_filter_for_runner(kwargs)
108
160
 
109
- if self._profile_sample_query:
161
+ if self.profile_sample_query:
110
162
  return self._select_from_user_query(*entities, **kwargs).all()
111
163
 
112
164
  query = self._build_query(*entities, **kwargs).select_from(self.table)
@@ -116,23 +168,33 @@ class QueryRunner:
116
168
 
117
169
  return query.all()
118
170
 
119
- @partition_filter_handler(sampled=True)
120
171
  def select_first_from_sample(self, *entities, **kwargs):
172
+ """Select first row from the sample data. This method will use the sample data
173
+ and the partitioning logic if available otherwise it will use the raw table.
174
+
175
+ Args:
176
+ *entities: entities to select
177
+ **kwargs: kwargs to pass to the query
178
+ """
121
179
  return self._select_from_sample(*entities, **kwargs).first()
122
180
 
123
- @partition_filter_handler(first=False, sampled=True)
124
181
  def select_all_from_sample(self, *entities, **kwargs):
182
+ """Select all rows from the sample data. This method will use the sample data
183
+ and the partitioning logic if available otherwise it will use the raw table.
184
+
185
+ Args:
186
+ *entities: entities to select
187
+ **kwargs: kwargs to pass to the query
188
+ """
125
189
  return self._select_from_sample(*entities, **kwargs).all()
126
190
 
127
191
  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)
192
+ """Yield rows from the sample data
135
193
 
194
+ Args:
195
+ *entities: entities to select
196
+ **kwargs: kwargs to pass to the query
197
+ """
136
198
  result = self._session.execute(self._select_from_sample(*entities, **kwargs))
137
199
  while True:
138
200
  rows = result.fetchmany(1000)
@@ -141,15 +203,29 @@ class QueryRunner:
141
203
  yield from rows
142
204
 
143
205
  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)
206
+ """Dispatch query to sample or all table.
207
+ Note: Kept for backward compatibility
208
+
209
+ Args:
210
+ *entities: entities to select
211
+ **kwargs: kwargs to pass to the query
212
+ """
213
+ return self.select_first_from_sample(*entities, **kwargs)
148
214
 
149
215
  @staticmethod
150
216
  def select_first_from_query(query: Query):
217
+ """Given a query object, return the first row
218
+
219
+ Args:
220
+ query (Query): query object
221
+ """
151
222
  return query.first()
152
223
 
153
224
  @staticmethod
154
225
  def select_all_from_query(query: Query):
226
+ """Given a query object, return all the rows
227
+
228
+ Args:
229
+ query (Query): query object
230
+ """
155
231
  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,