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

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

Potentially problematic release.


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

Files changed (982) 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_quality/api/models.py +1 -0
  9. metadata/data_quality/processor/test_case_runner.py +9 -2
  10. metadata/data_quality/source/test_suite.py +14 -3
  11. metadata/data_quality/validations/base_test_handler.py +1 -1
  12. metadata/data_quality/validations/column/base/columnValuesMissingCount.py +4 -1
  13. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +28 -17
  14. metadata/data_quality/validations/mixins/sqa_validator_mixin.py +4 -1
  15. metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +1 -1
  16. metadata/examples/workflows/airbyte.yaml +1 -0
  17. metadata/examples/workflows/airflow.yaml +1 -1
  18. metadata/examples/workflows/airflow_backend.yaml +1 -1
  19. metadata/examples/workflows/airflow_postgres.yaml +1 -1
  20. metadata/examples/workflows/amundsen.yaml +1 -0
  21. metadata/examples/workflows/athena.yaml +1 -0
  22. metadata/examples/workflows/athena_lineage.yaml +1 -1
  23. metadata/examples/workflows/athena_usage.yaml +1 -0
  24. metadata/examples/workflows/atlas.yaml +1 -0
  25. metadata/examples/workflows/azuresql.yaml +1 -0
  26. metadata/examples/workflows/azuresql_lineage.yaml +1 -0
  27. metadata/examples/workflows/azuresql_usage.yaml +1 -0
  28. metadata/examples/workflows/bigquery.yaml +1 -0
  29. metadata/examples/workflows/bigquery_lineage.yaml +1 -0
  30. metadata/examples/workflows/bigquery_profiler.yaml +1 -0
  31. metadata/examples/workflows/bigquery_usage.yaml +1 -0
  32. metadata/examples/workflows/bigtable.yaml +1 -1
  33. metadata/examples/workflows/clickhouse.yaml +1 -0
  34. metadata/examples/workflows/clickhouse_lineage.yaml +1 -0
  35. metadata/examples/workflows/clickhouse_usage.yaml +1 -0
  36. metadata/examples/workflows/couchbase.yaml +1 -1
  37. metadata/examples/workflows/dagster.yaml +1 -0
  38. metadata/examples/workflows/data_insight.yaml +1 -1
  39. metadata/examples/workflows/databricks.yaml +1 -0
  40. metadata/examples/workflows/databricks_lineage.yaml +1 -0
  41. metadata/examples/workflows/databricks_pipeline.yaml +1 -0
  42. metadata/examples/workflows/databricks_usage.yaml +1 -0
  43. metadata/examples/workflows/datalake_azure_client_secret.yaml +1 -0
  44. metadata/examples/workflows/datalake_gcs.yaml +1 -0
  45. metadata/examples/workflows/datalake_profiler.yaml +1 -0
  46. metadata/examples/workflows/datalake_s3.yaml +1 -0
  47. metadata/examples/workflows/db2.yaml +1 -0
  48. metadata/examples/workflows/db2_profiler.yaml +1 -0
  49. metadata/examples/workflows/dbt.yaml +2 -0
  50. metadata/examples/workflows/deltalake.yaml +1 -0
  51. metadata/examples/workflows/domodashboard.yaml +1 -0
  52. metadata/examples/workflows/dynamodb.yaml +1 -0
  53. metadata/examples/workflows/elasticsearch.yaml +1 -1
  54. metadata/examples/workflows/fivetran.yaml +1 -0
  55. metadata/examples/workflows/glue.yaml +1 -0
  56. metadata/examples/workflows/gluepipeline.yaml +1 -0
  57. metadata/examples/workflows/hive.yaml +1 -0
  58. metadata/examples/workflows/impala.yaml +1 -0
  59. metadata/examples/workflows/kafka.yaml +1 -1
  60. metadata/examples/workflows/kafka_connect.yaml +30 -0
  61. metadata/examples/workflows/kinesis.yaml +1 -1
  62. metadata/examples/workflows/lightdash.yaml +1 -0
  63. metadata/examples/workflows/looker.yaml +1 -0
  64. metadata/examples/workflows/mariadb.yaml +1 -0
  65. metadata/examples/workflows/metabase.yaml +1 -0
  66. metadata/examples/workflows/mlflow.yaml +1 -0
  67. metadata/examples/workflows/mode.yaml +3 -1
  68. metadata/examples/workflows/mongodb.yaml +1 -0
  69. metadata/examples/workflows/mssql.yaml +1 -0
  70. metadata/examples/workflows/mssql_lineage.yaml +1 -0
  71. metadata/examples/workflows/mssql_usage.yaml +1 -0
  72. metadata/examples/workflows/mstr.yaml +1 -0
  73. metadata/examples/workflows/mysql.yaml +1 -0
  74. metadata/examples/workflows/mysql_profiler.yaml +1 -0
  75. metadata/examples/workflows/openmetadata.yaml +1 -0
  76. metadata/examples/workflows/oracle.yaml +1 -0
  77. metadata/examples/workflows/oracle_lineage.yaml +1 -1
  78. metadata/examples/workflows/oracle_usage.yaml +1 -0
  79. metadata/examples/workflows/pinotdb.yaml +1 -0
  80. metadata/examples/workflows/postgres.yaml +1 -0
  81. metadata/examples/workflows/postgres_lineage.yaml +1 -1
  82. metadata/examples/workflows/postgres_usage.yaml +1 -1
  83. metadata/examples/workflows/powerbi.yaml +52 -0
  84. metadata/examples/workflows/presto.yaml +1 -0
  85. metadata/examples/workflows/qlik_sense.yaml +6 -4
  86. metadata/examples/workflows/qlikcloud.yaml +31 -0
  87. metadata/examples/workflows/query_log_usage.yaml +1 -0
  88. metadata/examples/workflows/quicksight.yaml +1 -0
  89. metadata/examples/workflows/redash.yaml +1 -0
  90. metadata/examples/workflows/redpanda.yaml +1 -0
  91. metadata/examples/workflows/redshift.yaml +1 -0
  92. metadata/examples/workflows/redshift_lineage.yaml +1 -0
  93. metadata/examples/workflows/redshift_profiler.yaml +1 -0
  94. metadata/examples/workflows/redshift_usage.yaml +1 -0
  95. metadata/examples/workflows/sagemaker.yaml +1 -1
  96. metadata/examples/workflows/salesforce.yaml +1 -0
  97. metadata/examples/workflows/sas.yaml +1 -1
  98. metadata/examples/workflows/singlestore.yaml +1 -0
  99. metadata/examples/workflows/snowflake.yaml +1 -0
  100. metadata/examples/workflows/snowflake_lineage.yaml +1 -0
  101. metadata/examples/workflows/snowflake_usage.yaml +1 -0
  102. metadata/examples/workflows/spline.yaml +5 -4
  103. metadata/examples/workflows/sqlite.yaml +1 -0
  104. metadata/examples/workflows/superset.yaml +1 -0
  105. metadata/examples/workflows/tableau.yaml +1 -0
  106. metadata/examples/workflows/test_suite.yaml +13 -16
  107. metadata/examples/workflows/trino.yaml +1 -0
  108. metadata/examples/workflows/trino_lineage.yaml +1 -0
  109. metadata/examples/workflows/trino_usage.yaml +1 -0
  110. metadata/examples/workflows/unity_catalog.yaml +1 -1
  111. metadata/examples/workflows/unity_catalog_lineage.yaml +1 -1
  112. metadata/examples/workflows/unity_catalog_usage.yaml +1 -1
  113. metadata/examples/workflows/vertica.yaml +1 -0
  114. metadata/generated/antlr/EntityLinkLexer.py +354 -349
  115. metadata/generated/schema/analytics/__init__.py +1 -1
  116. metadata/generated/schema/analytics/basic.py +1 -1
  117. metadata/generated/schema/analytics/reportData.py +1 -1
  118. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  119. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  120. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  121. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  122. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  123. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  124. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  125. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  126. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  127. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  128. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  129. metadata/generated/schema/api/__init__.py +1 -1
  130. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  131. metadata/generated/schema/api/analytics/__init__.py +1 -1
  132. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  133. metadata/generated/schema/api/automations/__init__.py +1 -1
  134. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  135. metadata/generated/schema/api/bulkAssets.py +1 -1
  136. metadata/generated/schema/api/classification/__init__.py +1 -1
  137. metadata/generated/schema/api/classification/createClassification.py +2 -3
  138. metadata/generated/schema/api/classification/createTag.py +2 -3
  139. metadata/generated/schema/api/classification/loadTags.py +1 -1
  140. metadata/generated/schema/api/createBot.py +1 -1
  141. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  142. metadata/generated/schema/api/createType.py +1 -1
  143. metadata/generated/schema/api/data/__init__.py +1 -1
  144. metadata/generated/schema/api/data/createChart.py +1 -1
  145. metadata/generated/schema/api/data/createContainer.py +4 -1
  146. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  147. metadata/generated/schema/api/data/createDashboard.py +1 -1
  148. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  149. metadata/generated/schema/api/data/createDatabase.py +1 -1
  150. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  151. metadata/generated/schema/api/data/createGlossary.py +1 -1
  152. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  153. metadata/generated/schema/api/data/createMlModel.py +1 -1
  154. metadata/generated/schema/api/data/createPipeline.py +1 -1
  155. metadata/generated/schema/api/data/createQuery.py +1 -1
  156. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  157. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  158. metadata/generated/schema/api/data/createTable.py +4 -3
  159. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  160. metadata/generated/schema/api/data/createTopic.py +1 -1
  161. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  162. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  163. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  164. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  165. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  166. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  167. metadata/generated/schema/api/docStore/__init__.py +1 -1
  168. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  169. metadata/generated/schema/api/domains/__init__.py +1 -1
  170. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  171. metadata/generated/schema/api/domains/createDomain.py +1 -1
  172. metadata/generated/schema/api/feed/__init__.py +1 -1
  173. metadata/generated/schema/api/feed/closeTask.py +1 -1
  174. metadata/generated/schema/api/feed/createPost.py +1 -1
  175. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  176. metadata/generated/schema/api/feed/createThread.py +1 -1
  177. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  178. metadata/generated/schema/api/feed/threadCount.py +1 -1
  179. metadata/generated/schema/api/lineage/__init__.py +1 -1
  180. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  181. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  182. metadata/generated/schema/api/policies/__init__.py +1 -1
  183. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  184. metadata/generated/schema/api/services/__init__.py +1 -1
  185. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  186. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  187. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  188. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  189. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  190. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  191. metadata/generated/schema/api/services/createSearchService.py +1 -1
  192. metadata/generated/schema/api/services/createStorageService.py +1 -1
  193. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  194. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  195. metadata/generated/schema/api/setOwner.py +1 -1
  196. metadata/generated/schema/api/teams/__init__.py +1 -1
  197. metadata/generated/schema/api/teams/createPersona.py +1 -1
  198. metadata/generated/schema/api/teams/createRole.py +1 -1
  199. metadata/generated/schema/api/teams/createTeam.py +1 -1
  200. metadata/generated/schema/api/teams/createUser.py +2 -2
  201. metadata/generated/schema/api/tests/__init__.py +1 -1
  202. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  203. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  204. metadata/generated/schema/api/tests/createTestCase.py +2 -2
  205. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  206. metadata/generated/schema/api/tests/createTestDefinition.py +2 -2
  207. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  208. metadata/generated/schema/api/voteRequest.py +1 -1
  209. metadata/generated/schema/auth/__init__.py +1 -1
  210. metadata/generated/schema/auth/basicAuth.py +1 -1
  211. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  212. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  213. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  214. metadata/generated/schema/auth/emailRequest.py +1 -1
  215. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  216. metadata/generated/schema/auth/generateToken.py +1 -1
  217. metadata/generated/schema/auth/jwtAuth.py +1 -1
  218. metadata/generated/schema/auth/loginRequest.py +1 -1
  219. metadata/generated/schema/auth/logoutRequest.py +1 -1
  220. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  221. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  222. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  223. metadata/generated/schema/auth/refreshToken.py +1 -1
  224. metadata/generated/schema/auth/registrationRequest.py +1 -1
  225. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  226. metadata/generated/schema/auth/revokeToken.py +1 -1
  227. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  228. metadata/generated/schema/auth/ssoAuth.py +1 -1
  229. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  230. metadata/generated/schema/configuration/__init__.py +1 -1
  231. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  232. metadata/generated/schema/configuration/authConfig.py +1 -1
  233. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  234. metadata/generated/schema/configuration/authorizerConfiguration.py +4 -1
  235. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  236. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  237. metadata/generated/schema/configuration/elasticSearchConfiguration.py +4 -1
  238. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  239. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  240. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  241. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  242. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  243. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  244. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  245. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  246. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  247. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  248. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  249. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  250. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  251. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  252. metadata/generated/schema/configuration/profilerConfiguration.py +66 -0
  253. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  254. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  255. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  256. metadata/generated/schema/configuration/themeConfiguration.py +32 -0
  257. metadata/generated/schema/configuration/uiThemePreference.py +23 -0
  258. metadata/generated/schema/dataInsight/__init__.py +1 -1
  259. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  260. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  261. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  262. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  263. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  264. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  265. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  266. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  267. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  268. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  269. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  270. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  271. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  272. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  273. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  274. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  275. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  276. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  277. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  278. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  279. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  280. metadata/generated/schema/email/__init__.py +1 -1
  281. metadata/generated/schema/email/emailRequest.py +1 -1
  282. metadata/generated/schema/email/smtpSettings.py +3 -3
  283. metadata/generated/schema/entity/__init__.py +1 -1
  284. metadata/generated/schema/entity/applications/__init__.py +1 -1
  285. metadata/generated/schema/entity/applications/app.py +1 -1
  286. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  287. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  288. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +3 -3
  289. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  290. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +5 -0
  291. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +36 -0
  292. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +31 -0
  293. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +31 -0
  294. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +36 -0
  295. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +31 -0
  296. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +28 -0
  297. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +22 -0
  298. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +30 -0
  299. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +22 -0
  300. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +22 -0
  301. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +31 -0
  302. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +22 -0
  303. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +75 -0
  304. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
  305. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  306. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  307. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  308. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  309. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  310. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  311. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  312. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  313. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  314. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  315. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  316. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  317. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  318. metadata/generated/schema/entity/automations/__init__.py +1 -1
  319. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  320. metadata/generated/schema/entity/automations/workflow.py +1 -1
  321. metadata/generated/schema/entity/bot.py +1 -1
  322. metadata/generated/schema/entity/classification/__init__.py +1 -1
  323. metadata/generated/schema/entity/classification/classification.py +2 -3
  324. metadata/generated/schema/entity/classification/tag.py +3 -9
  325. metadata/generated/schema/entity/data/__init__.py +1 -1
  326. metadata/generated/schema/entity/data/chart.py +1 -1
  327. metadata/generated/schema/entity/data/container.py +4 -1
  328. metadata/generated/schema/entity/data/dashboard.py +1 -1
  329. metadata/generated/schema/entity/data/dashboardDataModel.py +2 -2
  330. metadata/generated/schema/entity/data/database.py +1 -1
  331. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  332. metadata/generated/schema/entity/data/glossary.py +1 -1
  333. metadata/generated/schema/entity/data/glossaryTerm.py +4 -1
  334. metadata/generated/schema/entity/data/metrics.py +1 -1
  335. metadata/generated/schema/entity/data/mlmodel.py +2 -2
  336. metadata/generated/schema/entity/data/pipeline.py +1 -1
  337. metadata/generated/schema/entity/data/query.py +1 -1
  338. metadata/generated/schema/entity/data/report.py +1 -1
  339. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  340. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  341. metadata/generated/schema/entity/data/table.py +26 -24
  342. metadata/generated/schema/entity/data/topic.py +1 -1
  343. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  344. metadata/generated/schema/entity/docStore/document.py +1 -1
  345. metadata/generated/schema/entity/domains/__init__.py +1 -1
  346. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  347. metadata/generated/schema/entity/domains/domain.py +1 -1
  348. metadata/generated/schema/entity/events/__init__.py +1 -1
  349. metadata/generated/schema/entity/events/webhook.py +1 -1
  350. metadata/generated/schema/entity/feed/__init__.py +1 -1
  351. metadata/generated/schema/entity/feed/assets.py +18 -0
  352. metadata/generated/schema/entity/feed/customProperty.py +17 -0
  353. metadata/generated/schema/entity/feed/description.py +24 -0
  354. metadata/generated/schema/entity/feed/domain.py +23 -0
  355. metadata/generated/schema/entity/feed/entityInfo.py +19 -0
  356. metadata/generated/schema/entity/feed/owner.py +23 -0
  357. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  358. metadata/generated/schema/entity/feed/tag.py +23 -0
  359. metadata/generated/schema/entity/feed/testCaseResult.py +23 -0
  360. metadata/generated/schema/entity/feed/thread.py +81 -2
  361. metadata/generated/schema/entity/policies/__init__.py +1 -1
  362. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  363. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +3 -1
  364. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  365. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  366. metadata/generated/schema/entity/policies/filters.py +3 -3
  367. metadata/generated/schema/entity/policies/policy.py +1 -1
  368. metadata/generated/schema/entity/services/__init__.py +1 -1
  369. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  370. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  372. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  373. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  374. metadata/generated/schema/entity/services/connections/connectionBasicType.py +5 -1
  375. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +33 -2
  384. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +3 -0
  385. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +37 -0
  386. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +25 -0
  387. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +37 -0
  388. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +37 -0
  389. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +38 -0
  390. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +6 -15
  391. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +4 -1
  399. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +4 -1
  401. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +4 -1
  409. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +2 -2
  416. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +4 -13
  418. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +4 -1
  420. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +2 -15
  422. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +4 -1
  423. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +4 -1
  434. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +4 -1
  435. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +7 -13
  436. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +4 -1
  437. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +5 -15
  439. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +11 -1
  440. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +5 -15
  441. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +4 -1
  449. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +12 -3
  451. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  454. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +7 -1
  456. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  460. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  461. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +7 -3
  462. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  467. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +61 -0
  482. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +73 -0
  484. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  487. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  489. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  490. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  491. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  495. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  496. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  497. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  498. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +5 -2
  499. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  500. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  501. metadata/generated/schema/entity/services/dashboardService.py +4 -1
  502. metadata/generated/schema/entity/services/databaseService.py +1 -1
  503. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  504. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  505. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  506. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  507. metadata/generated/schema/entity/services/messagingService.py +1 -1
  508. metadata/generated/schema/entity/services/metadataService.py +1 -1
  509. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  510. metadata/generated/schema/entity/services/pipelineService.py +7 -1
  511. metadata/generated/schema/entity/services/searchService.py +1 -1
  512. metadata/generated/schema/entity/services/serviceType.py +1 -1
  513. metadata/generated/schema/entity/services/storageService.py +1 -1
  514. metadata/generated/schema/entity/teams/__init__.py +1 -1
  515. metadata/generated/schema/entity/teams/persona.py +1 -1
  516. metadata/generated/schema/entity/teams/role.py +1 -1
  517. metadata/generated/schema/entity/teams/team.py +1 -1
  518. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  519. metadata/generated/schema/entity/teams/user.py +2 -2
  520. metadata/generated/schema/entity/type.py +1 -1
  521. metadata/generated/schema/entity/utils/__init__.py +1 -1
  522. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  523. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  524. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  525. metadata/generated/schema/events/__init__.py +1 -1
  526. metadata/generated/schema/events/alertMetrics.py +1 -1
  527. metadata/generated/schema/events/api/__init__.py +1 -1
  528. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  529. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  530. metadata/generated/schema/events/eventFilterRule.py +10 -1
  531. metadata/generated/schema/events/eventSubscription.py +6 -2
  532. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  533. metadata/generated/schema/events/failedEvent.py +1 -1
  534. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  535. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  536. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  537. metadata/generated/schema/metadataIngestion/application.py +1 -1
  538. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  539. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +19 -6
  540. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  541. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +37 -1
  542. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +23 -23
  543. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  544. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  545. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  546. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  547. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  548. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  549. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  550. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  551. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  552. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  553. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  554. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  555. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  556. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  557. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +22 -4
  558. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  559. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  560. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  561. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  562. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  563. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  564. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  565. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  566. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  567. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  568. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  569. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  571. metadata/generated/schema/monitoring/__init__.py +1 -1
  572. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  573. metadata/generated/schema/security/__init__.py +1 -1
  574. metadata/generated/schema/security/client/__init__.py +1 -1
  575. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  576. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  577. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  578. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  579. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  580. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  581. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  582. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  583. metadata/generated/schema/security/credentials/__init__.py +1 -1
  584. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  585. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  586. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  587. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  588. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  589. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  590. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  591. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  592. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  593. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  594. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  595. metadata/generated/schema/security/secrets/__init__.py +1 -1
  596. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  597. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  598. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  599. metadata/generated/schema/security/securityConfiguration.py +1 -1
  600. metadata/generated/schema/security/ssl/__init__.py +1 -1
  601. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +16 -4
  602. metadata/generated/schema/security/ssl/verifySSLConfig.py +10 -1
  603. metadata/generated/schema/settings/__init__.py +1 -1
  604. metadata/generated/schema/settings/settings.py +5 -2
  605. metadata/generated/schema/system/__init__.py +1 -1
  606. metadata/generated/schema/system/entityError.py +1 -1
  607. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  608. metadata/generated/schema/system/indexingError.py +1 -1
  609. metadata/generated/schema/system/ui/__init__.py +1 -1
  610. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  611. metadata/generated/schema/system/ui/page.py +1 -1
  612. metadata/generated/schema/system/validationResponse.py +1 -1
  613. metadata/generated/schema/tests/__init__.py +1 -1
  614. metadata/generated/schema/tests/assigned.py +1 -1
  615. metadata/generated/schema/tests/basic.py +31 -15
  616. metadata/generated/schema/tests/customMetric.py +1 -1
  617. metadata/generated/schema/tests/resolved.py +1 -1
  618. metadata/generated/schema/tests/testCase.py +13 -2
  619. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  620. metadata/generated/schema/tests/testDefinition.py +22 -2
  621. metadata/generated/schema/tests/testSuite.py +1 -1
  622. metadata/generated/schema/type/__init__.py +1 -1
  623. metadata/generated/schema/type/auditLog.py +1 -1
  624. metadata/generated/schema/type/basic.py +7 -1
  625. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  626. metadata/generated/schema/type/changeEvent.py +1 -1
  627. metadata/generated/schema/type/changeEventType.py +1 -1
  628. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  629. metadata/generated/schema/type/csvDocumentation.py +1 -1
  630. metadata/generated/schema/type/csvErrorType.py +1 -1
  631. metadata/generated/schema/type/csvFile.py +1 -1
  632. metadata/generated/schema/type/csvImportResult.py +1 -1
  633. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  634. metadata/generated/schema/type/customProperties/complexTypes.py +86 -0
  635. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  636. metadata/generated/schema/type/customProperty.py +3 -3
  637. metadata/generated/schema/type/dailyCount.py +1 -1
  638. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  639. metadata/generated/schema/type/entityHierarchy.py +39 -0
  640. metadata/generated/schema/type/entityHistory.py +1 -1
  641. metadata/generated/schema/type/entityLineage.py +3 -1
  642. metadata/generated/schema/type/entityReference.py +1 -1
  643. metadata/generated/schema/type/entityReferenceList.py +1 -1
  644. metadata/generated/schema/type/entityRelationship.py +1 -1
  645. metadata/generated/schema/type/entityUsage.py +1 -1
  646. metadata/generated/schema/type/filterPattern.py +1 -1
  647. metadata/generated/schema/type/function.py +1 -1
  648. metadata/generated/schema/type/include.py +1 -1
  649. metadata/generated/schema/type/jdbcConnection.py +1 -1
  650. metadata/generated/schema/type/lifeCycle.py +1 -1
  651. metadata/generated/schema/type/paging.py +4 -1
  652. metadata/generated/schema/type/profile.py +1 -1
  653. metadata/generated/schema/type/queryParserData.py +1 -1
  654. metadata/generated/schema/type/reaction.py +1 -1
  655. metadata/generated/schema/type/schedule.py +1 -1
  656. metadata/generated/schema/type/schema.py +1 -1
  657. metadata/generated/schema/type/tableQuery.py +1 -1
  658. metadata/generated/schema/type/tableUsageCount.py +1 -1
  659. metadata/generated/schema/type/tagLabel.py +1 -1
  660. metadata/generated/schema/type/usageDetails.py +1 -1
  661. metadata/generated/schema/type/usageRequest.py +1 -1
  662. metadata/generated/schema/type/votes.py +1 -1
  663. metadata/great_expectations/action.py +0 -1
  664. metadata/ingestion/api/delete.py +33 -1
  665. metadata/ingestion/api/step.py +6 -1
  666. metadata/ingestion/api/topology_runner.py +122 -25
  667. metadata/ingestion/bulksink/metadata_usage.py +6 -1
  668. metadata/ingestion/lineage/models.py +34 -1
  669. metadata/ingestion/lineage/parser.py +15 -8
  670. metadata/ingestion/lineage/sql_lineage.py +21 -3
  671. metadata/ingestion/models/custom_properties.py +3 -0
  672. metadata/ingestion/models/life_cycle.py +4 -1
  673. metadata/ingestion/models/patch_request.py +177 -35
  674. metadata/ingestion/models/topology.py +81 -1
  675. metadata/ingestion/ometa/client.py +3 -0
  676. metadata/ingestion/ometa/mixins/es_mixin.py +95 -42
  677. metadata/ingestion/ometa/mixins/lineage_mixin.py +169 -4
  678. metadata/ingestion/ometa/mixins/patch_mixin.py +9 -4
  679. metadata/ingestion/ometa/mixins/server_mixin.py +50 -5
  680. metadata/ingestion/ometa/mixins/tests_mixin.py +55 -1
  681. metadata/ingestion/ometa/mixins/user_mixin.py +18 -6
  682. metadata/ingestion/ometa/ometa_api.py +6 -1
  683. metadata/ingestion/ometa/routes.py +3 -0
  684. metadata/ingestion/ometa/utils.py +2 -0
  685. metadata/ingestion/processor/query_parser.py +36 -26
  686. metadata/ingestion/sink/file.py +4 -1
  687. metadata/ingestion/sink/metadata_rest.py +19 -5
  688. metadata/ingestion/source/dashboard/dashboard_service.py +75 -16
  689. metadata/ingestion/source/dashboard/domodashboard/metadata.py +7 -5
  690. metadata/ingestion/source/dashboard/lightdash/metadata.py +7 -5
  691. metadata/ingestion/source/dashboard/looker/metadata.py +25 -18
  692. metadata/ingestion/source/dashboard/metabase/client.py +39 -8
  693. metadata/ingestion/source/dashboard/metabase/connection.py +2 -1
  694. metadata/ingestion/source/dashboard/metabase/metadata.py +9 -7
  695. metadata/ingestion/source/dashboard/metabase/models.py +1 -1
  696. metadata/ingestion/source/dashboard/mode/metadata.py +7 -5
  697. metadata/ingestion/source/dashboard/mstr/metadata.py +10 -5
  698. metadata/ingestion/source/dashboard/powerbi/client.py +13 -3
  699. metadata/ingestion/source/dashboard/powerbi/connection.py +13 -5
  700. metadata/ingestion/source/dashboard/powerbi/file_client.py +327 -0
  701. metadata/ingestion/source/dashboard/powerbi/metadata.py +156 -53
  702. metadata/ingestion/source/dashboard/powerbi/models.py +26 -0
  703. metadata/ingestion/source/dashboard/qlikcloud/__init__.py +0 -0
  704. metadata/ingestion/source/dashboard/qlikcloud/client.py +167 -0
  705. metadata/ingestion/source/dashboard/qlikcloud/connection.py +56 -0
  706. metadata/ingestion/source/dashboard/qlikcloud/constants.py +66 -0
  707. metadata/ingestion/source/dashboard/qlikcloud/metadata.py +249 -0
  708. metadata/ingestion/source/dashboard/qlikcloud/models.py +33 -0
  709. metadata/ingestion/source/dashboard/qliksense/client.py +9 -26
  710. metadata/ingestion/source/dashboard/qliksense/metadata.py +30 -17
  711. metadata/ingestion/source/dashboard/qliksense/models.py +1 -0
  712. metadata/ingestion/source/dashboard/quicksight/metadata.py +7 -5
  713. metadata/ingestion/source/dashboard/redash/metadata.py +10 -5
  714. metadata/ingestion/source/dashboard/superset/api_source.py +10 -5
  715. metadata/ingestion/source/dashboard/superset/db_source.py +12 -6
  716. metadata/ingestion/source/dashboard/superset/metadata.py +8 -1
  717. metadata/ingestion/source/dashboard/superset/mixin.py +20 -3
  718. metadata/ingestion/source/dashboard/superset/models.py +2 -0
  719. metadata/ingestion/source/dashboard/superset/queries.py +23 -6
  720. metadata/ingestion/source/dashboard/tableau/metadata.py +71 -10
  721. metadata/ingestion/source/database/athena/client.py +1 -1
  722. metadata/ingestion/source/database/athena/lineage.py +2 -0
  723. metadata/ingestion/source/database/athena/metadata.py +83 -15
  724. metadata/ingestion/source/database/athena/models.py +1 -1
  725. metadata/ingestion/source/database/athena/query_parser.py +6 -1
  726. metadata/ingestion/source/database/athena/usage.py +2 -0
  727. metadata/ingestion/source/database/azuresql/metadata.py +4 -2
  728. metadata/ingestion/source/database/azuresql/query_parser.py +4 -1
  729. metadata/ingestion/source/database/bigquery/helper.py +23 -12
  730. metadata/ingestion/source/database/bigquery/incremental_table_processor.py +86 -0
  731. metadata/ingestion/source/database/bigquery/metadata.py +224 -52
  732. metadata/ingestion/source/database/bigquery/models.py +35 -1
  733. metadata/ingestion/source/database/bigquery/queries.py +25 -12
  734. metadata/ingestion/source/database/bigquery/query_parser.py +3 -1
  735. metadata/ingestion/source/database/bigtable/metadata.py +6 -4
  736. metadata/ingestion/source/database/clickhouse/metadata.py +27 -17
  737. metadata/ingestion/source/database/clickhouse/query_parser.py +4 -2
  738. metadata/ingestion/source/database/common_db_source.py +117 -65
  739. metadata/ingestion/source/database/common_nosql_source.py +15 -15
  740. metadata/ingestion/source/database/couchbase/metadata.py +8 -6
  741. metadata/ingestion/source/database/database_service.py +43 -27
  742. metadata/ingestion/source/database/databricks/metadata.py +80 -34
  743. metadata/ingestion/source/database/databricks/queries.py +0 -1
  744. metadata/ingestion/source/database/databricks/query_parser.py +9 -2
  745. metadata/ingestion/source/database/datalake/connection.py +1 -2
  746. metadata/ingestion/source/database/datalake/metadata.py +21 -19
  747. metadata/ingestion/source/database/db2/metadata.py +4 -1
  748. metadata/ingestion/source/database/dbt/dbt_service.py +13 -11
  749. metadata/ingestion/source/database/dbt/metadata.py +97 -33
  750. metadata/ingestion/source/database/dbt/models.py +10 -1
  751. metadata/ingestion/source/database/deltalake/connection.py +2 -2
  752. metadata/ingestion/source/database/deltalake/metadata.py +19 -17
  753. metadata/ingestion/source/database/domodatabase/metadata.py +16 -11
  754. metadata/ingestion/source/database/doris/connection.py +0 -10
  755. metadata/ingestion/source/database/doris/metadata.py +23 -4
  756. metadata/ingestion/source/database/druid/metadata.py +5 -1
  757. metadata/ingestion/source/database/dynamodb/metadata.py +3 -1
  758. metadata/ingestion/source/database/extended_sample_data.py +4 -2
  759. metadata/ingestion/source/database/external_table_lineage_mixin.py +82 -0
  760. metadata/ingestion/source/database/glue/metadata.py +23 -21
  761. metadata/ingestion/source/database/greenplum/connection.py +0 -10
  762. metadata/ingestion/source/database/greenplum/metadata.py +26 -11
  763. metadata/ingestion/source/database/hive/metadata.py +29 -4
  764. metadata/ingestion/source/database/iceberg/helper.py +42 -5
  765. metadata/ingestion/source/database/iceberg/metadata.py +18 -16
  766. metadata/ingestion/source/database/iceberg/models.py +12 -4
  767. metadata/ingestion/source/database/impala/metadata.py +4 -1
  768. metadata/ingestion/source/database/incremental_metadata_extraction.py +144 -0
  769. metadata/ingestion/source/database/life_cycle_query_mixin.py +39 -36
  770. metadata/ingestion/source/database/mariadb/metadata.py +5 -1
  771. metadata/ingestion/source/database/mongodb/metadata.py +4 -2
  772. metadata/ingestion/source/database/mssql/metadata.py +15 -7
  773. metadata/ingestion/source/database/mssql/queries.py +18 -16
  774. metadata/ingestion/source/database/mssql/query_parser.py +4 -1
  775. metadata/ingestion/source/database/mssql/utils.py +3 -0
  776. metadata/ingestion/source/database/mysql/connection.py +0 -11
  777. metadata/ingestion/source/database/mysql/metadata.py +9 -2
  778. metadata/ingestion/source/database/oracle/connection.py +2 -2
  779. metadata/ingestion/source/database/oracle/metadata.py +33 -17
  780. metadata/ingestion/source/database/oracle/queries.py +13 -13
  781. metadata/ingestion/source/database/oracle/query_parser.py +4 -1
  782. metadata/ingestion/source/database/pinotdb/metadata.py +4 -1
  783. metadata/ingestion/source/database/postgres/connection.py +0 -10
  784. metadata/ingestion/source/database/postgres/metadata.py +38 -15
  785. metadata/ingestion/source/database/postgres/queries.py +17 -1
  786. metadata/ingestion/source/database/postgres/query_parser.py +4 -2
  787. metadata/ingestion/source/database/postgres/utils.py +98 -0
  788. metadata/ingestion/source/database/presto/connection.py +14 -0
  789. metadata/ingestion/source/database/presto/metadata.py +8 -5
  790. metadata/ingestion/source/database/query/lineage.py +5 -1
  791. metadata/ingestion/source/database/query/usage.py +4 -1
  792. metadata/ingestion/source/database/redshift/connection.py +0 -10
  793. metadata/ingestion/source/database/redshift/incremental_table_processor.py +192 -0
  794. metadata/ingestion/source/database/redshift/metadata.py +175 -26
  795. metadata/ingestion/source/database/redshift/models.py +74 -1
  796. metadata/ingestion/source/database/redshift/queries.py +17 -2
  797. metadata/ingestion/source/database/redshift/query_parser.py +3 -1
  798. metadata/ingestion/source/database/redshift/utils.py +13 -7
  799. metadata/ingestion/source/database/salesforce/metadata.py +13 -11
  800. metadata/ingestion/source/database/sample_data.py +56 -13
  801. metadata/ingestion/source/database/sample_usage.py +3 -1
  802. metadata/ingestion/source/database/saphana/metadata.py +6 -5
  803. metadata/ingestion/source/database/sas/metadata.py +8 -3
  804. metadata/ingestion/source/database/singlestore/metadata.py +5 -1
  805. metadata/ingestion/source/database/snowflake/metadata.py +193 -59
  806. metadata/ingestion/source/database/snowflake/models.py +24 -1
  807. metadata/ingestion/source/database/snowflake/queries.py +147 -25
  808. metadata/ingestion/source/database/snowflake/query_parser.py +3 -1
  809. metadata/ingestion/source/database/snowflake/utils.py +187 -11
  810. metadata/ingestion/source/database/sql_column_handler.py +2 -0
  811. metadata/ingestion/source/database/sqlalchemy_source.py +4 -4
  812. metadata/ingestion/source/database/sqlite/metadata.py +5 -1
  813. metadata/ingestion/source/database/stored_procedures_mixin.py +11 -9
  814. metadata/ingestion/source/database/trino/connection.py +20 -0
  815. metadata/ingestion/source/database/trino/metadata.py +7 -4
  816. metadata/ingestion/source/database/trino/query_parser.py +4 -1
  817. metadata/ingestion/source/database/unitycatalog/lineage.py +3 -1
  818. metadata/ingestion/source/database/unitycatalog/metadata.py +43 -32
  819. metadata/ingestion/source/database/unitycatalog/query_parser.py +4 -1
  820. metadata/ingestion/source/database/vertica/metadata.py +4 -2
  821. metadata/ingestion/source/database/vertica/query_parser.py +4 -2
  822. metadata/ingestion/source/messaging/common_broker_source.py +45 -6
  823. metadata/ingestion/source/messaging/kafka/metadata.py +21 -1
  824. metadata/ingestion/source/messaging/kinesis/metadata.py +11 -5
  825. metadata/ingestion/source/messaging/messaging_service.py +3 -3
  826. metadata/ingestion/source/messaging/redpanda/metadata.py +5 -1
  827. metadata/ingestion/source/metadata/amundsen/metadata.py +3 -1
  828. metadata/ingestion/source/metadata/atlas/metadata.py +3 -1
  829. metadata/ingestion/source/mlmodel/mlflow/metadata.py +4 -2
  830. metadata/ingestion/source/mlmodel/mlmodel_service.py +3 -3
  831. metadata/ingestion/source/mlmodel/sagemaker/metadata.py +8 -3
  832. metadata/ingestion/source/pipeline/airbyte/metadata.py +9 -7
  833. metadata/ingestion/source/pipeline/airflow/metadata.py +30 -14
  834. metadata/ingestion/source/pipeline/dagster/metadata.py +17 -15
  835. metadata/ingestion/source/pipeline/dagster/queries.py +53 -82
  836. metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +10 -8
  837. metadata/ingestion/source/pipeline/domopipeline/metadata.py +6 -4
  838. metadata/ingestion/source/pipeline/fivetran/metadata.py +6 -4
  839. metadata/ingestion/source/pipeline/gluepipeline/metadata.py +7 -5
  840. metadata/ingestion/source/pipeline/kafkaconnect/__init__.py +0 -0
  841. metadata/ingestion/source/pipeline/kafkaconnect/client.py +278 -0
  842. metadata/ingestion/source/pipeline/kafkaconnect/connection.py +58 -0
  843. metadata/ingestion/source/pipeline/kafkaconnect/metadata.py +319 -0
  844. metadata/ingestion/source/pipeline/kafkaconnect/models.py +62 -0
  845. metadata/ingestion/source/pipeline/nifi/metadata.py +4 -2
  846. metadata/ingestion/source/pipeline/openlineage/__init__.py +0 -0
  847. metadata/ingestion/source/pipeline/openlineage/connection.py +88 -0
  848. metadata/ingestion/source/pipeline/openlineage/metadata.py +520 -0
  849. metadata/ingestion/source/pipeline/openlineage/models.py +88 -0
  850. metadata/ingestion/source/pipeline/openlineage/utils.py +59 -0
  851. metadata/ingestion/source/pipeline/pipeline_service.py +13 -3
  852. metadata/ingestion/source/pipeline/spline/metadata.py +8 -6
  853. metadata/ingestion/source/search/elasticsearch/metadata.py +8 -6
  854. metadata/ingestion/source/search/search_service.py +3 -3
  855. metadata/ingestion/source/sqa_types.py +20 -1
  856. metadata/ingestion/source/storage/s3/connection.py +10 -1
  857. metadata/ingestion/source/storage/s3/metadata.py +45 -30
  858. metadata/ingestion/source/storage/s3/models.py +8 -4
  859. metadata/ingestion/source/storage/storage_service.py +4 -4
  860. metadata/ingestion/stage/table_usage.py +6 -1
  861. metadata/mixins/pandas/pandas_mixin.py +3 -3
  862. metadata/pii/processor.py +6 -1
  863. metadata/profiler/__init__.py +0 -0
  864. metadata/profiler/adaptors/__init__.py +0 -0
  865. metadata/profiler/adaptors/adaptor_factory.py +43 -0
  866. metadata/profiler/adaptors/dynamodb.py +40 -0
  867. metadata/profiler/adaptors/factory.py +76 -0
  868. metadata/profiler/adaptors/mongodb.py +178 -0
  869. metadata/profiler/adaptors/nosql_adaptor.py +65 -0
  870. metadata/profiler/api/models.py +1 -1
  871. metadata/profiler/factory.py +41 -0
  872. metadata/profiler/interface/nosql/profiler_interface.py +236 -0
  873. metadata/profiler/interface/pandas/profiler_interface.py +51 -30
  874. metadata/profiler/interface/profiler_interface.py +6 -2
  875. metadata/profiler/interface/profiler_interface_factory.py +11 -22
  876. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +77 -0
  877. metadata/profiler/interface/sqlalchemy/profiler_interface.py +2 -1
  878. metadata/profiler/interface/sqlalchemy/unity_catalog/profiler_interface.py +3 -6
  879. metadata/profiler/metrics/composed/distinct_ratio.py +2 -1
  880. metadata/profiler/metrics/composed/duplicate_count.py +2 -1
  881. metadata/profiler/metrics/composed/ilike_ratio.py +2 -1
  882. metadata/profiler/metrics/composed/iqr.py +2 -1
  883. metadata/profiler/metrics/composed/like_ratio.py +2 -1
  884. metadata/profiler/metrics/composed/non_parametric_skew.py +2 -1
  885. metadata/profiler/metrics/composed/null_ratio.py +7 -4
  886. metadata/profiler/metrics/composed/unique_ratio.py +2 -1
  887. metadata/profiler/metrics/core.py +14 -1
  888. metadata/profiler/metrics/hybrid/histogram.py +2 -1
  889. metadata/profiler/metrics/registry.py +4 -0
  890. metadata/profiler/metrics/static/column_count.py +2 -1
  891. metadata/profiler/metrics/static/column_names.py +2 -1
  892. metadata/profiler/metrics/static/count.py +2 -1
  893. metadata/profiler/metrics/static/count_in_set.py +2 -1
  894. metadata/profiler/metrics/static/distinct_count.py +11 -2
  895. metadata/profiler/metrics/static/ilike_count.py +2 -1
  896. metadata/profiler/metrics/static/like_count.py +2 -1
  897. metadata/profiler/metrics/static/max.py +26 -7
  898. metadata/profiler/metrics/static/max_length.py +3 -2
  899. metadata/profiler/metrics/static/mean.py +30 -22
  900. metadata/profiler/metrics/static/min.py +25 -6
  901. metadata/profiler/metrics/static/min_length.py +3 -2
  902. metadata/profiler/metrics/static/not_like_count.py +2 -1
  903. metadata/profiler/metrics/static/not_regexp_match_count.py +2 -1
  904. metadata/profiler/metrics/static/null_count.py +2 -1
  905. metadata/profiler/metrics/static/null_missing_count.py +73 -0
  906. metadata/profiler/metrics/static/regexp_match_count.py +2 -1
  907. metadata/profiler/metrics/static/row_count.py +9 -3
  908. metadata/profiler/metrics/static/stddev.py +2 -1
  909. metadata/profiler/metrics/static/sum.py +22 -4
  910. metadata/profiler/metrics/static/unique_count.py +13 -4
  911. metadata/profiler/metrics/system/system.py +2 -1
  912. metadata/profiler/metrics/window/first_quartile.py +2 -1
  913. metadata/profiler/metrics/window/median.py +8 -2
  914. metadata/profiler/metrics/window/third_quartile.py +2 -1
  915. metadata/profiler/orm/converter/base.py +4 -1
  916. metadata/profiler/orm/converter/bigquery/converter.py +11 -0
  917. metadata/profiler/orm/converter/common.py +47 -0
  918. metadata/profiler/orm/converter/converter_registry.py +2 -0
  919. metadata/profiler/orm/converter/redshift/converter.py +48 -0
  920. metadata/profiler/orm/converter/snowflake/converter.py +13 -0
  921. metadata/profiler/orm/functions/conn_test.py +1 -1
  922. metadata/profiler/orm/functions/sum.py +4 -2
  923. metadata/profiler/orm/functions/table_metric_computer.py +1 -1
  924. metadata/profiler/orm/registry.py +6 -3
  925. metadata/profiler/processor/core.py +58 -97
  926. metadata/profiler/processor/default.py +5 -0
  927. metadata/profiler/processor/handle_partition.py +3 -3
  928. metadata/profiler/processor/metric_filter.py +267 -0
  929. metadata/profiler/processor/processor.py +4 -2
  930. metadata/profiler/processor/sampler/nosql/sampler.py +72 -0
  931. metadata/profiler/processor/sampler/pandas/sampler.py +5 -6
  932. metadata/profiler/processor/sampler/sampler_factory.py +9 -0
  933. metadata/profiler/processor/sampler/sampler_interface.py +2 -2
  934. metadata/profiler/processor/sampler/sqlalchemy/sampler.py +3 -3
  935. metadata/profiler/source/base/profiler_source.py +11 -3
  936. metadata/profiler/source/databricks/profiler_source.py +5 -1
  937. metadata/profiler/source/metadata.py +8 -1
  938. metadata/profiler/source/metadata_ext.py +2 -0
  939. metadata/readers/dataframe/avro.py +5 -5
  940. metadata/readers/dataframe/json.py +1 -1
  941. metadata/readers/file/adls.py +20 -0
  942. metadata/readers/file/base.py +6 -0
  943. metadata/readers/file/config_source_factory.py +12 -0
  944. metadata/readers/file/gcs.py +18 -0
  945. metadata/readers/file/local.py +12 -0
  946. metadata/readers/file/s3.py +16 -0
  947. metadata/utils/constants.py +32 -24
  948. metadata/utils/datalake/datalake_utils.py +40 -4
  949. metadata/utils/elasticsearch.py +8 -0
  950. metadata/utils/execution_time_tracker.py +69 -28
  951. metadata/utils/fqn.py +61 -7
  952. metadata/utils/helpers.py +2 -0
  953. metadata/utils/importer.py +15 -6
  954. metadata/utils/logger.py +1 -1
  955. metadata/utils/lru_cache.py +2 -0
  956. metadata/utils/messaging_utils.py +43 -0
  957. metadata/utils/partition.py +93 -28
  958. metadata/utils/sqlalchemy_utils.py +60 -1
  959. metadata/utils/ssl_manager.py +181 -0
  960. metadata/utils/tag_utils.py +30 -13
  961. metadata/utils/test_utils.py +65 -0
  962. metadata/workflow/application.py +6 -1
  963. metadata/workflow/base.py +1 -1
  964. metadata/workflow/ingestion.py +19 -0
  965. metadata/workflow/metadata.py +9 -1
  966. metadata/workflow/output_handler.py +24 -2
  967. metadata/workflow/workflow_output_handler.py +2 -0
  968. {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/METADATA +325 -326
  969. openmetadata_ingestion-1.4.0.0rc2.dist-info/RECORD +1501 -0
  970. metadata/applications/auto_tagger.py +0 -212
  971. metadata/cli/backup.py +0 -202
  972. metadata/cli/db_dump.py +0 -239
  973. metadata/cli/docker.py +0 -382
  974. metadata/cli/openmetadata_dag_config_migration.py +0 -109
  975. metadata/cli/openmetadata_imports_migration.py +0 -71
  976. metadata/cli/utils.py +0 -56
  977. metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +0 -28
  978. openmetadata_ingestion-1.3.4.0.dist-info/RECORD +0 -1435
  979. {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/LICENSE +0 -0
  980. {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/WHEEL +0 -0
  981. {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/entry_points.txt +0 -0
  982. {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -71,7 +71,9 @@ from metadata.utils.helpers import get_start_and_end
71
71
  from metadata.utils.logger import ingestion_logger
72
72
  from metadata.utils.sqlalchemy_utils import (
73
73
  get_all_table_comments,
74
+ get_all_table_ddls,
74
75
  get_all_view_definitions,
76
+ get_table_ddl,
75
77
  )
76
78
 
77
79
  logger = ingestion_logger()
@@ -96,6 +98,9 @@ Inspector.get_mview_names = get_mview_names
96
98
  Inspector.get_mview_definition = get_mview_definition
97
99
  OracleDialect.get_mview_names = get_mview_names_dialect
98
100
 
101
+ Inspector.get_all_table_ddls = get_all_table_ddls
102
+ Inspector.get_table_ddl = get_table_ddl
103
+
99
104
 
100
105
  class OracleSource(StoredProcedureMixin, CommonDbSourceService):
101
106
  """
@@ -104,7 +109,9 @@ class OracleSource(StoredProcedureMixin, CommonDbSourceService):
104
109
  """
105
110
 
106
111
  @classmethod
107
- def create(cls, config_dict, metadata: OpenMetadata):
112
+ def create(
113
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
114
+ ):
108
115
  config = WorkflowSource.parse_obj(config_dict)
109
116
  connection: OracleConnection = config.serviceConnection.__root__.config
110
117
  if not isinstance(connection, OracleConnection):
@@ -136,27 +143,36 @@ class OracleSource(StoredProcedureMixin, CommonDbSourceService):
136
143
 
137
144
  return regular_tables + material_tables
138
145
 
139
- def get_view_definition(
146
+ def get_schema_definition(
140
147
  self, table_type: str, table_name: str, schema_name: str, inspector: Inspector
141
148
  ) -> Optional[str]:
142
- if table_type not in {TableType.View, TableType.MaterializedView}:
143
- return None
149
+ """
150
+ Get the DDL statement or View Definition for a table
151
+ """
152
+ try:
153
+ if table_type not in {TableType.View, TableType.MaterializedView}:
154
+ schema_definition = inspector.get_table_ddl(
155
+ self.connection, table_name, schema_name
156
+ )
144
157
 
145
- definition_fn = inspector.get_view_definition
146
- if table_type == TableType.MaterializedView:
147
- definition_fn = inspector.get_mview_definition
158
+ else:
159
+ definition_fn = inspector.get_view_definition
160
+ if table_type == TableType.MaterializedView:
161
+ definition_fn = inspector.get_mview_definition
148
162
 
149
- try:
150
- view_definition = definition_fn(table_name, schema_name)
151
- view_definition = "" if view_definition is None else str(view_definition)
152
- return view_definition
163
+ schema_definition = definition_fn(table_name, schema_name)
164
+
165
+ schema_definition = (
166
+ str(schema_definition) if schema_definition is not None else None
167
+ )
168
+ return schema_definition
153
169
 
154
170
  except NotImplementedError:
155
- logger.warning("View definition not implemented")
171
+ logger.warning("Schema definition not implemented")
156
172
 
157
173
  except Exception as exc:
158
174
  logger.debug(traceback.format_exc())
159
- logger.warning(f"Failed to fetch view definition for {table_name}: {exc}")
175
+ logger.warning(f"Failed to fetch Schema definition for {table_name}: {exc}")
160
176
  return None
161
177
 
162
178
  def process_result(self, data: FetchProcedureList):
@@ -179,7 +195,7 @@ class OracleSource(StoredProcedureMixin, CommonDbSourceService):
179
195
  if self.source_config.includeStoredProcedures:
180
196
  results: FetchProcedureList = self.engine.execute(
181
197
  ORACLE_GET_STORED_PROCEDURES.format(
182
- schema=self.context.database_schema.upper()
198
+ schema=self.context.get().database_schema.upper()
183
199
  )
184
200
  ).all()
185
201
  results = self.process_result(data=results)
@@ -207,9 +223,9 @@ class OracleSource(StoredProcedureMixin, CommonDbSourceService):
207
223
  databaseSchema=fqn.build(
208
224
  metadata=self.metadata,
209
225
  entity_type=DatabaseSchema,
210
- service_name=self.context.database_service,
211
- database_name=self.context.database,
212
- schema_name=self.context.database_schema,
226
+ service_name=self.context.get().database_service,
227
+ database_name=self.context.get().database,
228
+ schema_name=self.context.get().database_schema,
213
229
  ),
214
230
  )
215
231
  yield Either(right=stored_procedure_request)
@@ -20,7 +20,7 @@ SELECT
20
20
  comments table_comment,
21
21
  LOWER(table_name) "table_name",
22
22
  LOWER(owner) "schema"
23
- FROM dba_tab_comments
23
+ FROM ALL_TAB_COMMENTS
24
24
  where comments is not null and owner not in ('SYSTEM', 'SYS')
25
25
  """
26
26
  )
@@ -32,33 +32,33 @@ SELECT
32
32
  LOWER(view_name) AS "view_name",
33
33
  LOWER(owner) AS "schema",
34
34
  DBMS_METADATA.GET_DDL('VIEW', view_name, owner) AS view_def
35
- FROM DBA_VIEWS
35
+ FROM ALL_VIEWS
36
36
  WHERE owner NOT IN ('SYSTEM', 'SYS')
37
37
  UNION ALL
38
38
  SELECT
39
39
  LOWER(mview_name) AS "view_name",
40
40
  LOWER(owner) AS "schema",
41
41
  DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', mview_name, owner) AS view_def
42
- FROM DBA_MVIEWS
42
+ FROM ALL_MVIEWS
43
43
  WHERE owner NOT IN ('SYSTEM', 'SYS')
44
44
  """
45
45
  )
46
46
 
47
47
  GET_MATERIALIZED_VIEW_NAMES = textwrap.dedent(
48
48
  """
49
- SELECT mview_name FROM DBA_MVIEWS WHERE owner = :owner
49
+ SELECT mview_name FROM ALL_MVIEWS WHERE owner = :owner
50
50
  """
51
51
  )
52
52
 
53
53
  ORACLE_GET_TABLE_NAMES = textwrap.dedent(
54
54
  """
55
- SELECT table_name FROM DBA_TABLES WHERE
55
+ SELECT table_name FROM ALL_TABLES WHERE
56
56
  {tablespace}
57
57
  OWNER = :owner
58
58
  AND IOT_NAME IS NULL
59
59
  AND DURATION IS NULL
60
60
  AND TABLE_NAME NOT IN
61
- (SELECT mview_name FROM DBA_MVIEWS WHERE owner = :owner)
61
+ (SELECT mview_name FROM ALL_MVIEWS WHERE owner = :owner)
62
62
  """
63
63
  )
64
64
 
@@ -67,7 +67,7 @@ ORACLE_IDENTITY_TYPE = textwrap.dedent(
67
67
  col.default_on_null,
68
68
  (
69
69
  SELECT id.generation_type || ',' || id.IDENTITY_OPTIONS
70
- FROM DBA_TAB_IDENTITY_COLS{dblink} id
70
+ FROM ALL_TAB_IDENTITY_COLS{dblink} id
71
71
  WHERE col.table_name = id.table_name
72
72
  AND col.column_name = id.column_name
73
73
  AND col.owner = id.owner
@@ -83,12 +83,12 @@ SELECT
83
83
  LINE,
84
84
  TEXT
85
85
  FROM
86
- DBA_SOURCE
86
+ ALL_SOURCE
87
87
  WHERE
88
88
  type = 'PROCEDURE' and owner = '{schema}'
89
89
  """
90
90
  )
91
- CHECK_ACCESS_TO_DBA = "SELECT table_name FROM DBA_TABLES where ROWNUM < 2"
91
+ CHECK_ACCESS_TO_ALL = "SELECT table_name FROM ALL_TABLES where ROWNUM < 2"
92
92
  ORACLE_GET_STORED_PROCEDURE_QUERIES = textwrap.dedent(
93
93
  """
94
94
  WITH SP_HISTORY AS (SELECT
@@ -97,7 +97,7 @@ WITH SP_HISTORY AS (SELECT
97
97
  TO_TIMESTAMP(LAST_LOAD_TIME, 'YYYY-MM-DD HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000, 'SECOND') AS end_time,
98
98
  PARSING_SCHEMA_NAME as user_name
99
99
  FROM gv$sql
100
- WHERE sql_text LIKE 'CALL%%'
100
+ WHERE UPPER(sql_text) LIKE 'CALL%%'
101
101
  AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'YYYY-MM-DD HH24:MI:SS') >= TO_TIMESTAMP('{start_date}', 'YYYY-MM-DD HH24:MI:SS')
102
102
  ),
103
103
  Q_HISTORY AS (SELECT
@@ -114,7 +114,7 @@ WITH SP_HISTORY AS (SELECT
114
114
  PARSING_SCHEMA_NAME AS SCHEMA_NAME,
115
115
  NULL AS DATABASE_NAME
116
116
  FROM gv$sql
117
- WHERE sql_text NOT LIKE '%CALL%'
117
+ WHERE UPPER(sql_text) NOT LIKE '%CALL%'
118
118
  AND SQL_FULLTEXT NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
119
119
  AND SQL_FULLTEXT NOT LIKE '/* {{"app": "dbt", %%}} */%%'
120
120
  AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'YYYY-MM-DD HH24:MI:SS')
@@ -152,8 +152,8 @@ ORACLE_GET_COLUMNS = textwrap.dedent(
152
152
  com.comments,
153
153
  col.virtual_column,
154
154
  {identity_cols}
155
- FROM DBA_TAB_COLS{dblink} col
156
- LEFT JOIN all_col_comments{dblink} com
155
+ FROM ALL_TAB_COLS{dblink} col
156
+ LEFT JOIN ALL_COL_COMMENTS{dblink} com
157
157
  ON col.table_name = com.table_name
158
158
  AND col.column_name = com.column_name
159
159
  AND col.owner = com.owner
@@ -12,6 +12,7 @@
12
12
  Oracle query parsing module
13
13
  """
14
14
  from abc import ABC
15
+ from typing import Optional
15
16
 
16
17
  from metadata.generated.schema.entity.services.connections.database.oracleConnection import (
17
18
  OracleConnection,
@@ -35,7 +36,9 @@ class OracleQueryParserSource(QueryParserSource, ABC):
35
36
  filters: str
36
37
 
37
38
  @classmethod
38
- def create(cls, config_dict, metadata: OpenMetadata):
39
+ def create(
40
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
41
+ ):
39
42
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
40
43
  connection: OracleConnection = config.serviceConnection.__root__.config
41
44
  if not isinstance(connection, OracleConnection):
@@ -9,6 +9,7 @@
9
9
  # See the License for the specific language governing permissions and
10
10
  # limitations under the License.
11
11
  """PinotDb source module"""
12
+ from typing import Optional
12
13
 
13
14
  from metadata.generated.schema.entity.services.connections.database.pinotDBConnection import (
14
15
  PinotDBConnection,
@@ -28,7 +29,9 @@ class PinotdbSource(CommonDbSourceService):
28
29
  """
29
30
 
30
31
  @classmethod
31
- def create(cls, config_dict, metadata: OpenMetadata):
32
+ def create(
33
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
34
+ ):
32
35
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
33
36
  connection: PinotDBConnection = config.serviceConnection.__root__.config
34
37
  if not isinstance(connection, PinotDBConnection):
@@ -26,13 +26,11 @@ from metadata.generated.schema.entity.services.connections.database.common.basic
26
26
  )
27
27
  from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
28
28
  PostgresConnection,
29
- SslMode,
30
29
  )
31
30
  from metadata.ingestion.connections.builders import (
32
31
  create_generic_db_connection,
33
32
  get_connection_args_common,
34
33
  get_connection_url_common,
35
- init_empty_connection_arguments,
36
34
  )
37
35
  from metadata.ingestion.connections.test_connections import test_connection_db_common
38
36
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
@@ -61,14 +59,6 @@ def get_connection(connection: PostgresConnection) -> Engine:
61
59
  *connection.authType.azureConfig.scopes.split(",")
62
60
  )
63
61
  connection.authType = BasicAuth(password=access_token_obj.token)
64
- if connection.sslMode:
65
- if not connection.connectionArguments:
66
- connection.connectionArguments = init_empty_connection_arguments()
67
- connection.connectionArguments.__root__["sslmode"] = connection.sslMode.value
68
- if connection.sslMode in (SslMode.verify_ca, SslMode.verify_full):
69
- connection.connectionArguments.__root__[
70
- "sslrootcert"
71
- ] = connection.sslConfig.__root__.certificatePath
72
62
  return create_generic_db_connection(
73
63
  connection=connection,
74
64
  get_connection_url_fn=get_connection_url_common,
@@ -15,13 +15,15 @@ import traceback
15
15
  from collections import namedtuple
16
16
  from typing import Iterable, Optional, Tuple
17
17
 
18
+ from sqlalchemy import String as SqlAlchemyString
18
19
  from sqlalchemy import sql
19
20
  from sqlalchemy.dialects.postgresql.base import PGDialect, ischema_names
20
21
  from sqlalchemy.engine import Inspector
21
22
 
22
23
  from metadata.generated.schema.entity.data.database import Database
23
24
  from metadata.generated.schema.entity.data.table import (
24
- IntervalType,
25
+ PartitionColumnDetails,
26
+ PartitionIntervalTypes,
25
27
  TablePartition,
26
28
  TableType,
27
29
  )
@@ -54,6 +56,7 @@ from metadata.ingestion.source.database.postgres.utils import (
54
56
  get_column_info,
55
57
  get_columns,
56
58
  get_etable_owner,
59
+ get_foreign_keys,
57
60
  get_table_comment,
58
61
  get_table_owner,
59
62
  get_view_definition,
@@ -63,8 +66,10 @@ from metadata.utils.filters import filter_by_database
63
66
  from metadata.utils.logger import ingestion_logger
64
67
  from metadata.utils.sqlalchemy_utils import (
65
68
  get_all_table_comments,
69
+ get_all_table_ddls,
66
70
  get_all_table_owners,
67
71
  get_all_view_definitions,
72
+ get_table_ddl,
68
73
  )
69
74
  from metadata.utils.tag_utils import get_ometa_tag_and_classification
70
75
 
@@ -74,9 +79,9 @@ logger = ingestion_logger()
74
79
 
75
80
 
76
81
  INTERVAL_TYPE_MAP = {
77
- "list": IntervalType.COLUMN_VALUE.value,
78
- "hash": IntervalType.COLUMN_VALUE.value,
79
- "range": IntervalType.TIME_UNIT.value,
82
+ "list": PartitionIntervalTypes.COLUMN_VALUE,
83
+ "hash": PartitionIntervalTypes.COLUMN_VALUE,
84
+ "range": PartitionIntervalTypes.TIME_UNIT,
80
85
  }
81
86
 
82
87
  RELKIND_MAP = {
@@ -95,6 +100,7 @@ ischema_names.update(
95
100
  "point": POINT,
96
101
  "polygon": POLYGON,
97
102
  "box": create_sqlalchemy_type("BOX"),
103
+ "bpchar": SqlAlchemyString,
98
104
  "circle": create_sqlalchemy_type("CIRCLE"),
99
105
  "line": create_sqlalchemy_type("LINE"),
100
106
  "lseg": create_sqlalchemy_type("LSEG"),
@@ -103,6 +109,7 @@ ischema_names.update(
103
109
  "pg_snapshot": create_sqlalchemy_type("PG_SNAPSHOT"),
104
110
  "tsquery": create_sqlalchemy_type("TSQUERY"),
105
111
  "txid_snapshot": create_sqlalchemy_type("TXID_SNAPSHOT"),
112
+ "xid": SqlAlchemyString,
106
113
  "xml": create_sqlalchemy_type("XML"),
107
114
  }
108
115
  )
@@ -119,8 +126,12 @@ PGDialect.get_all_table_owners = get_all_table_owners
119
126
  PGDialect.get_table_owner = get_table_owner
120
127
  PGDialect.ischema_names = ischema_names
121
128
 
129
+ Inspector.get_all_table_ddls = get_all_table_ddls
130
+ Inspector.get_table_ddl = get_table_ddl
122
131
  Inspector.get_table_owner = get_etable_owner
123
132
 
133
+ PGDialect.get_foreign_keys = get_foreign_keys
134
+
124
135
 
125
136
  class PostgresSource(CommonDbSourceService, MultiDBSource):
126
137
  """
@@ -129,7 +140,9 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
129
140
  """
130
141
 
131
142
  @classmethod
132
- def create(cls, config_dict, metadata: OpenMetadata):
143
+ def create(
144
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
145
+ ):
133
146
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
134
147
  connection: PostgresConnection = config.serviceConnection.__root__.config
135
148
  if not isinstance(connection, PostgresConnection):
@@ -175,15 +188,17 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
175
188
  database_fqn = fqn.build(
176
189
  self.metadata,
177
190
  entity_type=Database,
178
- service_name=self.context.database_service,
191
+ service_name=self.context.get().database_service,
179
192
  database_name=new_database,
180
193
  )
181
194
 
182
195
  if filter_by_database(
183
196
  self.source_config.databaseFilterPattern,
184
- database_fqn
185
- if self.source_config.useFqnForFiltering
186
- else new_database,
197
+ (
198
+ database_fqn
199
+ if self.source_config.useFqnForFiltering
200
+ else new_database
201
+ ),
187
202
  ):
188
203
  self.status.filter(database_fqn, "Database Filtered Out")
189
204
  continue
@@ -203,12 +218,20 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
203
218
  result = self.engine.execute(
204
219
  POSTGRES_PARTITION_DETAILS, table_name=table_name, schema_name=schema_name
205
220
  ).all()
221
+
206
222
  if result:
207
223
  partition_details = TablePartition(
208
- intervalType=INTERVAL_TYPE_MAP.get(
209
- result[0].partition_strategy, IntervalType.COLUMN_VALUE.value
210
- ),
211
- columns=[row.column_name for row in result if row.column_name],
224
+ columns=[
225
+ PartitionColumnDetails(
226
+ columnName=row.column_name,
227
+ intervalType=INTERVAL_TYPE_MAP.get(
228
+ row.partition_strategy, PartitionIntervalTypes.COLUMN_VALUE
229
+ ),
230
+ interval=None,
231
+ )
232
+ for row in result
233
+ if row.column_name
234
+ ]
212
235
  )
213
236
  return True, partition_details
214
237
  return False, None
@@ -222,7 +245,7 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
222
245
  try:
223
246
  result = self.engine.execute(
224
247
  POSTGRES_GET_ALL_TABLE_PG_POLICY.format(
225
- database_name=self.context.database,
248
+ database_name=self.context.get().database,
226
249
  schema_name=schema_name,
227
250
  )
228
251
  ).all()
@@ -231,7 +254,7 @@ class PostgresSource(CommonDbSourceService, MultiDBSource):
231
254
  fqn_elements = [name for name in row[2:] if name]
232
255
  yield from get_ometa_tag_and_classification(
233
256
  tag_fqn=fqn._build( # pylint: disable=protected-access
234
- self.context.database_service, *fqn_elements
257
+ self.context.get().database_service, *fqn_elements
235
258
  ),
236
259
  tags=[row[1]],
237
260
  classification_name=self.service_connection.classificationName,
@@ -76,7 +76,7 @@ POSTGRES_PARTITION_DETAILS = textwrap.dedent(
76
76
  )
77
77
 
78
78
  POSTGRES_GET_ALL_TABLE_PG_POLICY = """
79
- SELECT object_id, polname, table_catalog , table_schema ,table_name
79
+ SELECT object_id, polname, table_catalog, table_schema, table_name
80
80
  FROM information_schema.tables AS it
81
81
  JOIN (SELECT pc.oid as object_id, pc.relname, pp.*
82
82
  FROM pg_policy AS pp
@@ -188,3 +188,19 @@ POSTGRES_SQL_COLUMNS = """
188
188
  POSTGRES_GET_SERVER_VERSION = """
189
189
  show server_version
190
190
  """
191
+
192
+ POSTGRES_FETCH_FK = """
193
+ SELECT r.conname,
194
+ pg_catalog.pg_get_constraintdef(r.oid, true) as condef,
195
+ n.nspname as conschema,
196
+ d.datname AS con_db_name
197
+ FROM pg_catalog.pg_constraint r,
198
+ pg_namespace n,
199
+ pg_class c
200
+ JOIN pg_database d ON d.datname = current_database()
201
+ WHERE r.conrelid = :table AND
202
+ r.contype = 'f' AND
203
+ c.oid = confrelid AND
204
+ n.oid = c.relnamespace
205
+ ORDER BY 1
206
+ """
@@ -13,7 +13,7 @@ Postgres Query parser module
13
13
  """
14
14
  import traceback
15
15
  from abc import ABC
16
- from typing import Iterable
16
+ from typing import Iterable, Optional
17
17
 
18
18
  from sqlalchemy.engine.base import Engine
19
19
 
@@ -53,7 +53,9 @@ class PostgresQueryParserSource(QueryParserSource, ABC):
53
53
  self.start, self.end = get_start_and_end(duration)
54
54
 
55
55
  @classmethod
56
- def create(cls, config_dict, metadata: OpenMetadata):
56
+ def create(
57
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
58
+ ):
57
59
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
58
60
  connection: PostgresConnection = config.serviceConnection.__root__.config
59
61
  if not isinstance(connection, PostgresConnection):
@@ -25,6 +25,7 @@ from sqlalchemy.sql import sqltypes
25
25
 
26
26
  from metadata.ingestion.source.database.postgres.queries import (
27
27
  POSTGRES_COL_IDENTITY,
28
+ POSTGRES_FETCH_FK,
28
29
  POSTGRES_GET_SERVER_VERSION,
29
30
  POSTGRES_SQL_COLUMNS,
30
31
  POSTGRES_TABLE_COMMENTS,
@@ -62,6 +63,103 @@ def get_etable_owner(
62
63
  )
63
64
 
64
65
 
66
+ @reflection.cache
67
+ def get_foreign_keys(
68
+ self, connection, table_name, schema=None, postgresql_ignore_search_path=False, **kw
69
+ ):
70
+ preparer = self.identifier_preparer
71
+ table_oid = self.get_table_oid(
72
+ connection, table_name, schema, info_cache=kw.get("info_cache")
73
+ )
74
+
75
+ # https://www.postgresql.org/docs/9.0/static/sql-createtable.html
76
+ FK_REGEX = re.compile(
77
+ r"FOREIGN KEY \((.*?)\) REFERENCES (?:(.*?)\.)?(.*?)\((.*?)\)"
78
+ r"[\s]?(MATCH (FULL|PARTIAL|SIMPLE)+)?"
79
+ r"[\s]?(ON UPDATE "
80
+ r"(CASCADE|RESTRICT|NO ACTION|SET NULL|SET DEFAULT)+)?"
81
+ r"[\s]?(ON DELETE "
82
+ r"(CASCADE|RESTRICT|NO ACTION|SET NULL|SET DEFAULT)+)?"
83
+ r"[\s]?(DEFERRABLE|NOT DEFERRABLE)?"
84
+ r"[\s]?(INITIALLY (DEFERRED|IMMEDIATE)+)?"
85
+ )
86
+
87
+ t = sql.text(POSTGRES_FETCH_FK).columns(
88
+ conname=sqltypes.Unicode, condef=sqltypes.Unicode, con_db_name=sqltypes.Unicode
89
+ )
90
+ c = connection.execute(t, dict(table=table_oid))
91
+ fkeys = []
92
+ for conname, condef, conschema, con_db_name in c.fetchall():
93
+ m = re.search(FK_REGEX, condef).groups()
94
+
95
+ (
96
+ constrained_columns,
97
+ referred_schema,
98
+ referred_table,
99
+ referred_columns,
100
+ _,
101
+ match,
102
+ _,
103
+ onupdate,
104
+ _,
105
+ ondelete,
106
+ deferrable,
107
+ _,
108
+ initially,
109
+ ) = m
110
+
111
+ if deferrable is not None:
112
+ deferrable = True if deferrable == "DEFERRABLE" else False
113
+ constrained_columns = tuple(re.split(r"\s*,\s*", constrained_columns))
114
+ constrained_columns = [
115
+ preparer._unquote_identifier(x) for x in constrained_columns
116
+ ]
117
+
118
+ if postgresql_ignore_search_path:
119
+ # when ignoring search path, we use the actual schema
120
+ # provided it isn't the "default" schema
121
+ if conschema != self.default_schema_name:
122
+ referred_schema = conschema
123
+ else:
124
+ referred_schema = schema
125
+ elif referred_schema:
126
+ # referred_schema is the schema that we regexp'ed from
127
+ # pg_get_constraintdef(). If the schema is in the search
128
+ # path, pg_get_constraintdef() will give us None.
129
+ referred_schema = preparer._unquote_identifier(referred_schema)
130
+ elif schema is not None and schema == conschema:
131
+ # If the actual schema matches the schema of the table
132
+ # we're reflecting, then we will use that.
133
+ referred_schema = schema
134
+
135
+ referred_table = preparer._unquote_identifier(referred_table)
136
+ referred_columns = tuple(re.split(r"\s*,\s", referred_columns))
137
+ referred_columns = [preparer._unquote_identifier(x) for x in referred_columns]
138
+ options = {
139
+ k: v
140
+ for k, v in [
141
+ ("onupdate", onupdate),
142
+ ("ondelete", ondelete),
143
+ ("initially", initially),
144
+ ("deferrable", deferrable),
145
+ ("match", match),
146
+ ]
147
+ if v is not None and v != "NO ACTION"
148
+ }
149
+ referred_database = con_db_name if con_db_name else ""
150
+ fkey_d = {
151
+ "name": conname,
152
+ "constrained_columns": constrained_columns,
153
+ "referred_schema": referred_schema,
154
+ "referred_table": referred_table,
155
+ "referred_columns": referred_columns,
156
+ "options": options,
157
+ "referred_database": referred_database,
158
+ }
159
+ fkeys.append(fkey_d)
160
+ return fkeys
161
+
162
+
65
163
  @reflection.cache
66
164
  def get_table_owner(
67
165
  self, connection, table_name, schema=None, **kw
@@ -28,6 +28,7 @@ from metadata.generated.schema.entity.services.connections.database.prestoConnec
28
28
  from metadata.ingestion.connections.builders import (
29
29
  create_generic_db_connection,
30
30
  get_connection_args_common,
31
+ init_empty_connection_arguments,
31
32
  )
32
33
  from metadata.ingestion.connections.test_connections import (
33
34
  execute_inspector_func,
@@ -58,6 +59,19 @@ def get_connection(connection: PrestoConnection) -> Engine:
58
59
  """
59
60
  Create connection
60
61
  """
62
+ connection.connectionArguments = (
63
+ connection.connectionArguments or init_empty_connection_arguments()
64
+ )
65
+ if connection.protocol:
66
+ connection.connectionArguments.__root__["protocol"] = connection.protocol
67
+ if connection.verify:
68
+ connection.connectionArguments = (
69
+ connection.connectionArguments or init_empty_connection_arguments()
70
+ )
71
+ connection.connectionArguments.__root__["requests_kwargs"] = {
72
+ "verify": connection.verify
73
+ }
74
+
61
75
  return create_generic_db_connection(
62
76
  connection=connection,
63
77
  get_connection_url_fn=get_connection_url,
@@ -15,10 +15,10 @@ Presto source module
15
15
  import re
16
16
  import traceback
17
17
  from copy import deepcopy
18
- from typing import Iterable
18
+ from typing import Iterable, Optional
19
19
 
20
20
  from pyhive.sqlalchemy_presto import PrestoDialect, _type_map
21
- from sqlalchemy import inspect, types, util
21
+ from sqlalchemy import types, util
22
22
  from sqlalchemy.engine import reflection
23
23
 
24
24
  from metadata.generated.schema.entity.data.database import Database
@@ -118,7 +118,9 @@ class PrestoSource(CommonDbSourceService):
118
118
  """
119
119
 
120
120
  @classmethod
121
- def create(cls, config_dict, metadata: OpenMetadata):
121
+ def create(
122
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
123
+ ):
122
124
  config = WorkflowSource.parse_obj(config_dict)
123
125
  connection: PrestoConnection = config.serviceConnection.__root__.config
124
126
  if not isinstance(connection, PrestoConnection):
@@ -138,7 +140,8 @@ class PrestoSource(CommonDbSourceService):
138
140
  new_service_connection = deepcopy(self.service_connection)
139
141
  new_service_connection.catalog = database_name
140
142
  self.engine = get_connection(new_service_connection)
141
- self.inspector = inspect(self.engine)
143
+ self._connection_map = {} # Lazy init as well
144
+ self._inspector_map = {}
142
145
 
143
146
  def get_database_names(self) -> Iterable[str]:
144
147
  configured_catalog = self.service_connection.catalog
@@ -153,7 +156,7 @@ class PrestoSource(CommonDbSourceService):
153
156
  database_fqn = fqn.build(
154
157
  self.metadata,
155
158
  entity_type=Database,
156
- service_name=self.context.database_service,
159
+ service_name=self.context.get().database_service,
157
160
  database_name=new_catalog,
158
161
  )
159
162
  if filter_by_database(
@@ -11,6 +11,8 @@
11
11
  """
12
12
  Common Query Log Connector
13
13
  """
14
+ from typing import Optional
15
+
14
16
  from metadata.generated.schema.metadataIngestion.workflow import (
15
17
  Source as WorkflowSource,
16
18
  )
@@ -20,7 +22,9 @@ from metadata.ingestion.source.database.lineage_source import LineageSource
20
22
 
21
23
  class QueryLogLineageSource(LineageSource):
22
24
  @classmethod
23
- def create(cls, config_dict, metadata: OpenMetadata):
25
+ def create(
26
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
27
+ ):
24
28
  config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
25
29
  return cls(config, metadata)
26
30