openmetadata-ingestion 1.3.3.0rc2__py3-none-any.whl → 1.4.0.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (989) hide show
  1. metadata/__version__.py +13 -0
  2. metadata/automations/runner.py +9 -0
  3. metadata/cli/app.py +0 -1
  4. metadata/cli/lineage.py +5 -1
  5. metadata/cli/restore.py +7 -0
  6. metadata/cmd.py +2 -345
  7. metadata/data_insight/processor/reports/cost_analysis_report_data_processor.py +0 -1
  8. metadata/data_insight/processor/reports/web_analytic_report_data_processor.py +12 -5
  9. metadata/data_quality/api/models.py +1 -0
  10. metadata/data_quality/processor/test_case_runner.py +9 -2
  11. metadata/data_quality/source/test_suite.py +14 -3
  12. metadata/data_quality/validations/base_test_handler.py +1 -1
  13. metadata/data_quality/validations/column/base/columnValuesMissingCount.py +4 -1
  14. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +28 -17
  15. metadata/data_quality/validations/mixins/sqa_validator_mixin.py +4 -1
  16. metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +1 -1
  17. metadata/examples/workflows/airbyte.yaml +1 -0
  18. metadata/examples/workflows/airflow.yaml +1 -1
  19. metadata/examples/workflows/airflow_backend.yaml +1 -1
  20. metadata/examples/workflows/airflow_postgres.yaml +1 -1
  21. metadata/examples/workflows/amundsen.yaml +1 -0
  22. metadata/examples/workflows/athena.yaml +1 -0
  23. metadata/examples/workflows/athena_lineage.yaml +1 -1
  24. metadata/examples/workflows/athena_usage.yaml +1 -0
  25. metadata/examples/workflows/atlas.yaml +1 -0
  26. metadata/examples/workflows/azuresql.yaml +1 -0
  27. metadata/examples/workflows/azuresql_lineage.yaml +1 -0
  28. metadata/examples/workflows/azuresql_usage.yaml +1 -0
  29. metadata/examples/workflows/bigquery.yaml +1 -0
  30. metadata/examples/workflows/bigquery_lineage.yaml +1 -0
  31. metadata/examples/workflows/bigquery_profiler.yaml +1 -0
  32. metadata/examples/workflows/bigquery_usage.yaml +1 -0
  33. metadata/examples/workflows/bigtable.yaml +1 -1
  34. metadata/examples/workflows/clickhouse.yaml +1 -0
  35. metadata/examples/workflows/clickhouse_lineage.yaml +1 -0
  36. metadata/examples/workflows/clickhouse_usage.yaml +1 -0
  37. metadata/examples/workflows/couchbase.yaml +1 -1
  38. metadata/examples/workflows/dagster.yaml +1 -0
  39. metadata/examples/workflows/data_insight.yaml +1 -1
  40. metadata/examples/workflows/databricks.yaml +1 -0
  41. metadata/examples/workflows/databricks_lineage.yaml +1 -0
  42. metadata/examples/workflows/databricks_pipeline.yaml +1 -0
  43. metadata/examples/workflows/databricks_usage.yaml +1 -0
  44. metadata/examples/workflows/datalake_azure_client_secret.yaml +1 -0
  45. metadata/examples/workflows/datalake_gcs.yaml +1 -0
  46. metadata/examples/workflows/datalake_profiler.yaml +1 -0
  47. metadata/examples/workflows/datalake_s3.yaml +1 -0
  48. metadata/examples/workflows/db2.yaml +1 -0
  49. metadata/examples/workflows/db2_profiler.yaml +1 -0
  50. metadata/examples/workflows/dbt.yaml +2 -0
  51. metadata/examples/workflows/deltalake.yaml +1 -0
  52. metadata/examples/workflows/domodashboard.yaml +1 -0
  53. metadata/examples/workflows/dynamodb.yaml +1 -0
  54. metadata/examples/workflows/elasticsearch.yaml +1 -1
  55. metadata/examples/workflows/fivetran.yaml +1 -0
  56. metadata/examples/workflows/glue.yaml +1 -0
  57. metadata/examples/workflows/gluepipeline.yaml +1 -0
  58. metadata/examples/workflows/hive.yaml +1 -0
  59. metadata/examples/workflows/impala.yaml +1 -0
  60. metadata/examples/workflows/kafka.yaml +1 -1
  61. metadata/examples/workflows/kafka_connect.yaml +30 -0
  62. metadata/examples/workflows/kinesis.yaml +1 -1
  63. metadata/examples/workflows/lightdash.yaml +1 -0
  64. metadata/examples/workflows/looker.yaml +1 -0
  65. metadata/examples/workflows/mariadb.yaml +1 -0
  66. metadata/examples/workflows/metabase.yaml +1 -0
  67. metadata/examples/workflows/mlflow.yaml +1 -0
  68. metadata/examples/workflows/mode.yaml +3 -1
  69. metadata/examples/workflows/mongodb.yaml +1 -0
  70. metadata/examples/workflows/mssql.yaml +1 -0
  71. metadata/examples/workflows/mssql_lineage.yaml +1 -0
  72. metadata/examples/workflows/mssql_usage.yaml +1 -0
  73. metadata/examples/workflows/mstr.yaml +1 -0
  74. metadata/examples/workflows/mysql.yaml +1 -0
  75. metadata/examples/workflows/mysql_profiler.yaml +1 -0
  76. metadata/examples/workflows/openmetadata.yaml +1 -0
  77. metadata/examples/workflows/oracle.yaml +1 -0
  78. metadata/examples/workflows/oracle_lineage.yaml +1 -1
  79. metadata/examples/workflows/oracle_usage.yaml +1 -0
  80. metadata/examples/workflows/pinotdb.yaml +1 -0
  81. metadata/examples/workflows/postgres.yaml +1 -0
  82. metadata/examples/workflows/postgres_lineage.yaml +1 -1
  83. metadata/examples/workflows/postgres_usage.yaml +1 -1
  84. metadata/examples/workflows/powerbi.yaml +52 -0
  85. metadata/examples/workflows/presto.yaml +1 -0
  86. metadata/examples/workflows/qlik_sense.yaml +6 -4
  87. metadata/examples/workflows/qlikcloud.yaml +31 -0
  88. metadata/examples/workflows/query_log_usage.yaml +1 -0
  89. metadata/examples/workflows/quicksight.yaml +1 -0
  90. metadata/examples/workflows/redash.yaml +1 -0
  91. metadata/examples/workflows/redpanda.yaml +1 -0
  92. metadata/examples/workflows/redshift.yaml +1 -0
  93. metadata/examples/workflows/redshift_lineage.yaml +1 -0
  94. metadata/examples/workflows/redshift_profiler.yaml +1 -0
  95. metadata/examples/workflows/redshift_usage.yaml +1 -0
  96. metadata/examples/workflows/sagemaker.yaml +1 -1
  97. metadata/examples/workflows/salesforce.yaml +1 -0
  98. metadata/examples/workflows/sas.yaml +1 -1
  99. metadata/examples/workflows/singlestore.yaml +1 -0
  100. metadata/examples/workflows/snowflake.yaml +1 -0
  101. metadata/examples/workflows/snowflake_lineage.yaml +1 -0
  102. metadata/examples/workflows/snowflake_usage.yaml +1 -0
  103. metadata/examples/workflows/spline.yaml +5 -4
  104. metadata/examples/workflows/sqlite.yaml +1 -0
  105. metadata/examples/workflows/superset.yaml +1 -0
  106. metadata/examples/workflows/tableau.yaml +1 -0
  107. metadata/examples/workflows/test_suite.yaml +13 -16
  108. metadata/examples/workflows/trino.yaml +1 -0
  109. metadata/examples/workflows/trino_lineage.yaml +1 -0
  110. metadata/examples/workflows/trino_usage.yaml +1 -0
  111. metadata/examples/workflows/unity_catalog.yaml +1 -1
  112. metadata/examples/workflows/unity_catalog_lineage.yaml +1 -1
  113. metadata/examples/workflows/unity_catalog_usage.yaml +1 -1
  114. metadata/examples/workflows/vertica.yaml +1 -0
  115. metadata/generated/antlr/EntityLinkLexer.py +354 -349
  116. metadata/generated/schema/analytics/__init__.py +1 -1
  117. metadata/generated/schema/analytics/basic.py +1 -1
  118. metadata/generated/schema/analytics/reportData.py +1 -1
  119. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  120. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  121. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  122. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  123. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  124. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  125. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  126. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  127. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  128. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  129. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  130. metadata/generated/schema/api/__init__.py +1 -1
  131. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  132. metadata/generated/schema/api/analytics/__init__.py +1 -1
  133. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  134. metadata/generated/schema/api/automations/__init__.py +1 -1
  135. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  136. metadata/generated/schema/api/bulkAssets.py +1 -1
  137. metadata/generated/schema/api/classification/__init__.py +1 -1
  138. metadata/generated/schema/api/classification/createClassification.py +2 -3
  139. metadata/generated/schema/api/classification/createTag.py +2 -3
  140. metadata/generated/schema/api/classification/loadTags.py +1 -1
  141. metadata/generated/schema/api/createBot.py +1 -1
  142. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  143. metadata/generated/schema/api/createType.py +1 -1
  144. metadata/generated/schema/api/data/__init__.py +1 -1
  145. metadata/generated/schema/api/data/createChart.py +1 -1
  146. metadata/generated/schema/api/data/createContainer.py +4 -1
  147. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  148. metadata/generated/schema/api/data/createDashboard.py +1 -1
  149. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  150. metadata/generated/schema/api/data/createDatabase.py +1 -1
  151. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  152. metadata/generated/schema/api/data/createGlossary.py +1 -1
  153. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  154. metadata/generated/schema/api/data/createMlModel.py +1 -1
  155. metadata/generated/schema/api/data/createPipeline.py +1 -1
  156. metadata/generated/schema/api/data/createQuery.py +1 -1
  157. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  158. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  159. metadata/generated/schema/api/data/createTable.py +4 -3
  160. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  161. metadata/generated/schema/api/data/createTopic.py +1 -1
  162. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  163. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  164. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  165. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  166. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  167. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  168. metadata/generated/schema/api/docStore/__init__.py +1 -1
  169. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  170. metadata/generated/schema/api/domains/__init__.py +1 -1
  171. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  172. metadata/generated/schema/api/domains/createDomain.py +1 -1
  173. metadata/generated/schema/api/feed/__init__.py +1 -1
  174. metadata/generated/schema/api/feed/closeTask.py +1 -1
  175. metadata/generated/schema/api/feed/createPost.py +1 -1
  176. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  177. metadata/generated/schema/api/feed/createThread.py +1 -1
  178. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  179. metadata/generated/schema/api/feed/threadCount.py +1 -1
  180. metadata/generated/schema/api/lineage/__init__.py +1 -1
  181. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  182. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  183. metadata/generated/schema/api/policies/__init__.py +1 -1
  184. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  185. metadata/generated/schema/api/services/__init__.py +1 -1
  186. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  187. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  188. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  189. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  190. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  191. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  192. metadata/generated/schema/api/services/createSearchService.py +1 -1
  193. metadata/generated/schema/api/services/createStorageService.py +1 -1
  194. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  195. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  196. metadata/generated/schema/api/setOwner.py +1 -1
  197. metadata/generated/schema/api/teams/__init__.py +1 -1
  198. metadata/generated/schema/api/teams/createPersona.py +1 -1
  199. metadata/generated/schema/api/teams/createRole.py +1 -1
  200. metadata/generated/schema/api/teams/createTeam.py +1 -1
  201. metadata/generated/schema/api/teams/createUser.py +2 -2
  202. metadata/generated/schema/api/tests/__init__.py +1 -1
  203. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  204. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  205. metadata/generated/schema/api/tests/createTestCase.py +2 -2
  206. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  207. metadata/generated/schema/api/tests/createTestDefinition.py +2 -2
  208. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  209. metadata/generated/schema/api/voteRequest.py +1 -1
  210. metadata/generated/schema/auth/__init__.py +1 -1
  211. metadata/generated/schema/auth/basicAuth.py +1 -1
  212. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  213. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  214. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  215. metadata/generated/schema/auth/emailRequest.py +1 -1
  216. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  217. metadata/generated/schema/auth/generateToken.py +1 -1
  218. metadata/generated/schema/auth/jwtAuth.py +1 -1
  219. metadata/generated/schema/auth/loginRequest.py +1 -1
  220. metadata/generated/schema/auth/logoutRequest.py +1 -1
  221. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  222. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  223. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  224. metadata/generated/schema/auth/refreshToken.py +1 -1
  225. metadata/generated/schema/auth/registrationRequest.py +1 -1
  226. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  227. metadata/generated/schema/auth/revokeToken.py +1 -1
  228. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  229. metadata/generated/schema/auth/ssoAuth.py +1 -1
  230. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  231. metadata/generated/schema/configuration/__init__.py +1 -1
  232. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  233. metadata/generated/schema/configuration/authConfig.py +1 -1
  234. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  235. metadata/generated/schema/configuration/authorizerConfiguration.py +4 -1
  236. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  237. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  238. metadata/generated/schema/configuration/elasticSearchConfiguration.py +4 -1
  239. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  240. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  241. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  242. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  243. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  244. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  245. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  246. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  247. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  248. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  249. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  250. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  251. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  252. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  253. metadata/generated/schema/configuration/profilerConfiguration.py +66 -0
  254. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  255. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  256. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  257. metadata/generated/schema/configuration/themeConfiguration.py +32 -0
  258. metadata/generated/schema/configuration/uiThemePreference.py +23 -0
  259. metadata/generated/schema/dataInsight/__init__.py +1 -1
  260. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  261. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  262. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  263. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  264. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  265. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  266. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  267. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  268. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  269. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  270. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  271. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  272. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  273. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  274. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  275. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  276. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  277. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  278. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  279. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  280. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  281. metadata/generated/schema/email/__init__.py +1 -1
  282. metadata/generated/schema/email/emailRequest.py +1 -1
  283. metadata/generated/schema/email/smtpSettings.py +3 -3
  284. metadata/generated/schema/entity/__init__.py +1 -1
  285. metadata/generated/schema/entity/applications/__init__.py +1 -1
  286. metadata/generated/schema/entity/applications/app.py +1 -1
  287. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  288. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  289. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +3 -3
  290. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  291. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +5 -0
  292. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +36 -0
  293. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +31 -0
  294. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +31 -0
  295. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +36 -0
  296. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +31 -0
  297. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +28 -0
  298. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +22 -0
  299. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +30 -0
  300. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +22 -0
  301. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +22 -0
  302. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +31 -0
  303. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +22 -0
  304. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +75 -0
  305. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
  306. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  307. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  308. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  309. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  310. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  311. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  312. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  313. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  314. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  315. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  316. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  317. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  318. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  319. metadata/generated/schema/entity/automations/__init__.py +1 -1
  320. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  321. metadata/generated/schema/entity/automations/workflow.py +1 -1
  322. metadata/generated/schema/entity/bot.py +1 -1
  323. metadata/generated/schema/entity/classification/__init__.py +1 -1
  324. metadata/generated/schema/entity/classification/classification.py +2 -3
  325. metadata/generated/schema/entity/classification/tag.py +3 -9
  326. metadata/generated/schema/entity/data/__init__.py +1 -1
  327. metadata/generated/schema/entity/data/chart.py +1 -1
  328. metadata/generated/schema/entity/data/container.py +4 -1
  329. metadata/generated/schema/entity/data/dashboard.py +1 -1
  330. metadata/generated/schema/entity/data/dashboardDataModel.py +2 -2
  331. metadata/generated/schema/entity/data/database.py +1 -1
  332. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  333. metadata/generated/schema/entity/data/glossary.py +1 -1
  334. metadata/generated/schema/entity/data/glossaryTerm.py +4 -1
  335. metadata/generated/schema/entity/data/metrics.py +1 -1
  336. metadata/generated/schema/entity/data/mlmodel.py +2 -2
  337. metadata/generated/schema/entity/data/pipeline.py +1 -1
  338. metadata/generated/schema/entity/data/query.py +1 -1
  339. metadata/generated/schema/entity/data/report.py +1 -1
  340. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  341. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  342. metadata/generated/schema/entity/data/table.py +26 -24
  343. metadata/generated/schema/entity/data/topic.py +1 -1
  344. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  345. metadata/generated/schema/entity/docStore/document.py +1 -1
  346. metadata/generated/schema/entity/domains/__init__.py +1 -1
  347. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  348. metadata/generated/schema/entity/domains/domain.py +1 -1
  349. metadata/generated/schema/entity/events/__init__.py +1 -1
  350. metadata/generated/schema/entity/events/webhook.py +1 -1
  351. metadata/generated/schema/entity/feed/__init__.py +1 -1
  352. metadata/generated/schema/entity/feed/assets.py +18 -0
  353. metadata/generated/schema/entity/feed/customProperty.py +17 -0
  354. metadata/generated/schema/entity/feed/description.py +24 -0
  355. metadata/generated/schema/entity/feed/domain.py +23 -0
  356. metadata/generated/schema/entity/feed/entityInfo.py +19 -0
  357. metadata/generated/schema/entity/feed/owner.py +23 -0
  358. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  359. metadata/generated/schema/entity/feed/tag.py +23 -0
  360. metadata/generated/schema/entity/feed/testCaseResult.py +26 -0
  361. metadata/generated/schema/entity/feed/thread.py +81 -2
  362. metadata/generated/schema/entity/policies/__init__.py +1 -1
  363. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  364. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +3 -1
  365. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  366. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  367. metadata/generated/schema/entity/policies/filters.py +3 -3
  368. metadata/generated/schema/entity/policies/policy.py +1 -1
  369. metadata/generated/schema/entity/services/__init__.py +1 -1
  370. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  372. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  373. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  374. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  375. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +33 -2
  385. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +3 -0
  386. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +37 -0
  387. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +25 -0
  388. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +37 -0
  389. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +37 -0
  390. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +38 -0
  391. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +6 -15
  392. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +2 -2
  417. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +4 -13
  419. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +4 -1
  421. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +2 -15
  423. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +4 -1
  435. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +4 -13
  437. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +2 -15
  440. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +11 -1
  441. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +2 -15
  442. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +12 -3
  452. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  455. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +7 -1
  457. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  461. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  462. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +7 -3
  463. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  468. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +61 -0
  483. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +73 -0
  485. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  488. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  490. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  491. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  492. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  495. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  496. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  497. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  498. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  499. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +5 -2
  500. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  501. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  502. metadata/generated/schema/entity/services/dashboardService.py +4 -1
  503. metadata/generated/schema/entity/services/databaseService.py +1 -1
  504. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  505. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  506. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  507. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  508. metadata/generated/schema/entity/services/messagingService.py +1 -1
  509. metadata/generated/schema/entity/services/metadataService.py +1 -1
  510. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  511. metadata/generated/schema/entity/services/pipelineService.py +7 -1
  512. metadata/generated/schema/entity/services/searchService.py +1 -1
  513. metadata/generated/schema/entity/services/serviceType.py +1 -1
  514. metadata/generated/schema/entity/services/storageService.py +1 -1
  515. metadata/generated/schema/entity/teams/__init__.py +1 -1
  516. metadata/generated/schema/entity/teams/persona.py +1 -1
  517. metadata/generated/schema/entity/teams/role.py +1 -1
  518. metadata/generated/schema/entity/teams/team.py +1 -1
  519. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  520. metadata/generated/schema/entity/teams/user.py +2 -2
  521. metadata/generated/schema/entity/type.py +1 -1
  522. metadata/generated/schema/entity/utils/__init__.py +1 -1
  523. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  524. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  525. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  526. metadata/generated/schema/events/__init__.py +1 -1
  527. metadata/generated/schema/events/alertMetrics.py +1 -1
  528. metadata/generated/schema/events/api/__init__.py +1 -1
  529. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  530. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  531. metadata/generated/schema/events/eventFilterRule.py +10 -1
  532. metadata/generated/schema/events/eventSubscription.py +6 -2
  533. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  534. metadata/generated/schema/events/failedEvent.py +1 -1
  535. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  536. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  537. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  538. metadata/generated/schema/metadataIngestion/application.py +1 -1
  539. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  540. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +19 -6
  541. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  542. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +37 -1
  543. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +23 -23
  544. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  545. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  546. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  547. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  548. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  549. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  550. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  551. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  552. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  553. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  554. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  555. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  556. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  557. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  558. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +22 -4
  559. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  561. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  562. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  563. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  564. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  565. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  566. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  567. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  568. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  569. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  572. metadata/generated/schema/monitoring/__init__.py +1 -1
  573. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  574. metadata/generated/schema/security/__init__.py +1 -1
  575. metadata/generated/schema/security/client/__init__.py +1 -1
  576. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  577. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  578. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  579. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  580. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  581. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  582. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  583. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  584. metadata/generated/schema/security/credentials/__init__.py +1 -1
  585. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  586. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  587. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  588. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  589. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  590. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  591. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  592. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  593. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  594. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  595. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  596. metadata/generated/schema/security/secrets/__init__.py +1 -1
  597. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  598. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  599. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  600. metadata/generated/schema/security/securityConfiguration.py +1 -1
  601. metadata/generated/schema/security/ssl/__init__.py +1 -1
  602. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +16 -4
  603. metadata/generated/schema/security/ssl/verifySSLConfig.py +10 -1
  604. metadata/generated/schema/settings/__init__.py +1 -1
  605. metadata/generated/schema/settings/settings.py +5 -2
  606. metadata/generated/schema/system/__init__.py +1 -1
  607. metadata/generated/schema/system/entityError.py +1 -1
  608. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  609. metadata/generated/schema/system/indexingError.py +1 -1
  610. metadata/generated/schema/system/ui/__init__.py +1 -1
  611. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  612. metadata/generated/schema/system/ui/page.py +1 -1
  613. metadata/generated/schema/system/validationResponse.py +1 -1
  614. metadata/generated/schema/tests/__init__.py +1 -1
  615. metadata/generated/schema/tests/assigned.py +1 -1
  616. metadata/generated/schema/tests/basic.py +23 -7
  617. metadata/generated/schema/tests/customMetric.py +1 -1
  618. metadata/generated/schema/tests/resolved.py +1 -1
  619. metadata/generated/schema/tests/testCase.py +13 -2
  620. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  621. metadata/generated/schema/tests/testDefinition.py +22 -2
  622. metadata/generated/schema/tests/testSuite.py +1 -1
  623. metadata/generated/schema/type/__init__.py +1 -1
  624. metadata/generated/schema/type/auditLog.py +1 -1
  625. metadata/generated/schema/type/basic.py +7 -1
  626. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  627. metadata/generated/schema/type/changeEvent.py +1 -1
  628. metadata/generated/schema/type/changeEventType.py +1 -1
  629. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  630. metadata/generated/schema/type/csvDocumentation.py +1 -1
  631. metadata/generated/schema/type/csvErrorType.py +1 -1
  632. metadata/generated/schema/type/csvFile.py +1 -1
  633. metadata/generated/schema/type/csvImportResult.py +1 -1
  634. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  635. metadata/generated/schema/type/customProperties/complexTypes.py +86 -0
  636. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  637. metadata/generated/schema/type/customProperty.py +3 -3
  638. metadata/generated/schema/type/dailyCount.py +1 -1
  639. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  640. metadata/generated/schema/type/entityHierarchy.py +39 -0
  641. metadata/generated/schema/type/entityHistory.py +1 -1
  642. metadata/generated/schema/type/entityLineage.py +3 -1
  643. metadata/generated/schema/type/entityReference.py +1 -1
  644. metadata/generated/schema/type/entityReferenceList.py +1 -1
  645. metadata/generated/schema/type/entityRelationship.py +1 -1
  646. metadata/generated/schema/type/entityUsage.py +1 -1
  647. metadata/generated/schema/type/filterPattern.py +1 -1
  648. metadata/generated/schema/type/function.py +1 -1
  649. metadata/generated/schema/type/include.py +1 -1
  650. metadata/generated/schema/type/jdbcConnection.py +1 -1
  651. metadata/generated/schema/type/lifeCycle.py +1 -1
  652. metadata/generated/schema/type/paging.py +4 -1
  653. metadata/generated/schema/type/profile.py +1 -1
  654. metadata/generated/schema/type/queryParserData.py +1 -1
  655. metadata/generated/schema/type/reaction.py +1 -1
  656. metadata/generated/schema/type/schedule.py +1 -1
  657. metadata/generated/schema/type/schema.py +1 -1
  658. metadata/generated/schema/type/tableQuery.py +1 -1
  659. metadata/generated/schema/type/tableUsageCount.py +1 -1
  660. metadata/generated/schema/type/tagLabel.py +1 -1
  661. metadata/generated/schema/type/usageDetails.py +1 -1
  662. metadata/generated/schema/type/usageRequest.py +1 -1
  663. metadata/generated/schema/type/votes.py +1 -1
  664. metadata/great_expectations/action.py +0 -1
  665. metadata/ingestion/api/delete.py +33 -1
  666. metadata/ingestion/api/step.py +6 -1
  667. metadata/ingestion/api/topology_runner.py +122 -25
  668. metadata/ingestion/bulksink/metadata_usage.py +6 -1
  669. metadata/ingestion/lineage/models.py +34 -1
  670. metadata/ingestion/lineage/parser.py +15 -8
  671. metadata/ingestion/lineage/sql_lineage.py +21 -3
  672. metadata/ingestion/models/custom_properties.py +3 -0
  673. metadata/ingestion/models/life_cycle.py +4 -1
  674. metadata/ingestion/models/patch_request.py +177 -35
  675. metadata/ingestion/models/topology.py +81 -1
  676. metadata/ingestion/ometa/client.py +3 -0
  677. metadata/ingestion/ometa/mixins/es_mixin.py +95 -42
  678. metadata/ingestion/ometa/mixins/lineage_mixin.py +169 -4
  679. metadata/ingestion/ometa/mixins/patch_mixin.py +9 -4
  680. metadata/ingestion/ometa/mixins/server_mixin.py +50 -5
  681. metadata/ingestion/ometa/mixins/tests_mixin.py +55 -1
  682. metadata/ingestion/ometa/mixins/user_mixin.py +18 -6
  683. metadata/ingestion/ometa/ometa_api.py +6 -1
  684. metadata/ingestion/ometa/routes.py +3 -0
  685. metadata/ingestion/ometa/utils.py +2 -0
  686. metadata/ingestion/processor/query_parser.py +36 -26
  687. metadata/ingestion/sink/file.py +4 -1
  688. metadata/ingestion/sink/metadata_rest.py +19 -5
  689. metadata/ingestion/source/dashboard/dashboard_service.py +75 -16
  690. metadata/ingestion/source/dashboard/domodashboard/metadata.py +7 -5
  691. metadata/ingestion/source/dashboard/lightdash/metadata.py +7 -5
  692. metadata/ingestion/source/dashboard/looker/metadata.py +25 -18
  693. metadata/ingestion/source/dashboard/metabase/client.py +39 -8
  694. metadata/ingestion/source/dashboard/metabase/connection.py +2 -1
  695. metadata/ingestion/source/dashboard/metabase/metadata.py +9 -7
  696. metadata/ingestion/source/dashboard/metabase/models.py +1 -1
  697. metadata/ingestion/source/dashboard/mode/metadata.py +7 -5
  698. metadata/ingestion/source/dashboard/mstr/metadata.py +10 -5
  699. metadata/ingestion/source/dashboard/powerbi/client.py +13 -3
  700. metadata/ingestion/source/dashboard/powerbi/connection.py +13 -5
  701. metadata/ingestion/source/dashboard/powerbi/file_client.py +327 -0
  702. metadata/ingestion/source/dashboard/powerbi/metadata.py +156 -53
  703. metadata/ingestion/source/dashboard/powerbi/models.py +26 -0
  704. metadata/ingestion/source/dashboard/qlikcloud/__init__.py +0 -0
  705. metadata/ingestion/source/dashboard/qlikcloud/client.py +167 -0
  706. metadata/ingestion/source/dashboard/qlikcloud/connection.py +56 -0
  707. metadata/ingestion/source/dashboard/qlikcloud/constants.py +66 -0
  708. metadata/ingestion/source/dashboard/qlikcloud/metadata.py +249 -0
  709. metadata/ingestion/source/dashboard/qlikcloud/models.py +33 -0
  710. metadata/ingestion/source/dashboard/qliksense/client.py +9 -26
  711. metadata/ingestion/source/dashboard/qliksense/metadata.py +30 -17
  712. metadata/ingestion/source/dashboard/qliksense/models.py +1 -0
  713. metadata/ingestion/source/dashboard/quicksight/metadata.py +105 -91
  714. metadata/ingestion/source/dashboard/quicksight/models.py +43 -4
  715. metadata/ingestion/source/dashboard/redash/metadata.py +10 -5
  716. metadata/ingestion/source/dashboard/superset/api_source.py +10 -5
  717. metadata/ingestion/source/dashboard/superset/db_source.py +12 -6
  718. metadata/ingestion/source/dashboard/superset/metadata.py +8 -1
  719. metadata/ingestion/source/dashboard/superset/mixin.py +20 -3
  720. metadata/ingestion/source/dashboard/superset/models.py +2 -0
  721. metadata/ingestion/source/dashboard/superset/queries.py +23 -6
  722. metadata/ingestion/source/dashboard/tableau/metadata.py +71 -10
  723. metadata/ingestion/source/database/athena/client.py +1 -1
  724. metadata/ingestion/source/database/athena/lineage.py +2 -0
  725. metadata/ingestion/source/database/athena/metadata.py +83 -15
  726. metadata/ingestion/source/database/athena/models.py +1 -1
  727. metadata/ingestion/source/database/athena/query_parser.py +6 -1
  728. metadata/ingestion/source/database/athena/usage.py +2 -0
  729. metadata/ingestion/source/database/azuresql/connection.py +4 -1
  730. metadata/ingestion/source/database/azuresql/metadata.py +4 -2
  731. metadata/ingestion/source/database/azuresql/query_parser.py +4 -1
  732. metadata/ingestion/source/database/bigquery/helper.py +23 -12
  733. metadata/ingestion/source/database/bigquery/incremental_table_processor.py +86 -0
  734. metadata/ingestion/source/database/bigquery/metadata.py +226 -52
  735. metadata/ingestion/source/database/bigquery/models.py +35 -1
  736. metadata/ingestion/source/database/bigquery/queries.py +25 -12
  737. metadata/ingestion/source/database/bigquery/query_parser.py +3 -1
  738. metadata/ingestion/source/database/bigtable/metadata.py +6 -4
  739. metadata/ingestion/source/database/clickhouse/metadata.py +29 -17
  740. metadata/ingestion/source/database/clickhouse/query_parser.py +4 -2
  741. metadata/ingestion/source/database/common_db_source.py +120 -65
  742. metadata/ingestion/source/database/common_nosql_source.py +15 -15
  743. metadata/ingestion/source/database/couchbase/metadata.py +8 -6
  744. metadata/ingestion/source/database/database_service.py +43 -27
  745. metadata/ingestion/source/database/databricks/metadata.py +80 -34
  746. metadata/ingestion/source/database/databricks/queries.py +0 -1
  747. metadata/ingestion/source/database/databricks/query_parser.py +9 -2
  748. metadata/ingestion/source/database/datalake/connection.py +1 -2
  749. metadata/ingestion/source/database/datalake/metadata.py +21 -19
  750. metadata/ingestion/source/database/db2/metadata.py +4 -1
  751. metadata/ingestion/source/database/dbt/dbt_service.py +13 -11
  752. metadata/ingestion/source/database/dbt/metadata.py +97 -33
  753. metadata/ingestion/source/database/dbt/models.py +10 -1
  754. metadata/ingestion/source/database/deltalake/connection.py +2 -2
  755. metadata/ingestion/source/database/deltalake/metadata.py +19 -17
  756. metadata/ingestion/source/database/domodatabase/metadata.py +16 -11
  757. metadata/ingestion/source/database/doris/connection.py +0 -10
  758. metadata/ingestion/source/database/doris/metadata.py +23 -4
  759. metadata/ingestion/source/database/druid/metadata.py +5 -1
  760. metadata/ingestion/source/database/dynamodb/metadata.py +3 -1
  761. metadata/ingestion/source/database/extended_sample_data.py +4 -2
  762. metadata/ingestion/source/database/external_table_lineage_mixin.py +82 -0
  763. metadata/ingestion/source/database/glue/metadata.py +23 -21
  764. metadata/ingestion/source/database/greenplum/connection.py +0 -10
  765. metadata/ingestion/source/database/greenplum/metadata.py +26 -11
  766. metadata/ingestion/source/database/hive/metadata.py +31 -4
  767. metadata/ingestion/source/database/iceberg/helper.py +42 -5
  768. metadata/ingestion/source/database/iceberg/metadata.py +18 -16
  769. metadata/ingestion/source/database/iceberg/models.py +12 -4
  770. metadata/ingestion/source/database/impala/metadata.py +4 -1
  771. metadata/ingestion/source/database/incremental_metadata_extraction.py +144 -0
  772. metadata/ingestion/source/database/life_cycle_query_mixin.py +39 -36
  773. metadata/ingestion/source/database/mariadb/metadata.py +5 -1
  774. metadata/ingestion/source/database/mongodb/metadata.py +4 -2
  775. metadata/ingestion/source/database/mssql/metadata.py +15 -7
  776. metadata/ingestion/source/database/mssql/queries.py +18 -16
  777. metadata/ingestion/source/database/mssql/query_parser.py +4 -1
  778. metadata/ingestion/source/database/mssql/utils.py +3 -0
  779. metadata/ingestion/source/database/mysql/connection.py +0 -11
  780. metadata/ingestion/source/database/mysql/metadata.py +9 -2
  781. metadata/ingestion/source/database/oracle/connection.py +2 -2
  782. metadata/ingestion/source/database/oracle/metadata.py +35 -17
  783. metadata/ingestion/source/database/oracle/queries.py +14 -13
  784. metadata/ingestion/source/database/oracle/query_parser.py +4 -1
  785. metadata/ingestion/source/database/pinotdb/metadata.py +4 -1
  786. metadata/ingestion/source/database/postgres/connection.py +0 -10
  787. metadata/ingestion/source/database/postgres/metadata.py +38 -15
  788. metadata/ingestion/source/database/postgres/queries.py +17 -1
  789. metadata/ingestion/source/database/postgres/query_parser.py +4 -2
  790. metadata/ingestion/source/database/postgres/utils.py +98 -0
  791. metadata/ingestion/source/database/presto/connection.py +14 -0
  792. metadata/ingestion/source/database/presto/metadata.py +8 -5
  793. metadata/ingestion/source/database/query/lineage.py +5 -1
  794. metadata/ingestion/source/database/query/usage.py +4 -1
  795. metadata/ingestion/source/database/redshift/connection.py +0 -10
  796. metadata/ingestion/source/database/redshift/incremental_table_processor.py +192 -0
  797. metadata/ingestion/source/database/redshift/metadata.py +175 -26
  798. metadata/ingestion/source/database/redshift/models.py +74 -1
  799. metadata/ingestion/source/database/redshift/queries.py +17 -2
  800. metadata/ingestion/source/database/redshift/query_parser.py +3 -1
  801. metadata/ingestion/source/database/redshift/utils.py +13 -7
  802. metadata/ingestion/source/database/salesforce/metadata.py +13 -11
  803. metadata/ingestion/source/database/sample_data.py +56 -13
  804. metadata/ingestion/source/database/sample_usage.py +3 -1
  805. metadata/ingestion/source/database/saphana/connection.py +12 -8
  806. metadata/ingestion/source/database/saphana/metadata.py +6 -5
  807. metadata/ingestion/source/database/sas/metadata.py +8 -3
  808. metadata/ingestion/source/database/singlestore/metadata.py +5 -1
  809. metadata/ingestion/source/database/snowflake/metadata.py +193 -59
  810. metadata/ingestion/source/database/snowflake/models.py +24 -1
  811. metadata/ingestion/source/database/snowflake/queries.py +147 -25
  812. metadata/ingestion/source/database/snowflake/query_parser.py +3 -1
  813. metadata/ingestion/source/database/snowflake/utils.py +187 -11
  814. metadata/ingestion/source/database/sql_column_handler.py +2 -0
  815. metadata/ingestion/source/database/sqlalchemy_source.py +4 -4
  816. metadata/ingestion/source/database/sqlite/metadata.py +5 -1
  817. metadata/ingestion/source/database/stored_procedures_mixin.py +11 -9
  818. metadata/ingestion/source/database/trino/connection.py +24 -1
  819. metadata/ingestion/source/database/trino/metadata.py +7 -4
  820. metadata/ingestion/source/database/trino/query_parser.py +4 -1
  821. metadata/ingestion/source/database/unitycatalog/lineage.py +3 -1
  822. metadata/ingestion/source/database/unitycatalog/metadata.py +43 -32
  823. metadata/ingestion/source/database/unitycatalog/query_parser.py +4 -1
  824. metadata/ingestion/source/database/vertica/metadata.py +4 -2
  825. metadata/ingestion/source/database/vertica/query_parser.py +4 -2
  826. metadata/ingestion/source/messaging/common_broker_source.py +45 -6
  827. metadata/ingestion/source/messaging/kafka/connection.py +12 -17
  828. metadata/ingestion/source/messaging/kafka/metadata.py +21 -1
  829. metadata/ingestion/source/messaging/kinesis/metadata.py +11 -5
  830. metadata/ingestion/source/messaging/messaging_service.py +3 -3
  831. metadata/ingestion/source/messaging/redpanda/metadata.py +5 -1
  832. metadata/ingestion/source/metadata/amundsen/metadata.py +3 -1
  833. metadata/ingestion/source/metadata/atlas/metadata.py +3 -1
  834. metadata/ingestion/source/mlmodel/mlflow/metadata.py +4 -2
  835. metadata/ingestion/source/mlmodel/mlmodel_service.py +3 -3
  836. metadata/ingestion/source/mlmodel/sagemaker/metadata.py +8 -3
  837. metadata/ingestion/source/pipeline/airbyte/metadata.py +9 -7
  838. metadata/ingestion/source/pipeline/airflow/lineage_parser.py +54 -1
  839. metadata/ingestion/source/pipeline/airflow/metadata.py +30 -14
  840. metadata/ingestion/source/pipeline/dagster/metadata.py +17 -15
  841. metadata/ingestion/source/pipeline/dagster/queries.py +53 -82
  842. metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +10 -8
  843. metadata/ingestion/source/pipeline/domopipeline/metadata.py +6 -4
  844. metadata/ingestion/source/pipeline/fivetran/metadata.py +6 -4
  845. metadata/ingestion/source/pipeline/gluepipeline/metadata.py +7 -5
  846. metadata/ingestion/source/pipeline/kafkaconnect/__init__.py +0 -0
  847. metadata/ingestion/source/pipeline/kafkaconnect/client.py +278 -0
  848. metadata/ingestion/source/pipeline/kafkaconnect/connection.py +58 -0
  849. metadata/ingestion/source/pipeline/kafkaconnect/metadata.py +319 -0
  850. metadata/ingestion/source/pipeline/kafkaconnect/models.py +62 -0
  851. metadata/ingestion/source/pipeline/nifi/metadata.py +4 -2
  852. metadata/ingestion/source/pipeline/openlineage/__init__.py +0 -0
  853. metadata/ingestion/source/pipeline/openlineage/connection.py +88 -0
  854. metadata/ingestion/source/pipeline/openlineage/metadata.py +520 -0
  855. metadata/ingestion/source/pipeline/openlineage/models.py +88 -0
  856. metadata/ingestion/source/pipeline/openlineage/utils.py +59 -0
  857. metadata/ingestion/source/pipeline/pipeline_service.py +13 -3
  858. metadata/ingestion/source/pipeline/spline/metadata.py +8 -6
  859. metadata/ingestion/source/search/elasticsearch/metadata.py +8 -6
  860. metadata/ingestion/source/search/search_service.py +3 -3
  861. metadata/ingestion/source/sqa_types.py +20 -1
  862. metadata/ingestion/source/storage/s3/connection.py +10 -1
  863. metadata/ingestion/source/storage/s3/metadata.py +45 -30
  864. metadata/ingestion/source/storage/s3/models.py +8 -4
  865. metadata/ingestion/source/storage/storage_service.py +8 -5
  866. metadata/ingestion/stage/table_usage.py +6 -1
  867. metadata/mixins/pandas/pandas_mixin.py +3 -3
  868. metadata/pii/processor.py +6 -1
  869. metadata/profiler/__init__.py +0 -0
  870. metadata/profiler/adaptors/__init__.py +0 -0
  871. metadata/profiler/adaptors/adaptor_factory.py +43 -0
  872. metadata/profiler/adaptors/dynamodb.py +40 -0
  873. metadata/profiler/adaptors/factory.py +76 -0
  874. metadata/profiler/adaptors/mongodb.py +178 -0
  875. metadata/profiler/adaptors/nosql_adaptor.py +65 -0
  876. metadata/profiler/api/models.py +1 -1
  877. metadata/profiler/factory.py +41 -0
  878. metadata/profiler/interface/nosql/profiler_interface.py +236 -0
  879. metadata/profiler/interface/pandas/profiler_interface.py +51 -30
  880. metadata/profiler/interface/profiler_interface.py +6 -2
  881. metadata/profiler/interface/profiler_interface_factory.py +11 -22
  882. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +77 -0
  883. metadata/profiler/interface/sqlalchemy/profiler_interface.py +2 -1
  884. metadata/profiler/interface/sqlalchemy/unity_catalog/profiler_interface.py +3 -6
  885. metadata/profiler/metrics/composed/distinct_ratio.py +2 -1
  886. metadata/profiler/metrics/composed/duplicate_count.py +2 -1
  887. metadata/profiler/metrics/composed/ilike_ratio.py +2 -1
  888. metadata/profiler/metrics/composed/iqr.py +2 -1
  889. metadata/profiler/metrics/composed/like_ratio.py +2 -1
  890. metadata/profiler/metrics/composed/non_parametric_skew.py +2 -1
  891. metadata/profiler/metrics/composed/null_ratio.py +7 -4
  892. metadata/profiler/metrics/composed/unique_ratio.py +2 -1
  893. metadata/profiler/metrics/core.py +14 -1
  894. metadata/profiler/metrics/hybrid/histogram.py +2 -1
  895. metadata/profiler/metrics/registry.py +4 -0
  896. metadata/profiler/metrics/static/column_count.py +2 -1
  897. metadata/profiler/metrics/static/column_names.py +2 -1
  898. metadata/profiler/metrics/static/count.py +2 -1
  899. metadata/profiler/metrics/static/count_in_set.py +2 -1
  900. metadata/profiler/metrics/static/distinct_count.py +11 -2
  901. metadata/profiler/metrics/static/ilike_count.py +2 -1
  902. metadata/profiler/metrics/static/like_count.py +2 -1
  903. metadata/profiler/metrics/static/max.py +26 -7
  904. metadata/profiler/metrics/static/max_length.py +3 -2
  905. metadata/profiler/metrics/static/mean.py +30 -22
  906. metadata/profiler/metrics/static/min.py +25 -6
  907. metadata/profiler/metrics/static/min_length.py +3 -2
  908. metadata/profiler/metrics/static/not_like_count.py +2 -1
  909. metadata/profiler/metrics/static/not_regexp_match_count.py +2 -1
  910. metadata/profiler/metrics/static/null_count.py +2 -1
  911. metadata/profiler/metrics/static/null_missing_count.py +73 -0
  912. metadata/profiler/metrics/static/regexp_match_count.py +2 -1
  913. metadata/profiler/metrics/static/row_count.py +9 -3
  914. metadata/profiler/metrics/static/stddev.py +2 -1
  915. metadata/profiler/metrics/static/sum.py +22 -4
  916. metadata/profiler/metrics/static/unique_count.py +13 -4
  917. metadata/profiler/metrics/system/system.py +2 -1
  918. metadata/profiler/metrics/window/first_quartile.py +2 -1
  919. metadata/profiler/metrics/window/median.py +8 -2
  920. metadata/profiler/metrics/window/third_quartile.py +2 -1
  921. metadata/profiler/orm/converter/base.py +4 -1
  922. metadata/profiler/orm/converter/bigquery/converter.py +11 -0
  923. metadata/profiler/orm/converter/common.py +47 -0
  924. metadata/profiler/orm/converter/converter_registry.py +2 -0
  925. metadata/profiler/orm/converter/redshift/converter.py +48 -0
  926. metadata/profiler/orm/converter/snowflake/converter.py +13 -0
  927. metadata/profiler/orm/functions/conn_test.py +1 -1
  928. metadata/profiler/orm/functions/sum.py +4 -2
  929. metadata/profiler/orm/functions/table_metric_computer.py +13 -1
  930. metadata/profiler/orm/registry.py +6 -3
  931. metadata/profiler/processor/core.py +58 -97
  932. metadata/profiler/processor/default.py +5 -0
  933. metadata/profiler/processor/handle_partition.py +3 -3
  934. metadata/profiler/processor/metric_filter.py +267 -0
  935. metadata/profiler/processor/processor.py +4 -2
  936. metadata/profiler/processor/sampler/nosql/sampler.py +72 -0
  937. metadata/profiler/processor/sampler/pandas/sampler.py +5 -6
  938. metadata/profiler/processor/sampler/sampler_factory.py +9 -0
  939. metadata/profiler/processor/sampler/sampler_interface.py +2 -2
  940. metadata/profiler/processor/sampler/sqlalchemy/sampler.py +3 -3
  941. metadata/profiler/source/base/profiler_source.py +11 -3
  942. metadata/profiler/source/databricks/profiler_source.py +5 -1
  943. metadata/profiler/source/metadata.py +8 -1
  944. metadata/profiler/source/metadata_ext.py +2 -0
  945. metadata/readers/dataframe/avro.py +5 -5
  946. metadata/readers/dataframe/json.py +1 -1
  947. metadata/readers/file/adls.py +20 -0
  948. metadata/readers/file/base.py +6 -0
  949. metadata/readers/file/config_source_factory.py +12 -0
  950. metadata/readers/file/gcs.py +18 -0
  951. metadata/readers/file/local.py +12 -0
  952. metadata/readers/file/s3.py +16 -0
  953. metadata/utils/constants.py +32 -24
  954. metadata/utils/datalake/datalake_utils.py +40 -4
  955. metadata/utils/elasticsearch.py +8 -0
  956. metadata/utils/execution_time_tracker.py +69 -28
  957. metadata/utils/fqn.py +61 -7
  958. metadata/utils/helpers.py +2 -0
  959. metadata/utils/importer.py +15 -6
  960. metadata/utils/logger.py +1 -1
  961. metadata/utils/lru_cache.py +2 -0
  962. metadata/utils/messaging_utils.py +43 -0
  963. metadata/utils/partition.py +93 -28
  964. metadata/utils/sqlalchemy_utils.py +60 -1
  965. metadata/utils/ssl_manager.py +181 -0
  966. metadata/utils/stored_procedures.py +1 -1
  967. metadata/utils/tag_utils.py +30 -13
  968. metadata/utils/test_utils.py +65 -0
  969. metadata/workflow/application.py +6 -1
  970. metadata/workflow/base.py +1 -1
  971. metadata/workflow/ingestion.py +19 -0
  972. metadata/workflow/metadata.py +9 -1
  973. metadata/workflow/output_handler.py +24 -2
  974. metadata/workflow/workflow_output_handler.py +2 -0
  975. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/METADATA +331 -326
  976. openmetadata_ingestion-1.4.0.0.dist-info/RECORD +1501 -0
  977. metadata/applications/auto_tagger.py +0 -212
  978. metadata/cli/backup.py +0 -202
  979. metadata/cli/db_dump.py +0 -239
  980. metadata/cli/docker.py +0 -382
  981. metadata/cli/openmetadata_dag_config_migration.py +0 -109
  982. metadata/cli/openmetadata_imports_migration.py +0 -71
  983. metadata/cli/utils.py +0 -56
  984. metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +0 -28
  985. openmetadata_ingestion-1.3.3.0rc2.dist-info/RECORD +0 -1435
  986. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/LICENSE +0 -0
  987. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/WHEEL +0 -0
  988. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/entry_points.txt +0 -0
  989. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/top_level.txt +0 -0
@@ -37,7 +37,7 @@ from metadata.ingestion.models.pipeline_status import OMetaPipelineStatus
37
37
  from metadata.ingestion.models.topology import (
38
38
  NodeStage,
39
39
  ServiceTopology,
40
- TopologyContext,
40
+ TopologyContextManager,
41
41
  TopologyNode,
42
42
  )
43
43
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
@@ -116,7 +116,7 @@ class PipelineServiceSource(TopologyRunnerMixin, Source, ABC):
116
116
  service_connection: PipelineConnection.__fields__["config"].type_
117
117
 
118
118
  topology = PipelineServiceTopology()
119
- context = TopologyContext.create(topology)
119
+ context = TopologyContextManager(topology)
120
120
  pipeline_source_state: Set = set()
121
121
 
122
122
  def __init__(
@@ -228,9 +228,19 @@ class PipelineServiceSource(TopologyRunnerMixin, Source, ABC):
228
228
  entity_type=Pipeline,
229
229
  entity_source_state=self.pipeline_source_state,
230
230
  mark_deleted_entity=self.source_config.markDeletedPipelines,
231
- params={"service": self.context.pipeline_service},
231
+ params={"service": self.context.get().pipeline_service},
232
232
  )
233
233
 
234
+ def get_db_service_names(self) -> List[str]:
235
+ """
236
+ Get the list of db service names
237
+ """
238
+ return (
239
+ self.source_config.lineageInformation.dbServiceNames or []
240
+ if self.source_config.lineageInformation
241
+ else []
242
+ )
243
+
234
244
  def prepare(self):
235
245
  """
236
246
  Method to implement any required logic before starting the ingestion process
@@ -56,7 +56,9 @@ class SplineSource(PipelineServiceSource):
56
56
  """
57
57
 
58
58
  @classmethod
59
- def create(cls, config_dict, metadata: OpenMetadata):
59
+ def create(
60
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
61
+ ):
60
62
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
61
63
  connection: SplineConnection = config.serviceConnection.__root__.config
62
64
  if not isinstance(connection, SplineConnection):
@@ -98,7 +100,7 @@ class SplineSource(PipelineServiceSource):
98
100
  displayName=pipeline_details.applicationName,
99
101
  sourceUrl=connection_url,
100
102
  tasks=self.get_connections_jobs(pipeline_details, connection_url),
101
- service=self.context.pipeline_service,
103
+ service=self.context.get().pipeline_service,
102
104
  )
103
105
  yield Either(right=pipeline_request)
104
106
  self.register_record(pipeline_request=pipeline_request)
@@ -113,7 +115,7 @@ class SplineSource(PipelineServiceSource):
113
115
  ) -> Optional[Table]:
114
116
  if not table_name:
115
117
  return None
116
- for service_name in self.source_config.dbServiceNames:
118
+ for service_name in self.get_db_service_names():
117
119
  table_fqn = fqn.build(
118
120
  metadata=self.metadata,
119
121
  entity_type=Table,
@@ -163,7 +165,7 @@ class SplineSource(PipelineServiceSource):
163
165
  """
164
166
  Parse all the executions available and create lineage
165
167
  """
166
- if not self.source_config.dbServiceNames:
168
+ if not self.get_db_service_names():
167
169
  return
168
170
  lineage_details = self.client.get_lineage_details(
169
171
  pipeline_details.executionPlanId
@@ -222,8 +224,8 @@ class SplineSource(PipelineServiceSource):
222
224
  pipeline_fqn = fqn.build(
223
225
  metadata=self.metadata,
224
226
  entity_type=Pipeline,
225
- service_name=self.context.pipeline_service,
226
- pipeline_name=self.context.pipeline,
227
+ service_name=self.context.get().pipeline_service,
228
+ pipeline_name=self.context.get().pipeline,
227
229
  )
228
230
  pipeline_entity = self.metadata.get_by_name(
229
231
  entity=Pipeline, fqn=pipeline_fqn
@@ -56,7 +56,9 @@ class ElasticsearchSource(SearchServiceSource):
56
56
  self.client: Elasticsearch = self.connection
57
57
 
58
58
  @classmethod
59
- def create(cls, config_dict, metadata: OpenMetadata):
59
+ def create(
60
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
61
+ ):
60
62
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
61
63
  connection: ElasticsearchConnection = config.serviceConnection.__root__.config
62
64
  if not isinstance(connection, ElasticsearchConnection):
@@ -96,7 +98,7 @@ class ElasticsearchSource(SearchServiceSource):
96
98
  searchIndexSettings=search_index_details.get(index_name, {}).get(
97
99
  "settings", {}
98
100
  ),
99
- service=self.context.search_service,
101
+ service=self.context.get().search_service,
100
102
  fields=parse_es_index_mapping(
101
103
  search_index_details.get(index_name, {}).get("mappings")
102
104
  ),
@@ -110,9 +112,9 @@ class ElasticsearchSource(SearchServiceSource):
110
112
  """
111
113
  Method to Get Sample Data of Search Index Entity
112
114
  """
113
- if self.source_config.includeSampleData and self.context.search_index:
115
+ if self.source_config.includeSampleData and self.context.get().search_index:
114
116
  sample_data = self.client.search(
115
- index=self.context.search_index,
117
+ index=self.context.get().search_index,
116
118
  q=WILDCARD_SEARCH,
117
119
  size=self.source_config.sampleSize,
118
120
  request_timeout=self.service_connection.connectionTimeoutSecs,
@@ -121,8 +123,8 @@ class ElasticsearchSource(SearchServiceSource):
121
123
  search_index_fqn = fqn.build(
122
124
  metadata=self.metadata,
123
125
  entity_type=SearchIndex,
124
- service_name=self.context.search_service,
125
- search_index_name=self.context.search_index,
126
+ service_name=self.context.get().search_service,
127
+ search_index_name=self.context.get().search_index,
126
128
  )
127
129
  search_index_entity = self.metadata.get_by_name(
128
130
  entity=SearchIndex, fqn=search_index_fqn
@@ -43,7 +43,7 @@ from metadata.ingestion.models.search_index_data import OMetaIndexSampleData
43
43
  from metadata.ingestion.models.topology import (
44
44
  NodeStage,
45
45
  ServiceTopology,
46
- TopologyContext,
46
+ TopologyContextManager,
47
47
  TopologyNode,
48
48
  )
49
49
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
@@ -110,7 +110,7 @@ class SearchServiceSource(TopologyRunnerMixin, Source, ABC):
110
110
  service_connection: SearchConnection.__fields__["config"].type_
111
111
 
112
112
  topology = SearchServiceTopology()
113
- context = TopologyContext.create(topology)
113
+ context = TopologyContextManager(topology)
114
114
  index_source_state: Set = set()
115
115
 
116
116
  def __init__(
@@ -195,7 +195,7 @@ class SearchServiceSource(TopologyRunnerMixin, Source, ABC):
195
195
  entity_type=SearchIndex,
196
196
  entity_source_state=self.index_source_state,
197
197
  mark_deleted_entity=self.source_config.markDeletedSearchIndexes,
198
- params={"service": self.context.search_service},
198
+ params={"service": self.context.get().search_service},
199
199
  )
200
200
 
201
201
  def register_record(self, search_index_request: CreateSearchIndexRequest) -> None:
@@ -13,7 +13,11 @@ Define custom types as wrappers on top of
13
13
  existing SQA types to have a bridge between
14
14
  SQA dialects and OM rich type system
15
15
  """
16
+
16
17
  from sqlalchemy import types
18
+ from sqlalchemy.sql.sqltypes import TypeDecorator
19
+
20
+ from metadata.utils.sqlalchemy_utils import convert_numpy_to_list
17
21
 
18
22
 
19
23
  class SQAMap(types.String):
@@ -22,11 +26,26 @@ class SQAMap(types.String):
22
26
  """
23
27
 
24
28
 
25
- class SQAStruct(types.String):
29
+ class SQAStruct(TypeDecorator):
26
30
  """
27
31
  Custom Struct type definition
28
32
  """
29
33
 
34
+ impl = types.String
35
+ cache_ok = True
36
+
37
+ def process_result_value(self, value, dialect):
38
+ """This is executed during result retrieval
39
+
40
+ Args:
41
+ value: database record
42
+ dialect: database dialect
43
+ Returns:
44
+ python list conversion of ndarray
45
+ """
46
+
47
+ return convert_numpy_to_list(value)
48
+
30
49
 
31
50
  class SQADateTimeRange(types.String):
32
51
  """
@@ -59,8 +59,17 @@ def test_connection(
59
59
  of a metadata workflow or during an Automation Workflow
60
60
  """
61
61
 
62
+ def test_buckets(connection: S3Connection, client: S3ObjectStoreClient):
63
+ if connection.bucketNames:
64
+ for bucket_name in connection.bucketNames:
65
+ client.s3_client.list_objects(Bucket=bucket_name)
66
+ return
67
+ client.s3_client.list_buckets()
68
+
62
69
  test_fn = {
63
- "ListBuckets": client.s3_client.list_buckets,
70
+ "ListBuckets": partial(
71
+ test_buckets, client=client, connection=service_connection
72
+ ),
64
73
  "GetMetrics": partial(
65
74
  client.cloudwatch_client.list_metrics, Namespace="AWS/S3"
66
75
  ),
@@ -83,13 +83,13 @@ class S3Source(StorageServiceSource):
83
83
  self.s3_reader = get_reader(config_source=S3Config(), client=self.s3_client)
84
84
 
85
85
  @classmethod
86
- def create(cls, config_dict, metadata: OpenMetadata):
86
+ def create(
87
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
88
+ ):
87
89
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
88
90
  connection: S3Connection = config.serviceConnection.__root__.config
89
91
  if not isinstance(connection, S3Connection):
90
- raise InvalidSourceException(
91
- f"Expected S3StoreConnection, but got {connection}"
92
- )
92
+ raise InvalidSourceException(f"Expected S3Connection, but got {connection}")
93
93
  return cls(config, metadata)
94
94
 
95
95
  def get_containers(self) -> Iterable[S3ContainerDetails]:
@@ -103,7 +103,10 @@ class S3Source(StorageServiceSource):
103
103
  bucket_response=bucket_response
104
104
  )
105
105
  container_fqn = fqn._build( # pylint: disable=protected-access
106
- *(self.context.objectstore_service, self.context.container)
106
+ *(
107
+ self.context.get().objectstore_service,
108
+ self.context.get().container,
109
+ )
107
110
  )
108
111
  container_entity = self.metadata.get_by_name(
109
112
  entity=Container, fqn=container_fqn
@@ -123,10 +126,7 @@ class S3Source(StorageServiceSource):
123
126
  # ingest all the relevant valid paths from it
124
127
  yield from self._generate_structured_containers(
125
128
  bucket_response=bucket_response,
126
- entries=self._manifest_entries_to_metadata_entries_by_container(
127
- container_name=bucket_name,
128
- manifest=self.global_manifest,
129
- ),
129
+ entries=manifest_entries_for_current_bucket,
130
130
  parent=parent_entity,
131
131
  )
132
132
  # nothing else do to for the current bucket, skipping to the next
@@ -139,23 +139,6 @@ class S3Source(StorageServiceSource):
139
139
  entries=metadata_config.entries,
140
140
  parent=parent_entity,
141
141
  )
142
- for metadata_entry in metadata_config.entries:
143
- logger.info(
144
- f"Extracting metadata from path {metadata_entry.dataPath.strip(KEY_SEPARATOR)} "
145
- f"and generating structured container"
146
- )
147
- structured_container: Optional[
148
- S3ContainerDetails
149
- ] = self._generate_container_details(
150
- bucket_response=bucket_response,
151
- metadata_entry=metadata_entry,
152
- parent=EntityReference(
153
- id=self._bucket_cache[bucket_response.name].id.__root__,
154
- type="container",
155
- ),
156
- )
157
- if structured_container:
158
- yield structured_container
159
142
 
160
143
  except ValidationError as err:
161
144
  self.status.failed(
@@ -183,10 +166,11 @@ class S3Source(StorageServiceSource):
183
166
  numberOfObjects=container_details.number_of_objects,
184
167
  size=container_details.size,
185
168
  dataModel=container_details.data_model,
186
- service=self.context.objectstore_service,
169
+ service=self.context.get().objectstore_service,
187
170
  parent=container_details.parent,
188
171
  sourceUrl=container_details.sourceUrl,
189
172
  fileFormats=container_details.file_formats,
173
+ fullPath=container_details.fullPath,
190
174
  )
191
175
  yield Either(right=container_request)
192
176
  self.register_record(container_request=container_request)
@@ -213,10 +197,15 @@ class S3Source(StorageServiceSource):
213
197
  client=self.s3_client,
214
198
  )
215
199
  if columns:
200
+ prefix = (
201
+ f"{KEY_SEPARATOR}{metadata_entry.dataPath.strip(KEY_SEPARATOR)}"
202
+ )
216
203
  return S3ContainerDetails(
217
204
  name=metadata_entry.dataPath.strip(KEY_SEPARATOR),
218
- prefix=f"{KEY_SEPARATOR}{metadata_entry.dataPath.strip(KEY_SEPARATOR)}",
219
- creation_date=bucket_response.creation_date.isoformat(),
205
+ prefix=prefix,
206
+ creation_date=bucket_response.creation_date.isoformat()
207
+ if bucket_response.creation_date
208
+ else None,
220
209
  number_of_objects=self._fetch_metric(
221
210
  bucket_name=bucket_name, metric=S3Metric.NUMBER_OF_OBJECTS
222
211
  ),
@@ -228,6 +217,7 @@ class S3Source(StorageServiceSource):
228
217
  isPartitioned=metadata_entry.isPartitioned, columns=columns
229
218
  ),
230
219
  parent=parent,
220
+ fullPath=self._get_full_path(bucket_name, prefix),
231
221
  sourceUrl=self._get_object_source_url(
232
222
  bucket_name=bucket_name,
233
223
  prefix=metadata_entry.dataPath.strip(KEY_SEPARATOR),
@@ -262,6 +252,11 @@ class S3Source(StorageServiceSource):
262
252
  def fetch_buckets(self) -> List[S3BucketResponse]:
263
253
  results: List[S3BucketResponse] = []
264
254
  try:
255
+ if self.service_connection.bucketNames:
256
+ return [
257
+ S3BucketResponse(Name=bucket_name)
258
+ for bucket_name in self.service_connection.bucketNames
259
+ ]
265
260
  # No pagination required, as there is a hard 1000 limit on nr of buckets per aws account
266
261
  for bucket in self.s3_client.list_buckets().get("Buckets") or []:
267
262
  if filter_by_container(
@@ -327,7 +322,9 @@ class S3Source(StorageServiceSource):
327
322
  return S3ContainerDetails(
328
323
  name=bucket_response.name,
329
324
  prefix=KEY_SEPARATOR,
330
- creation_date=bucket_response.creation_date.isoformat(),
325
+ creation_date=bucket_response.creation_date.isoformat()
326
+ if bucket_response.creation_date
327
+ else None,
331
328
  number_of_objects=self._fetch_metric(
332
329
  bucket_name=bucket_response.name, metric=S3Metric.NUMBER_OF_OBJECTS
333
330
  ),
@@ -336,9 +333,27 @@ class S3Source(StorageServiceSource):
336
333
  ),
337
334
  file_formats=[],
338
335
  data_model=None,
336
+ fullPath=self._get_full_path(bucket_name=bucket_response.name),
339
337
  sourceUrl=self._get_bucket_source_url(bucket_name=bucket_response.name),
340
338
  )
341
339
 
340
+ def _clean_path(self, path: str) -> str:
341
+ return path.strip(KEY_SEPARATOR)
342
+
343
+ def _get_full_path(self, bucket_name: str, prefix: str = None) -> Optional[str]:
344
+ """
345
+ Method to get the full path of the file
346
+ """
347
+ if bucket_name is None:
348
+ return None
349
+
350
+ full_path = f"s3://{self._clean_path(bucket_name)}"
351
+
352
+ if prefix:
353
+ full_path += f"/{self._clean_path(prefix)}"
354
+
355
+ return full_path
356
+
342
357
  def _get_sample_file_path(
343
358
  self, bucket_name: str, metadata_entry: MetadataEntry
344
359
  ) -> Optional[str]:
@@ -33,8 +33,8 @@ class S3BucketResponse(BaseModel):
33
33
  extra = Extra.forbid
34
34
 
35
35
  name: str = Field(..., description="Bucket name", alias="Name")
36
- creation_date: datetime = Field(
37
- ...,
36
+ creation_date: Optional[datetime] = Field(
37
+ None,
38
38
  description="Timestamp of Bucket creation in ISO format",
39
39
  alias="CreationDate",
40
40
  )
@@ -67,8 +67,8 @@ class S3ContainerDetails(BaseModel):
67
67
  ...,
68
68
  description="Data Model of the container",
69
69
  )
70
- creation_date: str = Field(
71
- ...,
70
+ creation_date: Optional[str] = Field(
71
+ None,
72
72
  description="Timestamp of Bucket creation in ISO format",
73
73
  )
74
74
  parent: Optional[EntityReference] = Field(
@@ -78,3 +78,7 @@ class S3ContainerDetails(BaseModel):
78
78
  sourceUrl: Optional[basic.SourceUrl] = Field(
79
79
  None, description="Source URL of the container."
80
80
  )
81
+
82
+ fullPath: Optional[str] = Field(
83
+ None, description="Full path of the container/file."
84
+ )
@@ -41,7 +41,7 @@ from metadata.ingestion.models.delete_entity import DeleteEntity
41
41
  from metadata.ingestion.models.topology import (
42
42
  NodeStage,
43
43
  ServiceTopology,
44
- TopologyContext,
44
+ TopologyContextManager,
45
45
  TopologyNode,
46
46
  )
47
47
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
@@ -112,7 +112,7 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
112
112
  service_connection: StorageConnection.__fields__["config"].type_
113
113
 
114
114
  topology = StorageServiceTopology()
115
- context = TopologyContext.create(topology)
115
+ context = TopologyContextManager(topology)
116
116
  container_source_state: Set = set()
117
117
 
118
118
  global_manifest: Optional[ManifestMetadataConfig]
@@ -191,7 +191,7 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
191
191
  container_fqn = fqn.build(
192
192
  self.metadata,
193
193
  entity_type=Container,
194
- service_name=self.context.objectstore_service,
194
+ service_name=self.context.get().objectstore_service,
195
195
  parent_container=parent_container,
196
196
  container_name=container_request.name.__root__,
197
197
  )
@@ -210,7 +210,7 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
210
210
  entity_type=Container,
211
211
  entity_source_state=self.container_source_state,
212
212
  mark_deleted_entity=self.source_config.markDeletedContainers,
213
- params={"service": self.context.objectstore_service},
213
+ params={"service": self.context.get().objectstore_service},
214
214
  )
215
215
 
216
216
  def yield_create_request_objectstore_service(self, config: WorkflowSource):
@@ -245,7 +245,10 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
245
245
  """
246
246
  Return a prefix if we have structure data to read
247
247
  """
248
- result = f"{metadata_entry.dataPath.strip(KEY_SEPARATOR)}"
248
+ # Adding the ending separator so that we only read files from the right directory, for example:
249
+ # if we have files in `transactions/*` and `transactions_old/*`, only passing the prefix as
250
+ # `transactions` would list files for both directories. We need the prefix to be `transactions/`.
251
+ result = f"{metadata_entry.dataPath.strip(KEY_SEPARATOR)}{KEY_SEPARATOR}"
249
252
  if not metadata_entry.structureFormat:
250
253
  logger.warning(f"Ignoring un-structured metadata entry {result}")
251
254
  return None
@@ -70,7 +70,12 @@ class TableUsageStage(Stage):
70
70
  return "Table Usage"
71
71
 
72
72
  @classmethod
73
- def create(cls, config_dict: dict, metadata: OpenMetadata):
73
+ def create(
74
+ cls,
75
+ config_dict: dict,
76
+ metadata: OpenMetadata,
77
+ pipeline_name: Optional[str] = None,
78
+ ):
74
79
  config = TableStageConfig.parse_obj(config_dict)
75
80
  return cls(config, metadata)
76
81
 
@@ -21,7 +21,7 @@ from metadata.data_quality.validations.table.pandas.tableRowInsertedCountToBeBet
21
21
  TableRowInsertedCountToBeBetweenValidator,
22
22
  )
23
23
  from metadata.generated.schema.entity.data.table import (
24
- PartitionIntervalType,
24
+ PartitionIntervalTypes,
25
25
  PartitionProfilerConfig,
26
26
  ProfileSampleType,
27
27
  )
@@ -47,7 +47,7 @@ class PandasInterfaceMixin:
47
47
  partition_field = self.table_partition_config.partitionColumnName
48
48
  if (
49
49
  self.table_partition_config.partitionIntervalType
50
- == PartitionIntervalType.COLUMN_VALUE
50
+ == PartitionIntervalTypes.COLUMN_VALUE
51
51
  ):
52
52
  return [
53
53
  df[
@@ -59,7 +59,7 @@ class PandasInterfaceMixin:
59
59
  ]
60
60
  if (
61
61
  self.table_partition_config.partitionIntervalType
62
- == PartitionIntervalType.INTEGER_RANGE
62
+ == PartitionIntervalTypes.INTEGER_RANGE
63
63
  ):
64
64
  return [
65
65
  df[
metadata/pii/processor.py CHANGED
@@ -81,7 +81,12 @@ class PIIProcessor(Processor):
81
81
  return self._ner_scanner
82
82
 
83
83
  @classmethod
84
- def create(cls, config_dict: dict, metadata: OpenMetadata) -> "Step":
84
+ def create(
85
+ cls,
86
+ config_dict: dict,
87
+ metadata: OpenMetadata,
88
+ pipeline_name: Optional[str] = None,
89
+ ) -> "Step":
85
90
  config = parse_workflow_config_gracefully(config_dict)
86
91
  return cls(config=config, metadata=metadata)
87
92
 
File without changes
File without changes
@@ -0,0 +1,43 @@
1
+ # Copyright 2024 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ factory for NoSQL adaptors that are used in the NoSQLProfiler.
13
+ """
14
+ from metadata.generated.schema.entity.services.connections.database.dynamoDBConnection import (
15
+ DynamoDBConnection,
16
+ )
17
+ from metadata.generated.schema.entity.services.connections.database.mongoDBConnection import (
18
+ MongoDBConnection,
19
+ )
20
+ from metadata.profiler.adaptors.dynamodb import DynamoDB
21
+ from metadata.profiler.adaptors.mongodb import MongoDB
22
+ from metadata.profiler.factory import Factory
23
+ from metadata.utils.logger import profiler_logger
24
+
25
+ logger = profiler_logger()
26
+
27
+
28
+ class NoSQLAdaptorFactory(Factory):
29
+ def create(self, interface_type: str, *args, **kwargs) -> any:
30
+ logger.debug(f"Creating NoSQL client for {interface_type}")
31
+ client_class = self._interface_type.get(interface_type)
32
+ if not client_class:
33
+ raise ValueError(f"Unknown NoSQL source: {interface_type}")
34
+ logger.debug(f"Using NoSQL client constructor: {client_class.__name__}")
35
+ return client_class(*args, **kwargs)
36
+
37
+
38
+ adaptors = profilers = {
39
+ MongoDBConnection.__name__: MongoDB,
40
+ DynamoDBConnection.__name__: DynamoDB,
41
+ }
42
+ factory = NoSQLAdaptorFactory()
43
+ factory.register_many(adaptors)
@@ -0,0 +1,40 @@
1
+ # Copyright 2024 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ DyanmoDB adaptor for the NoSQL profiler.
13
+ """
14
+ from typing import TYPE_CHECKING, Dict, List
15
+
16
+ from metadata.generated.schema.entity.data.table import Column, Table
17
+ from metadata.profiler.adaptors.nosql_adaptor import NoSQLAdaptor
18
+
19
+ if TYPE_CHECKING:
20
+ from mypy_boto3_dynamodb.service_resource import DynamoDBServiceResource
21
+ else:
22
+ DynamoDBServiceResource = None # pylint: disable=invalid-name
23
+
24
+
25
+ class DynamoDB(NoSQLAdaptor):
26
+ """A MongoDB client that serves as an adaptor for profiling data assets on MongoDB"""
27
+
28
+ def __init__(self, client: DynamoDBServiceResource):
29
+ self.client = client
30
+
31
+ def item_count(self, table: Table) -> int:
32
+ table = self.client.Table(table.name.__root__)
33
+ return table.item_count
34
+
35
+ def scan(
36
+ self, table: Table, columns: List[Column], limit: int
37
+ ) -> List[Dict[str, any]]:
38
+ table = self.client.Table(table.name.__root__)
39
+ response = table.scan(Limit=limit)
40
+ return response["Items"]
@@ -0,0 +1,76 @@
1
+ # Copyright 2024 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ factory for NoSQL adaptors that are used in the NoSQLProfiler.
13
+ """
14
+ from typing import Callable
15
+
16
+ from metadata.generated.schema.entity.services.connections.database.dynamoDBConnection import (
17
+ DynamoDBConnection,
18
+ )
19
+ from metadata.generated.schema.entity.services.connections.database.mongoDBConnection import (
20
+ MongoDBConnection,
21
+ )
22
+ from metadata.profiler.adaptors.dynamodb import DynamoDB
23
+ from metadata.profiler.adaptors.mongodb import MongoDB
24
+ from metadata.profiler.adaptors.nosql_adaptor import NoSQLAdaptor
25
+ from metadata.profiler.factory import Factory
26
+
27
+ NoSQLAdaptorConstructor = Callable[[any], NoSQLAdaptor]
28
+
29
+
30
+ class NoSQLAdaptorFactory(Factory):
31
+ """
32
+ A factory class for creating NoSQL client instances.
33
+
34
+ This class maintains a registry of callable constructors for different NoSQL client types.
35
+ The client types are registered with their corresponding constructors,
36
+ and can be created using the `construct` method.
37
+ """
38
+
39
+ def register(self, interface_type: str, interface_class: NoSQLAdaptorConstructor):
40
+ """
41
+ Register a client type with its constructor.
42
+
43
+ Args:
44
+ source_class_name (str): The class of the source client.
45
+ target_class (NoSQLClientConstructor): The constructor for the target client.
46
+
47
+ Returns:
48
+ None
49
+ """
50
+ self._interface_type[interface_type] = interface_class
51
+
52
+ def create(self, interface_type: any, *args, **kwargs) -> NoSQLAdaptor:
53
+ """
54
+ Create a client instance of the type of the given source client.
55
+
56
+ Args:
57
+ interface_type (str): The type of the source connection.
58
+
59
+ Returns:
60
+ NoSQLAdaptor: The created client instance.
61
+
62
+ Raises:
63
+ ValueError: If the type of the source client is not registered.
64
+ """
65
+ client_class = self._interface_type.get(interface_type)
66
+ if not client_class:
67
+ raise ValueError(f"Unknown NoSQL source: {interface_type}")
68
+ return client_class(*args, **kwargs)
69
+
70
+
71
+ factory = NoSQLAdaptorFactory()
72
+ adaptors = {
73
+ MongoDBConnection.__name__: MongoDB,
74
+ DynamoDBConnection.__name__: DynamoDB,
75
+ }
76
+ factory.register_many(adaptors)