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

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

Potentially problematic release.


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

Files changed (989) hide show
  1. metadata/__version__.py +13 -0
  2. metadata/automations/runner.py +9 -0
  3. metadata/cli/app.py +0 -1
  4. metadata/cli/lineage.py +5 -1
  5. metadata/cli/restore.py +7 -0
  6. metadata/cmd.py +2 -345
  7. metadata/data_insight/processor/reports/cost_analysis_report_data_processor.py +0 -1
  8. metadata/data_insight/processor/reports/web_analytic_report_data_processor.py +12 -5
  9. metadata/data_quality/api/models.py +1 -0
  10. metadata/data_quality/processor/test_case_runner.py +9 -2
  11. metadata/data_quality/source/test_suite.py +14 -3
  12. metadata/data_quality/validations/base_test_handler.py +1 -1
  13. metadata/data_quality/validations/column/base/columnValuesMissingCount.py +4 -1
  14. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +28 -17
  15. metadata/data_quality/validations/mixins/sqa_validator_mixin.py +4 -1
  16. metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +1 -1
  17. metadata/examples/workflows/airbyte.yaml +1 -0
  18. metadata/examples/workflows/airflow.yaml +1 -1
  19. metadata/examples/workflows/airflow_backend.yaml +1 -1
  20. metadata/examples/workflows/airflow_postgres.yaml +1 -1
  21. metadata/examples/workflows/amundsen.yaml +1 -0
  22. metadata/examples/workflows/athena.yaml +1 -0
  23. metadata/examples/workflows/athena_lineage.yaml +1 -1
  24. metadata/examples/workflows/athena_usage.yaml +1 -0
  25. metadata/examples/workflows/atlas.yaml +1 -0
  26. metadata/examples/workflows/azuresql.yaml +1 -0
  27. metadata/examples/workflows/azuresql_lineage.yaml +1 -0
  28. metadata/examples/workflows/azuresql_usage.yaml +1 -0
  29. metadata/examples/workflows/bigquery.yaml +1 -0
  30. metadata/examples/workflows/bigquery_lineage.yaml +1 -0
  31. metadata/examples/workflows/bigquery_profiler.yaml +1 -0
  32. metadata/examples/workflows/bigquery_usage.yaml +1 -0
  33. metadata/examples/workflows/bigtable.yaml +1 -1
  34. metadata/examples/workflows/clickhouse.yaml +1 -0
  35. metadata/examples/workflows/clickhouse_lineage.yaml +1 -0
  36. metadata/examples/workflows/clickhouse_usage.yaml +1 -0
  37. metadata/examples/workflows/couchbase.yaml +1 -1
  38. metadata/examples/workflows/dagster.yaml +1 -0
  39. metadata/examples/workflows/data_insight.yaml +1 -1
  40. metadata/examples/workflows/databricks.yaml +1 -0
  41. metadata/examples/workflows/databricks_lineage.yaml +1 -0
  42. metadata/examples/workflows/databricks_pipeline.yaml +1 -0
  43. metadata/examples/workflows/databricks_usage.yaml +1 -0
  44. metadata/examples/workflows/datalake_azure_client_secret.yaml +1 -0
  45. metadata/examples/workflows/datalake_gcs.yaml +1 -0
  46. metadata/examples/workflows/datalake_profiler.yaml +1 -0
  47. metadata/examples/workflows/datalake_s3.yaml +1 -0
  48. metadata/examples/workflows/db2.yaml +1 -0
  49. metadata/examples/workflows/db2_profiler.yaml +1 -0
  50. metadata/examples/workflows/dbt.yaml +2 -0
  51. metadata/examples/workflows/deltalake.yaml +1 -0
  52. metadata/examples/workflows/domodashboard.yaml +1 -0
  53. metadata/examples/workflows/dynamodb.yaml +1 -0
  54. metadata/examples/workflows/elasticsearch.yaml +1 -1
  55. metadata/examples/workflows/fivetran.yaml +1 -0
  56. metadata/examples/workflows/glue.yaml +1 -0
  57. metadata/examples/workflows/gluepipeline.yaml +1 -0
  58. metadata/examples/workflows/hive.yaml +1 -0
  59. metadata/examples/workflows/impala.yaml +1 -0
  60. metadata/examples/workflows/kafka.yaml +1 -1
  61. metadata/examples/workflows/kafka_connect.yaml +30 -0
  62. metadata/examples/workflows/kinesis.yaml +1 -1
  63. metadata/examples/workflows/lightdash.yaml +1 -0
  64. metadata/examples/workflows/looker.yaml +1 -0
  65. metadata/examples/workflows/mariadb.yaml +1 -0
  66. metadata/examples/workflows/metabase.yaml +1 -0
  67. metadata/examples/workflows/mlflow.yaml +1 -0
  68. metadata/examples/workflows/mode.yaml +3 -1
  69. metadata/examples/workflows/mongodb.yaml +1 -0
  70. metadata/examples/workflows/mssql.yaml +1 -0
  71. metadata/examples/workflows/mssql_lineage.yaml +1 -0
  72. metadata/examples/workflows/mssql_usage.yaml +1 -0
  73. metadata/examples/workflows/mstr.yaml +1 -0
  74. metadata/examples/workflows/mysql.yaml +1 -0
  75. metadata/examples/workflows/mysql_profiler.yaml +1 -0
  76. metadata/examples/workflows/openmetadata.yaml +1 -0
  77. metadata/examples/workflows/oracle.yaml +1 -0
  78. metadata/examples/workflows/oracle_lineage.yaml +1 -1
  79. metadata/examples/workflows/oracle_usage.yaml +1 -0
  80. metadata/examples/workflows/pinotdb.yaml +1 -0
  81. metadata/examples/workflows/postgres.yaml +1 -0
  82. metadata/examples/workflows/postgres_lineage.yaml +1 -1
  83. metadata/examples/workflows/postgres_usage.yaml +1 -1
  84. metadata/examples/workflows/powerbi.yaml +52 -0
  85. metadata/examples/workflows/presto.yaml +1 -0
  86. metadata/examples/workflows/qlik_sense.yaml +6 -4
  87. metadata/examples/workflows/qlikcloud.yaml +31 -0
  88. metadata/examples/workflows/query_log_usage.yaml +1 -0
  89. metadata/examples/workflows/quicksight.yaml +1 -0
  90. metadata/examples/workflows/redash.yaml +1 -0
  91. metadata/examples/workflows/redpanda.yaml +1 -0
  92. metadata/examples/workflows/redshift.yaml +1 -0
  93. metadata/examples/workflows/redshift_lineage.yaml +1 -0
  94. metadata/examples/workflows/redshift_profiler.yaml +1 -0
  95. metadata/examples/workflows/redshift_usage.yaml +1 -0
  96. metadata/examples/workflows/sagemaker.yaml +1 -1
  97. metadata/examples/workflows/salesforce.yaml +1 -0
  98. metadata/examples/workflows/sas.yaml +1 -1
  99. metadata/examples/workflows/singlestore.yaml +1 -0
  100. metadata/examples/workflows/snowflake.yaml +1 -0
  101. metadata/examples/workflows/snowflake_lineage.yaml +1 -0
  102. metadata/examples/workflows/snowflake_usage.yaml +1 -0
  103. metadata/examples/workflows/spline.yaml +5 -4
  104. metadata/examples/workflows/sqlite.yaml +1 -0
  105. metadata/examples/workflows/superset.yaml +1 -0
  106. metadata/examples/workflows/tableau.yaml +1 -0
  107. metadata/examples/workflows/test_suite.yaml +13 -16
  108. metadata/examples/workflows/trino.yaml +1 -0
  109. metadata/examples/workflows/trino_lineage.yaml +1 -0
  110. metadata/examples/workflows/trino_usage.yaml +1 -0
  111. metadata/examples/workflows/unity_catalog.yaml +1 -1
  112. metadata/examples/workflows/unity_catalog_lineage.yaml +1 -1
  113. metadata/examples/workflows/unity_catalog_usage.yaml +1 -1
  114. metadata/examples/workflows/vertica.yaml +1 -0
  115. metadata/generated/antlr/EntityLinkLexer.py +354 -349
  116. metadata/generated/schema/analytics/__init__.py +1 -1
  117. metadata/generated/schema/analytics/basic.py +1 -1
  118. metadata/generated/schema/analytics/reportData.py +1 -1
  119. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  120. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  121. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  122. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  123. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  124. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  125. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  126. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  127. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  128. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  129. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  130. metadata/generated/schema/api/__init__.py +1 -1
  131. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  132. metadata/generated/schema/api/analytics/__init__.py +1 -1
  133. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  134. metadata/generated/schema/api/automations/__init__.py +1 -1
  135. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  136. metadata/generated/schema/api/bulkAssets.py +1 -1
  137. metadata/generated/schema/api/classification/__init__.py +1 -1
  138. metadata/generated/schema/api/classification/createClassification.py +2 -3
  139. metadata/generated/schema/api/classification/createTag.py +2 -3
  140. metadata/generated/schema/api/classification/loadTags.py +1 -1
  141. metadata/generated/schema/api/createBot.py +1 -1
  142. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  143. metadata/generated/schema/api/createType.py +1 -1
  144. metadata/generated/schema/api/data/__init__.py +1 -1
  145. metadata/generated/schema/api/data/createChart.py +1 -1
  146. metadata/generated/schema/api/data/createContainer.py +4 -1
  147. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  148. metadata/generated/schema/api/data/createDashboard.py +1 -1
  149. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  150. metadata/generated/schema/api/data/createDatabase.py +1 -1
  151. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  152. metadata/generated/schema/api/data/createGlossary.py +1 -1
  153. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  154. metadata/generated/schema/api/data/createMlModel.py +1 -1
  155. metadata/generated/schema/api/data/createPipeline.py +1 -1
  156. metadata/generated/schema/api/data/createQuery.py +1 -1
  157. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  158. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  159. metadata/generated/schema/api/data/createTable.py +4 -3
  160. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  161. metadata/generated/schema/api/data/createTopic.py +1 -1
  162. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  163. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  164. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  165. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  166. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  167. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  168. metadata/generated/schema/api/docStore/__init__.py +1 -1
  169. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  170. metadata/generated/schema/api/domains/__init__.py +1 -1
  171. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  172. metadata/generated/schema/api/domains/createDomain.py +1 -1
  173. metadata/generated/schema/api/feed/__init__.py +1 -1
  174. metadata/generated/schema/api/feed/closeTask.py +1 -1
  175. metadata/generated/schema/api/feed/createPost.py +1 -1
  176. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  177. metadata/generated/schema/api/feed/createThread.py +1 -1
  178. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  179. metadata/generated/schema/api/feed/threadCount.py +1 -1
  180. metadata/generated/schema/api/lineage/__init__.py +1 -1
  181. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  182. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  183. metadata/generated/schema/api/policies/__init__.py +1 -1
  184. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  185. metadata/generated/schema/api/services/__init__.py +1 -1
  186. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  187. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  188. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  189. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  190. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  191. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  192. metadata/generated/schema/api/services/createSearchService.py +1 -1
  193. metadata/generated/schema/api/services/createStorageService.py +1 -1
  194. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  195. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  196. metadata/generated/schema/api/setOwner.py +1 -1
  197. metadata/generated/schema/api/teams/__init__.py +1 -1
  198. metadata/generated/schema/api/teams/createPersona.py +1 -1
  199. metadata/generated/schema/api/teams/createRole.py +1 -1
  200. metadata/generated/schema/api/teams/createTeam.py +1 -1
  201. metadata/generated/schema/api/teams/createUser.py +2 -2
  202. metadata/generated/schema/api/tests/__init__.py +1 -1
  203. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  204. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  205. metadata/generated/schema/api/tests/createTestCase.py +2 -2
  206. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  207. metadata/generated/schema/api/tests/createTestDefinition.py +2 -2
  208. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  209. metadata/generated/schema/api/voteRequest.py +1 -1
  210. metadata/generated/schema/auth/__init__.py +1 -1
  211. metadata/generated/schema/auth/basicAuth.py +1 -1
  212. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  213. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  214. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  215. metadata/generated/schema/auth/emailRequest.py +1 -1
  216. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  217. metadata/generated/schema/auth/generateToken.py +1 -1
  218. metadata/generated/schema/auth/jwtAuth.py +1 -1
  219. metadata/generated/schema/auth/loginRequest.py +1 -1
  220. metadata/generated/schema/auth/logoutRequest.py +1 -1
  221. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  222. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  223. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  224. metadata/generated/schema/auth/refreshToken.py +1 -1
  225. metadata/generated/schema/auth/registrationRequest.py +1 -1
  226. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  227. metadata/generated/schema/auth/revokeToken.py +1 -1
  228. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  229. metadata/generated/schema/auth/ssoAuth.py +1 -1
  230. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  231. metadata/generated/schema/configuration/__init__.py +1 -1
  232. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  233. metadata/generated/schema/configuration/authConfig.py +1 -1
  234. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  235. metadata/generated/schema/configuration/authorizerConfiguration.py +4 -1
  236. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  237. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  238. metadata/generated/schema/configuration/elasticSearchConfiguration.py +4 -1
  239. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  240. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  241. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  242. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  243. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  244. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  245. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  246. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  247. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  248. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  249. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  250. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  251. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  252. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  253. metadata/generated/schema/configuration/profilerConfiguration.py +66 -0
  254. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  255. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  256. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  257. metadata/generated/schema/configuration/themeConfiguration.py +32 -0
  258. metadata/generated/schema/configuration/uiThemePreference.py +23 -0
  259. metadata/generated/schema/dataInsight/__init__.py +1 -1
  260. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  261. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  262. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  263. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  264. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  265. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  266. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  267. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  268. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  269. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  270. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  271. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  272. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  273. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  274. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  275. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  276. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  277. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  278. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  279. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  280. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  281. metadata/generated/schema/email/__init__.py +1 -1
  282. metadata/generated/schema/email/emailRequest.py +1 -1
  283. metadata/generated/schema/email/smtpSettings.py +3 -3
  284. metadata/generated/schema/entity/__init__.py +1 -1
  285. metadata/generated/schema/entity/applications/__init__.py +1 -1
  286. metadata/generated/schema/entity/applications/app.py +1 -1
  287. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  288. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  289. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +3 -3
  290. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  291. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +5 -0
  292. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +36 -0
  293. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +31 -0
  294. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +31 -0
  295. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +36 -0
  296. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +31 -0
  297. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +28 -0
  298. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +22 -0
  299. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +30 -0
  300. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +22 -0
  301. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +22 -0
  302. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +31 -0
  303. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +22 -0
  304. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +75 -0
  305. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
  306. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  307. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  308. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  309. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  310. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  311. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  312. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  313. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  314. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  315. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  316. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  317. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  318. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  319. metadata/generated/schema/entity/automations/__init__.py +1 -1
  320. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  321. metadata/generated/schema/entity/automations/workflow.py +1 -1
  322. metadata/generated/schema/entity/bot.py +1 -1
  323. metadata/generated/schema/entity/classification/__init__.py +1 -1
  324. metadata/generated/schema/entity/classification/classification.py +2 -3
  325. metadata/generated/schema/entity/classification/tag.py +3 -9
  326. metadata/generated/schema/entity/data/__init__.py +1 -1
  327. metadata/generated/schema/entity/data/chart.py +1 -1
  328. metadata/generated/schema/entity/data/container.py +4 -1
  329. metadata/generated/schema/entity/data/dashboard.py +1 -1
  330. metadata/generated/schema/entity/data/dashboardDataModel.py +2 -2
  331. metadata/generated/schema/entity/data/database.py +1 -1
  332. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  333. metadata/generated/schema/entity/data/glossary.py +1 -1
  334. metadata/generated/schema/entity/data/glossaryTerm.py +4 -1
  335. metadata/generated/schema/entity/data/metrics.py +1 -1
  336. metadata/generated/schema/entity/data/mlmodel.py +2 -2
  337. metadata/generated/schema/entity/data/pipeline.py +1 -1
  338. metadata/generated/schema/entity/data/query.py +1 -1
  339. metadata/generated/schema/entity/data/report.py +1 -1
  340. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  341. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  342. metadata/generated/schema/entity/data/table.py +26 -24
  343. metadata/generated/schema/entity/data/topic.py +1 -1
  344. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  345. metadata/generated/schema/entity/docStore/document.py +1 -1
  346. metadata/generated/schema/entity/domains/__init__.py +1 -1
  347. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  348. metadata/generated/schema/entity/domains/domain.py +1 -1
  349. metadata/generated/schema/entity/events/__init__.py +1 -1
  350. metadata/generated/schema/entity/events/webhook.py +1 -1
  351. metadata/generated/schema/entity/feed/__init__.py +1 -1
  352. metadata/generated/schema/entity/feed/assets.py +18 -0
  353. metadata/generated/schema/entity/feed/customProperty.py +17 -0
  354. metadata/generated/schema/entity/feed/description.py +24 -0
  355. metadata/generated/schema/entity/feed/domain.py +23 -0
  356. metadata/generated/schema/entity/feed/entityInfo.py +19 -0
  357. metadata/generated/schema/entity/feed/owner.py +23 -0
  358. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  359. metadata/generated/schema/entity/feed/tag.py +23 -0
  360. metadata/generated/schema/entity/feed/testCaseResult.py +26 -0
  361. metadata/generated/schema/entity/feed/thread.py +81 -2
  362. metadata/generated/schema/entity/policies/__init__.py +1 -1
  363. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  364. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +3 -1
  365. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  366. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  367. metadata/generated/schema/entity/policies/filters.py +3 -3
  368. metadata/generated/schema/entity/policies/policy.py +1 -1
  369. metadata/generated/schema/entity/services/__init__.py +1 -1
  370. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  372. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  373. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  374. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  375. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +33 -2
  385. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +3 -0
  386. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +37 -0
  387. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +25 -0
  388. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +37 -0
  389. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +37 -0
  390. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +38 -0
  391. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +6 -15
  392. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +2 -2
  417. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +4 -13
  419. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +4 -1
  421. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +2 -15
  423. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +4 -1
  435. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +4 -13
  437. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +2 -15
  440. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +11 -1
  441. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +2 -15
  442. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +12 -3
  452. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  455. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +7 -1
  457. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  461. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  462. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +7 -3
  463. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  468. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  473. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +61 -0
  483. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +73 -0
  485. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  488. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  490. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  491. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  492. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  495. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  496. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  497. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  498. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  499. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +5 -2
  500. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  501. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  502. metadata/generated/schema/entity/services/dashboardService.py +4 -1
  503. metadata/generated/schema/entity/services/databaseService.py +1 -1
  504. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  505. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  506. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  507. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  508. metadata/generated/schema/entity/services/messagingService.py +1 -1
  509. metadata/generated/schema/entity/services/metadataService.py +1 -1
  510. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  511. metadata/generated/schema/entity/services/pipelineService.py +7 -1
  512. metadata/generated/schema/entity/services/searchService.py +1 -1
  513. metadata/generated/schema/entity/services/serviceType.py +1 -1
  514. metadata/generated/schema/entity/services/storageService.py +1 -1
  515. metadata/generated/schema/entity/teams/__init__.py +1 -1
  516. metadata/generated/schema/entity/teams/persona.py +1 -1
  517. metadata/generated/schema/entity/teams/role.py +1 -1
  518. metadata/generated/schema/entity/teams/team.py +1 -1
  519. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  520. metadata/generated/schema/entity/teams/user.py +2 -2
  521. metadata/generated/schema/entity/type.py +1 -1
  522. metadata/generated/schema/entity/utils/__init__.py +1 -1
  523. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  524. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  525. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  526. metadata/generated/schema/events/__init__.py +1 -1
  527. metadata/generated/schema/events/alertMetrics.py +1 -1
  528. metadata/generated/schema/events/api/__init__.py +1 -1
  529. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  530. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  531. metadata/generated/schema/events/eventFilterRule.py +10 -1
  532. metadata/generated/schema/events/eventSubscription.py +6 -2
  533. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  534. metadata/generated/schema/events/failedEvent.py +1 -1
  535. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  536. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  537. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  538. metadata/generated/schema/metadataIngestion/application.py +1 -1
  539. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  540. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +19 -6
  541. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  542. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +37 -1
  543. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +23 -23
  544. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  545. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  546. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  547. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  548. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  549. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  550. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  551. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  552. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  553. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  554. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  555. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  556. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  557. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  558. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +22 -4
  559. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  560. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  561. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  562. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  563. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  564. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  565. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  566. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  567. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  568. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  569. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  572. metadata/generated/schema/monitoring/__init__.py +1 -1
  573. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  574. metadata/generated/schema/security/__init__.py +1 -1
  575. metadata/generated/schema/security/client/__init__.py +1 -1
  576. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  577. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  578. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  579. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  580. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  581. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  582. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  583. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  584. metadata/generated/schema/security/credentials/__init__.py +1 -1
  585. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  586. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  587. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  588. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  589. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  590. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  591. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  592. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  593. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  594. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  595. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  596. metadata/generated/schema/security/secrets/__init__.py +1 -1
  597. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  598. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  599. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  600. metadata/generated/schema/security/securityConfiguration.py +1 -1
  601. metadata/generated/schema/security/ssl/__init__.py +1 -1
  602. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +16 -4
  603. metadata/generated/schema/security/ssl/verifySSLConfig.py +10 -1
  604. metadata/generated/schema/settings/__init__.py +1 -1
  605. metadata/generated/schema/settings/settings.py +5 -2
  606. metadata/generated/schema/system/__init__.py +1 -1
  607. metadata/generated/schema/system/entityError.py +1 -1
  608. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  609. metadata/generated/schema/system/indexingError.py +1 -1
  610. metadata/generated/schema/system/ui/__init__.py +1 -1
  611. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  612. metadata/generated/schema/system/ui/page.py +1 -1
  613. metadata/generated/schema/system/validationResponse.py +1 -1
  614. metadata/generated/schema/tests/__init__.py +1 -1
  615. metadata/generated/schema/tests/assigned.py +1 -1
  616. metadata/generated/schema/tests/basic.py +23 -7
  617. metadata/generated/schema/tests/customMetric.py +1 -1
  618. metadata/generated/schema/tests/resolved.py +1 -1
  619. metadata/generated/schema/tests/testCase.py +13 -2
  620. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  621. metadata/generated/schema/tests/testDefinition.py +22 -2
  622. metadata/generated/schema/tests/testSuite.py +1 -1
  623. metadata/generated/schema/type/__init__.py +1 -1
  624. metadata/generated/schema/type/auditLog.py +1 -1
  625. metadata/generated/schema/type/basic.py +7 -1
  626. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  627. metadata/generated/schema/type/changeEvent.py +1 -1
  628. metadata/generated/schema/type/changeEventType.py +1 -1
  629. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  630. metadata/generated/schema/type/csvDocumentation.py +1 -1
  631. metadata/generated/schema/type/csvErrorType.py +1 -1
  632. metadata/generated/schema/type/csvFile.py +1 -1
  633. metadata/generated/schema/type/csvImportResult.py +1 -1
  634. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  635. metadata/generated/schema/type/customProperties/complexTypes.py +86 -0
  636. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  637. metadata/generated/schema/type/customProperty.py +3 -3
  638. metadata/generated/schema/type/dailyCount.py +1 -1
  639. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  640. metadata/generated/schema/type/entityHierarchy.py +39 -0
  641. metadata/generated/schema/type/entityHistory.py +1 -1
  642. metadata/generated/schema/type/entityLineage.py +3 -1
  643. metadata/generated/schema/type/entityReference.py +1 -1
  644. metadata/generated/schema/type/entityReferenceList.py +1 -1
  645. metadata/generated/schema/type/entityRelationship.py +1 -1
  646. metadata/generated/schema/type/entityUsage.py +1 -1
  647. metadata/generated/schema/type/filterPattern.py +1 -1
  648. metadata/generated/schema/type/function.py +1 -1
  649. metadata/generated/schema/type/include.py +1 -1
  650. metadata/generated/schema/type/jdbcConnection.py +1 -1
  651. metadata/generated/schema/type/lifeCycle.py +1 -1
  652. metadata/generated/schema/type/paging.py +4 -1
  653. metadata/generated/schema/type/profile.py +1 -1
  654. metadata/generated/schema/type/queryParserData.py +1 -1
  655. metadata/generated/schema/type/reaction.py +1 -1
  656. metadata/generated/schema/type/schedule.py +1 -1
  657. metadata/generated/schema/type/schema.py +1 -1
  658. metadata/generated/schema/type/tableQuery.py +1 -1
  659. metadata/generated/schema/type/tableUsageCount.py +1 -1
  660. metadata/generated/schema/type/tagLabel.py +1 -1
  661. metadata/generated/schema/type/usageDetails.py +1 -1
  662. metadata/generated/schema/type/usageRequest.py +1 -1
  663. metadata/generated/schema/type/votes.py +1 -1
  664. metadata/great_expectations/action.py +0 -1
  665. metadata/ingestion/api/delete.py +33 -1
  666. metadata/ingestion/api/step.py +6 -1
  667. metadata/ingestion/api/topology_runner.py +122 -25
  668. metadata/ingestion/bulksink/metadata_usage.py +6 -1
  669. metadata/ingestion/lineage/models.py +34 -1
  670. metadata/ingestion/lineage/parser.py +15 -8
  671. metadata/ingestion/lineage/sql_lineage.py +21 -3
  672. metadata/ingestion/models/custom_properties.py +3 -0
  673. metadata/ingestion/models/life_cycle.py +4 -1
  674. metadata/ingestion/models/patch_request.py +177 -35
  675. metadata/ingestion/models/topology.py +81 -1
  676. metadata/ingestion/ometa/client.py +3 -0
  677. metadata/ingestion/ometa/mixins/es_mixin.py +95 -42
  678. metadata/ingestion/ometa/mixins/lineage_mixin.py +169 -4
  679. metadata/ingestion/ometa/mixins/patch_mixin.py +9 -4
  680. metadata/ingestion/ometa/mixins/server_mixin.py +50 -5
  681. metadata/ingestion/ometa/mixins/tests_mixin.py +55 -1
  682. metadata/ingestion/ometa/mixins/user_mixin.py +18 -6
  683. metadata/ingestion/ometa/ometa_api.py +6 -1
  684. metadata/ingestion/ometa/routes.py +3 -0
  685. metadata/ingestion/ometa/utils.py +2 -0
  686. metadata/ingestion/processor/query_parser.py +36 -26
  687. metadata/ingestion/sink/file.py +4 -1
  688. metadata/ingestion/sink/metadata_rest.py +19 -5
  689. metadata/ingestion/source/dashboard/dashboard_service.py +75 -16
  690. metadata/ingestion/source/dashboard/domodashboard/metadata.py +7 -5
  691. metadata/ingestion/source/dashboard/lightdash/metadata.py +7 -5
  692. metadata/ingestion/source/dashboard/looker/metadata.py +25 -18
  693. metadata/ingestion/source/dashboard/metabase/client.py +39 -8
  694. metadata/ingestion/source/dashboard/metabase/connection.py +2 -1
  695. metadata/ingestion/source/dashboard/metabase/metadata.py +9 -7
  696. metadata/ingestion/source/dashboard/metabase/models.py +1 -1
  697. metadata/ingestion/source/dashboard/mode/metadata.py +7 -5
  698. metadata/ingestion/source/dashboard/mstr/metadata.py +10 -5
  699. metadata/ingestion/source/dashboard/powerbi/client.py +13 -3
  700. metadata/ingestion/source/dashboard/powerbi/connection.py +13 -5
  701. metadata/ingestion/source/dashboard/powerbi/file_client.py +327 -0
  702. metadata/ingestion/source/dashboard/powerbi/metadata.py +156 -53
  703. metadata/ingestion/source/dashboard/powerbi/models.py +26 -0
  704. metadata/ingestion/source/dashboard/qlikcloud/__init__.py +0 -0
  705. metadata/ingestion/source/dashboard/qlikcloud/client.py +167 -0
  706. metadata/ingestion/source/dashboard/qlikcloud/connection.py +56 -0
  707. metadata/ingestion/source/dashboard/qlikcloud/constants.py +66 -0
  708. metadata/ingestion/source/dashboard/qlikcloud/metadata.py +249 -0
  709. metadata/ingestion/source/dashboard/qlikcloud/models.py +33 -0
  710. metadata/ingestion/source/dashboard/qliksense/client.py +9 -26
  711. metadata/ingestion/source/dashboard/qliksense/metadata.py +30 -17
  712. metadata/ingestion/source/dashboard/qliksense/models.py +1 -0
  713. metadata/ingestion/source/dashboard/quicksight/metadata.py +105 -91
  714. metadata/ingestion/source/dashboard/quicksight/models.py +43 -4
  715. metadata/ingestion/source/dashboard/redash/metadata.py +10 -5
  716. metadata/ingestion/source/dashboard/superset/api_source.py +10 -5
  717. metadata/ingestion/source/dashboard/superset/db_source.py +12 -6
  718. metadata/ingestion/source/dashboard/superset/metadata.py +8 -1
  719. metadata/ingestion/source/dashboard/superset/mixin.py +20 -3
  720. metadata/ingestion/source/dashboard/superset/models.py +2 -0
  721. metadata/ingestion/source/dashboard/superset/queries.py +23 -6
  722. metadata/ingestion/source/dashboard/tableau/metadata.py +71 -10
  723. metadata/ingestion/source/database/athena/client.py +1 -1
  724. metadata/ingestion/source/database/athena/lineage.py +2 -0
  725. metadata/ingestion/source/database/athena/metadata.py +83 -15
  726. metadata/ingestion/source/database/athena/models.py +1 -1
  727. metadata/ingestion/source/database/athena/query_parser.py +6 -1
  728. metadata/ingestion/source/database/athena/usage.py +2 -0
  729. metadata/ingestion/source/database/azuresql/connection.py +4 -1
  730. metadata/ingestion/source/database/azuresql/metadata.py +4 -2
  731. metadata/ingestion/source/database/azuresql/query_parser.py +4 -1
  732. metadata/ingestion/source/database/bigquery/helper.py +23 -12
  733. metadata/ingestion/source/database/bigquery/incremental_table_processor.py +86 -0
  734. metadata/ingestion/source/database/bigquery/metadata.py +226 -52
  735. metadata/ingestion/source/database/bigquery/models.py +35 -1
  736. metadata/ingestion/source/database/bigquery/queries.py +25 -12
  737. metadata/ingestion/source/database/bigquery/query_parser.py +3 -1
  738. metadata/ingestion/source/database/bigtable/metadata.py +6 -4
  739. metadata/ingestion/source/database/clickhouse/metadata.py +29 -17
  740. metadata/ingestion/source/database/clickhouse/query_parser.py +4 -2
  741. metadata/ingestion/source/database/common_db_source.py +120 -65
  742. metadata/ingestion/source/database/common_nosql_source.py +15 -15
  743. metadata/ingestion/source/database/couchbase/metadata.py +8 -6
  744. metadata/ingestion/source/database/database_service.py +43 -27
  745. metadata/ingestion/source/database/databricks/metadata.py +80 -34
  746. metadata/ingestion/source/database/databricks/queries.py +0 -1
  747. metadata/ingestion/source/database/databricks/query_parser.py +9 -2
  748. metadata/ingestion/source/database/datalake/connection.py +1 -2
  749. metadata/ingestion/source/database/datalake/metadata.py +21 -19
  750. metadata/ingestion/source/database/db2/metadata.py +4 -1
  751. metadata/ingestion/source/database/dbt/dbt_service.py +13 -11
  752. metadata/ingestion/source/database/dbt/metadata.py +97 -33
  753. metadata/ingestion/source/database/dbt/models.py +10 -1
  754. metadata/ingestion/source/database/deltalake/connection.py +2 -2
  755. metadata/ingestion/source/database/deltalake/metadata.py +19 -17
  756. metadata/ingestion/source/database/domodatabase/metadata.py +16 -11
  757. metadata/ingestion/source/database/doris/connection.py +0 -10
  758. metadata/ingestion/source/database/doris/metadata.py +23 -4
  759. metadata/ingestion/source/database/druid/metadata.py +5 -1
  760. metadata/ingestion/source/database/dynamodb/metadata.py +3 -1
  761. metadata/ingestion/source/database/extended_sample_data.py +4 -2
  762. metadata/ingestion/source/database/external_table_lineage_mixin.py +82 -0
  763. metadata/ingestion/source/database/glue/metadata.py +23 -21
  764. metadata/ingestion/source/database/greenplum/connection.py +0 -10
  765. metadata/ingestion/source/database/greenplum/metadata.py +26 -11
  766. metadata/ingestion/source/database/hive/metadata.py +31 -4
  767. metadata/ingestion/source/database/iceberg/helper.py +42 -5
  768. metadata/ingestion/source/database/iceberg/metadata.py +18 -16
  769. metadata/ingestion/source/database/iceberg/models.py +12 -4
  770. metadata/ingestion/source/database/impala/metadata.py +4 -1
  771. metadata/ingestion/source/database/incremental_metadata_extraction.py +144 -0
  772. metadata/ingestion/source/database/life_cycle_query_mixin.py +39 -36
  773. metadata/ingestion/source/database/mariadb/metadata.py +5 -1
  774. metadata/ingestion/source/database/mongodb/metadata.py +4 -2
  775. metadata/ingestion/source/database/mssql/metadata.py +15 -7
  776. metadata/ingestion/source/database/mssql/queries.py +18 -16
  777. metadata/ingestion/source/database/mssql/query_parser.py +4 -1
  778. metadata/ingestion/source/database/mssql/utils.py +3 -0
  779. metadata/ingestion/source/database/mysql/connection.py +0 -11
  780. metadata/ingestion/source/database/mysql/metadata.py +9 -2
  781. metadata/ingestion/source/database/oracle/connection.py +2 -2
  782. metadata/ingestion/source/database/oracle/metadata.py +35 -17
  783. metadata/ingestion/source/database/oracle/queries.py +14 -13
  784. metadata/ingestion/source/database/oracle/query_parser.py +4 -1
  785. metadata/ingestion/source/database/pinotdb/metadata.py +4 -1
  786. metadata/ingestion/source/database/postgres/connection.py +0 -10
  787. metadata/ingestion/source/database/postgres/metadata.py +38 -15
  788. metadata/ingestion/source/database/postgres/queries.py +17 -1
  789. metadata/ingestion/source/database/postgres/query_parser.py +4 -2
  790. metadata/ingestion/source/database/postgres/utils.py +98 -0
  791. metadata/ingestion/source/database/presto/connection.py +14 -0
  792. metadata/ingestion/source/database/presto/metadata.py +8 -5
  793. metadata/ingestion/source/database/query/lineage.py +5 -1
  794. metadata/ingestion/source/database/query/usage.py +4 -1
  795. metadata/ingestion/source/database/redshift/connection.py +0 -10
  796. metadata/ingestion/source/database/redshift/incremental_table_processor.py +192 -0
  797. metadata/ingestion/source/database/redshift/metadata.py +175 -26
  798. metadata/ingestion/source/database/redshift/models.py +74 -1
  799. metadata/ingestion/source/database/redshift/queries.py +17 -2
  800. metadata/ingestion/source/database/redshift/query_parser.py +3 -1
  801. metadata/ingestion/source/database/redshift/utils.py +13 -7
  802. metadata/ingestion/source/database/salesforce/metadata.py +13 -11
  803. metadata/ingestion/source/database/sample_data.py +56 -13
  804. metadata/ingestion/source/database/sample_usage.py +3 -1
  805. metadata/ingestion/source/database/saphana/connection.py +12 -8
  806. metadata/ingestion/source/database/saphana/metadata.py +6 -5
  807. metadata/ingestion/source/database/sas/metadata.py +8 -3
  808. metadata/ingestion/source/database/singlestore/metadata.py +5 -1
  809. metadata/ingestion/source/database/snowflake/metadata.py +193 -59
  810. metadata/ingestion/source/database/snowflake/models.py +24 -1
  811. metadata/ingestion/source/database/snowflake/queries.py +147 -25
  812. metadata/ingestion/source/database/snowflake/query_parser.py +3 -1
  813. metadata/ingestion/source/database/snowflake/utils.py +187 -11
  814. metadata/ingestion/source/database/sql_column_handler.py +2 -0
  815. metadata/ingestion/source/database/sqlalchemy_source.py +4 -4
  816. metadata/ingestion/source/database/sqlite/metadata.py +5 -1
  817. metadata/ingestion/source/database/stored_procedures_mixin.py +11 -9
  818. metadata/ingestion/source/database/trino/connection.py +24 -1
  819. metadata/ingestion/source/database/trino/metadata.py +7 -4
  820. metadata/ingestion/source/database/trino/query_parser.py +4 -1
  821. metadata/ingestion/source/database/unitycatalog/lineage.py +3 -1
  822. metadata/ingestion/source/database/unitycatalog/metadata.py +43 -32
  823. metadata/ingestion/source/database/unitycatalog/query_parser.py +4 -1
  824. metadata/ingestion/source/database/vertica/metadata.py +4 -2
  825. metadata/ingestion/source/database/vertica/query_parser.py +4 -2
  826. metadata/ingestion/source/messaging/common_broker_source.py +45 -6
  827. metadata/ingestion/source/messaging/kafka/connection.py +12 -17
  828. metadata/ingestion/source/messaging/kafka/metadata.py +21 -1
  829. metadata/ingestion/source/messaging/kinesis/metadata.py +11 -5
  830. metadata/ingestion/source/messaging/messaging_service.py +3 -3
  831. metadata/ingestion/source/messaging/redpanda/metadata.py +5 -1
  832. metadata/ingestion/source/metadata/amundsen/metadata.py +3 -1
  833. metadata/ingestion/source/metadata/atlas/metadata.py +3 -1
  834. metadata/ingestion/source/mlmodel/mlflow/metadata.py +4 -2
  835. metadata/ingestion/source/mlmodel/mlmodel_service.py +3 -3
  836. metadata/ingestion/source/mlmodel/sagemaker/metadata.py +8 -3
  837. metadata/ingestion/source/pipeline/airbyte/metadata.py +9 -7
  838. metadata/ingestion/source/pipeline/airflow/lineage_parser.py +54 -1
  839. metadata/ingestion/source/pipeline/airflow/metadata.py +30 -14
  840. metadata/ingestion/source/pipeline/dagster/metadata.py +17 -15
  841. metadata/ingestion/source/pipeline/dagster/queries.py +53 -82
  842. metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +10 -8
  843. metadata/ingestion/source/pipeline/domopipeline/metadata.py +6 -4
  844. metadata/ingestion/source/pipeline/fivetran/metadata.py +6 -4
  845. metadata/ingestion/source/pipeline/gluepipeline/metadata.py +7 -5
  846. metadata/ingestion/source/pipeline/kafkaconnect/__init__.py +0 -0
  847. metadata/ingestion/source/pipeline/kafkaconnect/client.py +278 -0
  848. metadata/ingestion/source/pipeline/kafkaconnect/connection.py +58 -0
  849. metadata/ingestion/source/pipeline/kafkaconnect/metadata.py +319 -0
  850. metadata/ingestion/source/pipeline/kafkaconnect/models.py +62 -0
  851. metadata/ingestion/source/pipeline/nifi/metadata.py +4 -2
  852. metadata/ingestion/source/pipeline/openlineage/__init__.py +0 -0
  853. metadata/ingestion/source/pipeline/openlineage/connection.py +88 -0
  854. metadata/ingestion/source/pipeline/openlineage/metadata.py +520 -0
  855. metadata/ingestion/source/pipeline/openlineage/models.py +88 -0
  856. metadata/ingestion/source/pipeline/openlineage/utils.py +59 -0
  857. metadata/ingestion/source/pipeline/pipeline_service.py +13 -3
  858. metadata/ingestion/source/pipeline/spline/metadata.py +8 -6
  859. metadata/ingestion/source/search/elasticsearch/metadata.py +8 -6
  860. metadata/ingestion/source/search/search_service.py +3 -3
  861. metadata/ingestion/source/sqa_types.py +20 -1
  862. metadata/ingestion/source/storage/s3/connection.py +10 -1
  863. metadata/ingestion/source/storage/s3/metadata.py +45 -30
  864. metadata/ingestion/source/storage/s3/models.py +8 -4
  865. metadata/ingestion/source/storage/storage_service.py +8 -5
  866. metadata/ingestion/stage/table_usage.py +6 -1
  867. metadata/mixins/pandas/pandas_mixin.py +3 -3
  868. metadata/pii/processor.py +6 -1
  869. metadata/profiler/__init__.py +0 -0
  870. metadata/profiler/adaptors/__init__.py +0 -0
  871. metadata/profiler/adaptors/adaptor_factory.py +43 -0
  872. metadata/profiler/adaptors/dynamodb.py +40 -0
  873. metadata/profiler/adaptors/factory.py +76 -0
  874. metadata/profiler/adaptors/mongodb.py +178 -0
  875. metadata/profiler/adaptors/nosql_adaptor.py +65 -0
  876. metadata/profiler/api/models.py +1 -1
  877. metadata/profiler/factory.py +41 -0
  878. metadata/profiler/interface/nosql/profiler_interface.py +236 -0
  879. metadata/profiler/interface/pandas/profiler_interface.py +51 -30
  880. metadata/profiler/interface/profiler_interface.py +6 -2
  881. metadata/profiler/interface/profiler_interface_factory.py +11 -22
  882. metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +77 -0
  883. metadata/profiler/interface/sqlalchemy/profiler_interface.py +2 -1
  884. metadata/profiler/interface/sqlalchemy/unity_catalog/profiler_interface.py +3 -6
  885. metadata/profiler/metrics/composed/distinct_ratio.py +2 -1
  886. metadata/profiler/metrics/composed/duplicate_count.py +2 -1
  887. metadata/profiler/metrics/composed/ilike_ratio.py +2 -1
  888. metadata/profiler/metrics/composed/iqr.py +2 -1
  889. metadata/profiler/metrics/composed/like_ratio.py +2 -1
  890. metadata/profiler/metrics/composed/non_parametric_skew.py +2 -1
  891. metadata/profiler/metrics/composed/null_ratio.py +7 -4
  892. metadata/profiler/metrics/composed/unique_ratio.py +2 -1
  893. metadata/profiler/metrics/core.py +14 -1
  894. metadata/profiler/metrics/hybrid/histogram.py +2 -1
  895. metadata/profiler/metrics/registry.py +4 -0
  896. metadata/profiler/metrics/static/column_count.py +2 -1
  897. metadata/profiler/metrics/static/column_names.py +2 -1
  898. metadata/profiler/metrics/static/count.py +2 -1
  899. metadata/profiler/metrics/static/count_in_set.py +2 -1
  900. metadata/profiler/metrics/static/distinct_count.py +11 -2
  901. metadata/profiler/metrics/static/ilike_count.py +2 -1
  902. metadata/profiler/metrics/static/like_count.py +2 -1
  903. metadata/profiler/metrics/static/max.py +26 -7
  904. metadata/profiler/metrics/static/max_length.py +3 -2
  905. metadata/profiler/metrics/static/mean.py +30 -22
  906. metadata/profiler/metrics/static/min.py +25 -6
  907. metadata/profiler/metrics/static/min_length.py +3 -2
  908. metadata/profiler/metrics/static/not_like_count.py +2 -1
  909. metadata/profiler/metrics/static/not_regexp_match_count.py +2 -1
  910. metadata/profiler/metrics/static/null_count.py +2 -1
  911. metadata/profiler/metrics/static/null_missing_count.py +73 -0
  912. metadata/profiler/metrics/static/regexp_match_count.py +2 -1
  913. metadata/profiler/metrics/static/row_count.py +9 -3
  914. metadata/profiler/metrics/static/stddev.py +2 -1
  915. metadata/profiler/metrics/static/sum.py +22 -4
  916. metadata/profiler/metrics/static/unique_count.py +13 -4
  917. metadata/profiler/metrics/system/system.py +2 -1
  918. metadata/profiler/metrics/window/first_quartile.py +2 -1
  919. metadata/profiler/metrics/window/median.py +8 -2
  920. metadata/profiler/metrics/window/third_quartile.py +2 -1
  921. metadata/profiler/orm/converter/base.py +4 -1
  922. metadata/profiler/orm/converter/bigquery/converter.py +11 -0
  923. metadata/profiler/orm/converter/common.py +47 -0
  924. metadata/profiler/orm/converter/converter_registry.py +2 -0
  925. metadata/profiler/orm/converter/redshift/converter.py +48 -0
  926. metadata/profiler/orm/converter/snowflake/converter.py +13 -0
  927. metadata/profiler/orm/functions/conn_test.py +1 -1
  928. metadata/profiler/orm/functions/sum.py +4 -2
  929. metadata/profiler/orm/functions/table_metric_computer.py +13 -1
  930. metadata/profiler/orm/registry.py +6 -3
  931. metadata/profiler/processor/core.py +58 -97
  932. metadata/profiler/processor/default.py +5 -0
  933. metadata/profiler/processor/handle_partition.py +3 -3
  934. metadata/profiler/processor/metric_filter.py +267 -0
  935. metadata/profiler/processor/processor.py +4 -2
  936. metadata/profiler/processor/sampler/nosql/sampler.py +72 -0
  937. metadata/profiler/processor/sampler/pandas/sampler.py +5 -6
  938. metadata/profiler/processor/sampler/sampler_factory.py +9 -0
  939. metadata/profiler/processor/sampler/sampler_interface.py +2 -2
  940. metadata/profiler/processor/sampler/sqlalchemy/sampler.py +3 -3
  941. metadata/profiler/source/base/profiler_source.py +11 -3
  942. metadata/profiler/source/databricks/profiler_source.py +5 -1
  943. metadata/profiler/source/metadata.py +8 -1
  944. metadata/profiler/source/metadata_ext.py +2 -0
  945. metadata/readers/dataframe/avro.py +5 -5
  946. metadata/readers/dataframe/json.py +1 -1
  947. metadata/readers/file/adls.py +20 -0
  948. metadata/readers/file/base.py +6 -0
  949. metadata/readers/file/config_source_factory.py +12 -0
  950. metadata/readers/file/gcs.py +18 -0
  951. metadata/readers/file/local.py +12 -0
  952. metadata/readers/file/s3.py +16 -0
  953. metadata/utils/constants.py +32 -24
  954. metadata/utils/datalake/datalake_utils.py +40 -4
  955. metadata/utils/elasticsearch.py +8 -0
  956. metadata/utils/execution_time_tracker.py +69 -28
  957. metadata/utils/fqn.py +61 -7
  958. metadata/utils/helpers.py +2 -0
  959. metadata/utils/importer.py +15 -6
  960. metadata/utils/logger.py +1 -1
  961. metadata/utils/lru_cache.py +2 -0
  962. metadata/utils/messaging_utils.py +43 -0
  963. metadata/utils/partition.py +93 -28
  964. metadata/utils/sqlalchemy_utils.py +60 -1
  965. metadata/utils/ssl_manager.py +181 -0
  966. metadata/utils/stored_procedures.py +1 -1
  967. metadata/utils/tag_utils.py +30 -13
  968. metadata/utils/test_utils.py +65 -0
  969. metadata/workflow/application.py +6 -1
  970. metadata/workflow/base.py +1 -1
  971. metadata/workflow/ingestion.py +19 -0
  972. metadata/workflow/metadata.py +9 -1
  973. metadata/workflow/output_handler.py +24 -2
  974. metadata/workflow/workflow_output_handler.py +2 -0
  975. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/METADATA +331 -326
  976. openmetadata_ingestion-1.4.0.0.dist-info/RECORD +1501 -0
  977. metadata/applications/auto_tagger.py +0 -212
  978. metadata/cli/backup.py +0 -202
  979. metadata/cli/db_dump.py +0 -239
  980. metadata/cli/docker.py +0 -382
  981. metadata/cli/openmetadata_dag_config_migration.py +0 -109
  982. metadata/cli/openmetadata_imports_migration.py +0 -71
  983. metadata/cli/utils.py +0 -56
  984. metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +0 -28
  985. openmetadata_ingestion-1.3.3.0rc2.dist-info/RECORD +0 -1435
  986. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/LICENSE +0 -0
  987. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/WHEEL +0 -0
  988. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/entry_points.txt +0 -0
  989. {openmetadata_ingestion-1.3.3.0rc2.dist-info → openmetadata_ingestion-1.4.0.0.dist-info}/top_level.txt +0 -0
@@ -44,6 +44,7 @@ from metadata.generated.schema.metadataIngestion.workflow import (
44
44
  from metadata.ingestion.api.models import Either
45
45
  from metadata.ingestion.api.steps import InvalidSourceException
46
46
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
47
+ from metadata.ingestion.ometa.utils import model_str
47
48
  from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
48
49
  from metadata.ingestion.source.dashboard.powerbi.models import (
49
50
  Dataset,
@@ -82,6 +83,7 @@ class PowerbiSource(DashboardServiceSource):
82
83
  100, self.service_connection.pagination_entity_per_page
83
84
  )
84
85
  self.workspace_data = []
86
+ self.datamodel_file_mappings = []
85
87
 
86
88
  def prepare(self):
87
89
  if self.service_connection.useAdminApis:
@@ -92,6 +94,10 @@ class PowerbiSource(DashboardServiceSource):
92
94
  self.workspace_data = self.get_filtered_workspaces(groups)
93
95
  return super().prepare()
94
96
 
97
+ def close(self):
98
+ self.metadata.close()
99
+ self.client.file_client.delete_tmp_files()
100
+
95
101
  def get_filtered_workspaces(self, groups: List[Group]) -> List[Group]:
96
102
  """
97
103
  Method to get the workspaces filtered by project filter pattern
@@ -114,16 +120,16 @@ class PowerbiSource(DashboardServiceSource):
114
120
  """
115
121
  fetch all the group workspace ids
116
122
  """
117
- groups = self.client.fetch_all_workspaces()
123
+ groups = self.client.api_client.fetch_all_workspaces()
118
124
  for group in groups:
119
125
  # add the dashboards to the groups
120
126
  group.dashboards.extend(
121
- self.client.fetch_all_org_dashboards(group_id=group.id) or []
127
+ self.client.api_client.fetch_all_org_dashboards(group_id=group.id) or []
122
128
  )
123
129
  for dashboard in group.dashboards:
124
130
  # add the tiles to the dashboards
125
131
  dashboard.tiles.extend(
126
- self.client.fetch_all_org_tiles(
132
+ self.client.api_client.fetch_all_org_tiles(
127
133
  group_id=group.id, dashboard_id=dashboard.id
128
134
  )
129
135
  or []
@@ -131,17 +137,17 @@ class PowerbiSource(DashboardServiceSource):
131
137
 
132
138
  # add the reports to the groups
133
139
  group.reports.extend(
134
- self.client.fetch_all_org_reports(group_id=group.id) or []
140
+ self.client.api_client.fetch_all_org_reports(group_id=group.id) or []
135
141
  )
136
142
 
137
143
  # add the datasets to the groups
138
144
  group.datasets.extend(
139
- self.client.fetch_all_org_datasets(group_id=group.id) or []
145
+ self.client.api_client.fetch_all_org_datasets(group_id=group.id) or []
140
146
  )
141
147
  for dataset in group.datasets:
142
148
  # add the tables to the datasets
143
149
  dataset.tables.extend(
144
- self.client.fetch_dataset_tables(
150
+ self.client.api_client.fetch_dataset_tables(
145
151
  group_id=group.id, dataset_id=dataset.id
146
152
  )
147
153
  or []
@@ -153,7 +159,7 @@ class PowerbiSource(DashboardServiceSource):
153
159
  fetch all the workspace ids
154
160
  """
155
161
  groups = []
156
- workspaces = self.client.fetch_all_workspaces()
162
+ workspaces = self.client.api_client.fetch_all_workspaces()
157
163
  if workspaces:
158
164
  workspace_id_list = [workspace.id for workspace in workspaces]
159
165
 
@@ -169,16 +175,16 @@ class PowerbiSource(DashboardServiceSource):
169
175
  logger.info(
170
176
  f"Scanning {count}/{len(workspace_paginated_list)} set of workspaces"
171
177
  )
172
- workspace_scan = self.client.initiate_workspace_scan(
178
+ workspace_scan = self.client.api_client.initiate_workspace_scan(
173
179
  workspace_ids_chunk
174
180
  )
175
181
 
176
182
  # Keep polling the scan status endpoint to check if scan is succeeded
177
- workspace_scan_status = self.client.wait_for_scan_complete(
183
+ workspace_scan_status = self.client.api_client.wait_for_scan_complete(
178
184
  scan_id=workspace_scan.id
179
185
  )
180
186
  if workspace_scan_status:
181
- response = self.client.fetch_workspace_scan_result(
187
+ response = self.client.api_client.fetch_workspace_scan_result(
182
188
  scan_id=workspace_scan.id
183
189
  )
184
190
  groups.extend(
@@ -196,7 +202,9 @@ class PowerbiSource(DashboardServiceSource):
196
202
  return groups or None
197
203
 
198
204
  @classmethod
199
- def create(cls, config_dict, metadata: OpenMetadata):
205
+ def create(
206
+ cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
207
+ ):
200
208
  config = WorkflowSource.parse_obj(config_dict)
201
209
  connection: PowerBIConnection = config.serviceConnection.__root__.config
202
210
  if not isinstance(connection, PowerBIConnection):
@@ -210,7 +218,7 @@ class PowerbiSource(DashboardServiceSource):
210
218
  Method to iterate through dashboard lists filter dashboards & yield dashboard details
211
219
  """
212
220
  for workspace in self.workspace_data:
213
- self.context.workspace = workspace
221
+ self.context.get().workspace = workspace
214
222
  for dashboard in self.get_dashboards_list():
215
223
  try:
216
224
  dashboard_details = self.get_dashboard_details(dashboard)
@@ -239,7 +247,10 @@ class PowerbiSource(DashboardServiceSource):
239
247
  """
240
248
  Get List of all dashboards
241
249
  """
242
- return self.context.workspace.reports + self.context.workspace.dashboards
250
+ return (
251
+ self.context.get().workspace.reports
252
+ + self.context.get().workspace.dashboards
253
+ )
243
254
 
244
255
  def get_dashboard_name(
245
256
  self, dashboard: Union[PowerBIDashboard, PowerBIReport]
@@ -320,7 +331,7 @@ class PowerbiSource(DashboardServiceSource):
320
331
  name=dataset.id,
321
332
  displayName=dataset.name,
322
333
  description=dataset.description,
323
- service=self.context.dashboard_service,
334
+ service=self.context.get().dashboard_service,
324
335
  dataModelType=DataModelType.PowerBIDataModel.value,
325
336
  serviceType=DashboardServiceType.PowerBI.value,
326
337
  columns=self._get_column_info(dataset),
@@ -395,7 +406,7 @@ class PowerbiSource(DashboardServiceSource):
395
406
  dashboard_request = CreateDashboardRequest(
396
407
  name=dashboard_details.id,
397
408
  sourceUrl=self._get_dashboard_url(
398
- workspace_id=self.context.workspace.id,
409
+ workspace_id=self.context.get().workspace.id,
399
410
  dashboard_id=dashboard_details.id,
400
411
  ),
401
412
  project=self.get_project_name(dashboard_details=dashboard_details),
@@ -405,12 +416,12 @@ class PowerbiSource(DashboardServiceSource):
405
416
  fqn.build(
406
417
  self.metadata,
407
418
  entity_type=Chart,
408
- service_name=self.context.dashboard_service,
419
+ service_name=self.context.get().dashboard_service,
409
420
  chart_name=chart,
410
421
  )
411
- for chart in self.context.charts or []
422
+ for chart in self.context.get().charts or []
412
423
  ],
413
- service=self.context.dashboard_service,
424
+ service=self.context.get().dashboard_service,
414
425
  owner=self.get_owner_ref(dashboard_details=dashboard_details),
415
426
  )
416
427
  else:
@@ -418,12 +429,12 @@ class PowerbiSource(DashboardServiceSource):
418
429
  name=dashboard_details.id,
419
430
  dashboardType=DashboardType.Report,
420
431
  sourceUrl=self._get_report_url(
421
- workspace_id=self.context.workspace.id,
432
+ workspace_id=self.context.get().workspace.id,
422
433
  dashboard_id=dashboard_details.id,
423
434
  ),
424
435
  project=self.get_project_name(dashboard_details=dashboard_details),
425
436
  displayName=dashboard_details.name,
426
- service=self.context.dashboard_service,
437
+ service=self.context.get().dashboard_service,
427
438
  owner=self.get_owner_ref(dashboard_details=dashboard_details),
428
439
  )
429
440
  yield Either(right=dashboard_request)
@@ -503,7 +514,7 @@ class PowerbiSource(DashboardServiceSource):
503
514
  datamodel_fqn = fqn.build(
504
515
  self.metadata,
505
516
  entity_type=DashboardDataModel,
506
- service_name=self.config.serviceName,
517
+ service_name=self.context.get().dashboard_service,
507
518
  data_model_name=dataset.id,
508
519
  )
509
520
  datamodel_entity = self.metadata.get_by_name(
@@ -522,6 +533,13 @@ class PowerbiSource(DashboardServiceSource):
522
533
  tables=dataset.tables,
523
534
  datamodel_entity=datamodel_entity,
524
535
  )
536
+
537
+ # create the lineage between table and datamodel using the pbit files
538
+ if self.client.file_client:
539
+ yield from self.create_table_datamodel_lineage_from_files(
540
+ db_service_name=db_service_name,
541
+ datamodel_entity=datamodel_entity,
542
+ )
525
543
  except Exception as exc: # pylint: disable=broad-except
526
544
  yield Either(
527
545
  left=StackTraceError(
@@ -534,6 +552,115 @@ class PowerbiSource(DashboardServiceSource):
534
552
  )
535
553
  )
536
554
 
555
+ @staticmethod
556
+ def _get_data_model_column_fqn(
557
+ data_model_entity: DashboardDataModel, column: str
558
+ ) -> Optional[str]:
559
+ """
560
+ Get fqn of column if exist in data model entity or its child columns
561
+ """
562
+ try:
563
+ if not data_model_entity:
564
+ return None
565
+ for tbl_column in data_model_entity.columns:
566
+ for child_column in tbl_column.children or []:
567
+ if column.lower() == child_column.name.__root__.lower():
568
+ return child_column.fullyQualifiedName.__root__
569
+ return None
570
+ except Exception as exc:
571
+ logger.debug(f"Error to get data_model_column_fqn {exc}")
572
+ logger.debug(traceback.format_exc())
573
+
574
+ def _get_table_and_datamodel_lineage(
575
+ self,
576
+ db_service_name: str,
577
+ table: PowerBiTable,
578
+ datamodel_entity: DashboardDataModel,
579
+ ) -> Optional[Iterable[Either[AddLineageRequest]]]:
580
+ """
581
+ Method to create lineage between table and datamodels
582
+ """
583
+ try:
584
+ table_fqn = fqn.build(
585
+ self.metadata,
586
+ entity_type=Table,
587
+ service_name=db_service_name,
588
+ database_name=None,
589
+ schema_name=None,
590
+ table_name=table.name,
591
+ )
592
+ table_entity = self.metadata.get_by_name(
593
+ entity=Table,
594
+ fqn=table_fqn,
595
+ )
596
+
597
+ if table_entity and datamodel_entity:
598
+ columns_list = [column.name for column in table.columns]
599
+ column_lineage = self._get_column_lineage(
600
+ table_entity, datamodel_entity, columns_list
601
+ )
602
+ return self._get_add_lineage_request(
603
+ to_entity=datamodel_entity,
604
+ from_entity=table_entity,
605
+ column_lineage=column_lineage,
606
+ )
607
+ except Exception as exc: # pylint: disable=broad-except
608
+ return Either(
609
+ left=StackTraceError(
610
+ name="DataModel Lineage for pbit files",
611
+ error=(
612
+ "Error to yield datamodel lineage details using pbit files for"
613
+ f"datamodel [{datamodel_entity.name}]: {exc}"
614
+ ),
615
+ stackTrace=traceback.format_exc(),
616
+ )
617
+ )
618
+ return None
619
+
620
+ def create_table_datamodel_lineage_from_files(
621
+ self,
622
+ db_service_name: str,
623
+ datamodel_entity: Optional[DashboardDataModel],
624
+ ) -> Iterable[Either[AddLineageRequest]]:
625
+ """
626
+ Method to create lineage between table and datamodels using pbit files
627
+ """
628
+ try:
629
+ # check if the datamodel_file_mappings is populated or not
630
+ # if not, then populate the datamodel_file_mappings and process the lineage
631
+ if not self.datamodel_file_mappings:
632
+ self.datamodel_file_mappings = (
633
+ self.client.file_client.get_data_model_schema_mappings()
634
+ )
635
+
636
+ # search which file contains the datamodel and for the given datamodel_entity
637
+ datamodel_file_list = []
638
+ for datamodel_schema in self.datamodel_file_mappings or []:
639
+ for connections in (
640
+ datamodel_schema.connectionFile.RemoteArtifacts or []
641
+ ):
642
+ if connections.DatasetId == model_str(datamodel_entity.name):
643
+ datamodel_file_list.append(datamodel_schema)
644
+
645
+ for datamodel_schema_file in datamodel_file_list:
646
+ for table in datamodel_schema_file.tables or []:
647
+ yield self._get_table_and_datamodel_lineage(
648
+ db_service_name=db_service_name,
649
+ table=table,
650
+ datamodel_entity=datamodel_entity,
651
+ )
652
+ except Exception as exc: # pylint: disable=broad-except
653
+ yield Either(
654
+ left=StackTraceError(
655
+ name="DataModel Lineage",
656
+ error=(
657
+ "Error to yield datamodel lineage details for DB "
658
+ f"service name [{db_service_name}]: {exc}"
659
+ ),
660
+ stackTrace=traceback.format_exc(),
661
+ )
662
+ )
663
+
537
664
  def create_table_datamodel_lineage(
538
665
  self,
539
666
  db_service_name: str,
@@ -542,35 +669,11 @@ class PowerbiSource(DashboardServiceSource):
542
669
  ) -> Iterable[Either[CreateDashboardRequest]]:
543
670
  """Method to create lineage between table and datamodels"""
544
671
  for table in tables or []:
545
- try:
546
- table_fqn = fqn.build(
547
- self.metadata,
548
- entity_type=Table,
549
- service_name=db_service_name,
550
- database_name=None,
551
- schema_name=None,
552
- table_name=table.name,
553
- )
554
- table_entity = self.metadata.get_by_name(
555
- entity=Table,
556
- fqn=table_fqn,
557
- )
558
-
559
- if table_entity and datamodel_entity:
560
- yield self._get_add_lineage_request(
561
- to_entity=datamodel_entity, from_entity=table_entity
562
- )
563
- except Exception as exc: # pylint: disable=broad-except
564
- yield Either(
565
- left=StackTraceError(
566
- name="DataModel Lineage",
567
- error=(
568
- "Error to yield datamodel lineage details for DB "
569
- f"service name [{db_service_name}]: {exc}"
570
- ),
571
- stackTrace=traceback.format_exc(),
572
- )
573
- )
672
+ yield self._get_table_and_datamodel_lineage(
673
+ db_service_name=db_service_name,
674
+ table=table,
675
+ datamodel_entity=datamodel_entity,
676
+ )
574
677
 
575
678
  def yield_dashboard_lineage_details(
576
679
  self,
@@ -630,10 +733,10 @@ class PowerbiSource(DashboardServiceSource):
630
733
  chartType=ChartType.Other.value,
631
734
  sourceUrl=self._get_chart_url(
632
735
  report_id=chart.reportId,
633
- workspace_id=self.context.workspace.id,
736
+ workspace_id=self.context.get().workspace.id,
634
737
  dashboard_id=dashboard_details.id,
635
738
  ),
636
- service=self.context.dashboard_service,
739
+ service=self.context.get().dashboard_service,
637
740
  )
638
741
  )
639
742
  except Exception as exc:
@@ -705,7 +808,7 @@ class PowerbiSource(DashboardServiceSource):
705
808
  Get the project / workspace / folder / collection name of the dashboard
706
809
  """
707
810
  try:
708
- return str(self.context.workspace.name)
811
+ return str(self.context.get().workspace.name)
709
812
  except Exception as exc:
710
813
  logger.debug(traceback.format_exc())
711
814
  logger.warning(
@@ -192,3 +192,29 @@ class PowerBiToken(BaseModel):
192
192
 
193
193
  expires_in: Optional[int]
194
194
  access_token: Optional[str]
195
+
196
+
197
+ class RemoteArtifacts(BaseModel):
198
+ """
199
+ PowerBI RemoteArtifacts Model
200
+ """
201
+
202
+ DatasetId: str
203
+ ReportId: str
204
+
205
+
206
+ class ConnectionFile(BaseModel):
207
+ """
208
+ PowerBi Connection File Model
209
+ """
210
+
211
+ RemoteArtifacts: Optional[List[RemoteArtifacts]]
212
+
213
+
214
+ class DataModelSchema(BaseModel):
215
+ """
216
+ PowerBi Data Model Schema Model
217
+ """
218
+
219
+ tables: Optional[List[PowerBiTable]]
220
+ connectionFile: Optional[ConnectionFile]
@@ -0,0 +1,167 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ REST Auth & Client for QlikCloud
13
+ """
14
+ import json
15
+ import traceback
16
+ from typing import Dict, List, Optional
17
+
18
+ from metadata.generated.schema.entity.services.connections.dashboard.qlikCloudConnection import (
19
+ QlikCloudConnection,
20
+ )
21
+ from metadata.ingestion.ometa.client import REST, ClientConfig
22
+ from metadata.ingestion.source.dashboard.qlikcloud.constants import (
23
+ APP_LOADMODEL_REQ,
24
+ CREATE_SHEET_SESSION,
25
+ GET_LOADMODEL_LAYOUT,
26
+ GET_SHEET_LAYOUT,
27
+ OPEN_DOC_REQ,
28
+ )
29
+ from metadata.ingestion.source.dashboard.qlikcloud.models import QlikApp, QlikAppList
30
+ from metadata.ingestion.source.dashboard.qliksense.models import (
31
+ QlikDataModelResult,
32
+ QlikSheet,
33
+ QlikSheetResult,
34
+ QlikTable,
35
+ )
36
+ from metadata.utils.constants import AUTHORIZATION_HEADER
37
+ from metadata.utils.helpers import clean_uri
38
+ from metadata.utils.logger import ingestion_logger
39
+
40
+ logger = ingestion_logger()
41
+
42
+ API_VERSION = "api"
43
+
44
+
45
+ class QlikCloudClient:
46
+ """
47
+ Client Handling API communication with QlikCloud
48
+ """
49
+
50
+ def __init__(
51
+ self,
52
+ config: QlikCloudConnection,
53
+ ):
54
+ self.config = config
55
+ self.socket_connection = None
56
+ self.config.token = self.config.token.get_secret_value()
57
+
58
+ client_config: ClientConfig = ClientConfig(
59
+ base_url=self.config.hostPort,
60
+ api_version=API_VERSION,
61
+ auth_header=AUTHORIZATION_HEADER,
62
+ auth_token=lambda: (self.config.token, 0),
63
+ )
64
+ self.client = REST(client_config)
65
+
66
+ def connect_websocket(self, dashboard_id: str = None) -> None:
67
+ """
68
+ Method to initialise websocket connection
69
+ """
70
+ # pylint: disable=import-outside-toplevel
71
+ import ssl
72
+
73
+ from websocket import create_connection
74
+
75
+ if self.socket_connection:
76
+ self.socket_connection.close()
77
+ self.socket_connection = create_connection(
78
+ f"wss://{clean_uri(self.config.hostPort.host)}/app/{dashboard_id or ''}",
79
+ sslopt={"cert_reqs": ssl.CERT_NONE},
80
+ header={"Authorization": f"Bearer {self.config.token}"},
81
+ )
82
+ self.socket_connection.recv()
83
+
84
+ def close_websocket(self) -> None:
85
+ if self.socket_connection:
86
+ self.socket_connection.close()
87
+
88
+ def _websocket_send_request(
89
+ self, request: dict, response: bool = False
90
+ ) -> Optional[Dict]:
91
+ """
92
+ Method to send request to websocket
93
+
94
+ request: data required to be sent to websocket
95
+ response: is json response required?
96
+ """
97
+ self.socket_connection.send(json.dumps(request))
98
+ resp = self.socket_connection.recv()
99
+ if response:
100
+ return json.loads(resp)
101
+ return None
102
+
103
+ def get_dashboard_charts(self, dashboard_id: str) -> List[QlikSheet]:
104
+ """
105
+ Get dahsboard chart list
106
+ """
107
+ try:
108
+ self.connect_websocket(dashboard_id)
109
+ OPEN_DOC_REQ.update({"params": [dashboard_id]})
110
+ self._websocket_send_request(OPEN_DOC_REQ)
111
+ self._websocket_send_request(CREATE_SHEET_SESSION)
112
+ sheets = self._websocket_send_request(GET_SHEET_LAYOUT, response=True)
113
+ data = QlikSheetResult(**sheets)
114
+ return data.result.qLayout.qAppObjectList.qItems
115
+ except Exception:
116
+ logger.debug(traceback.format_exc())
117
+ logger.warning("Failed to fetch the dashboard charts")
118
+ return []
119
+
120
+ def get_dashboards_list(self) -> List[QlikAppList]:
121
+ """
122
+ Get List of all apps
123
+ """
124
+ try:
125
+ resp_apps = self.client.get("/v1/items?resourceType=app")
126
+ if resp_apps:
127
+ app_list = QlikAppList(apps=resp_apps.get("data", []))
128
+ return app_list.apps
129
+ except Exception:
130
+ logger.debug(traceback.format_exc())
131
+ logger.warning("Failed to fetch the app list")
132
+ return []
133
+
134
+ def get_dashboard_details(self, dashboard_id: str) -> Optional[QlikApp]:
135
+ """
136
+ Get App Details
137
+ """
138
+ if not dashboard_id:
139
+ return None # don't call api if dashboard_id is None
140
+ try:
141
+ resp_dashboard = self.client.get(f"/v1/apps/{dashboard_id}")
142
+ if resp_dashboard:
143
+ return QlikApp(**resp_dashboard.get("attributes"))
144
+ except Exception:
145
+ logger.debug(traceback.format_exc())
146
+ logger.warning(f"Failed to fetch the dashboard with id: {dashboard_id}")
147
+ return None
148
+
149
+ def get_dashboard_models(self) -> List[QlikTable]:
150
+ """
151
+ Get dahsboard data models
152
+ """
153
+ try:
154
+ self._websocket_send_request(APP_LOADMODEL_REQ)
155
+ models = self._websocket_send_request(GET_LOADMODEL_LAYOUT, response=True)
156
+ data_models = QlikDataModelResult(**models)
157
+ layout = data_models.result.qLayout
158
+ if isinstance(layout, list):
159
+ tables = []
160
+ for layout in data_models.result.qLayout:
161
+ tables.extend(layout.value.tables)
162
+ return tables
163
+ return layout.tables
164
+ except Exception:
165
+ logger.debug(traceback.format_exc())
166
+ logger.warning("Failed to fetch the dashboard datamodels")
167
+ return []
@@ -0,0 +1,56 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ """
13
+ Source connection handler
14
+ """
15
+ from typing import Optional
16
+
17
+ from metadata.generated.schema.entity.automations.workflow import (
18
+ Workflow as AutomationWorkflow,
19
+ )
20
+ from metadata.generated.schema.entity.services.connections.dashboard.qlikCloudConnection import (
21
+ QlikCloudConnection,
22
+ )
23
+ from metadata.ingestion.connections.test_connections import test_connection_steps
24
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
25
+ from metadata.ingestion.source.dashboard.qlikcloud.client import QlikCloudClient
26
+
27
+
28
+ def get_connection(connection: QlikCloudConnection) -> QlikCloudClient:
29
+ """
30
+ Create connection
31
+ """
32
+ return QlikCloudClient(connection)
33
+
34
+
35
+ def test_connection(
36
+ metadata: OpenMetadata,
37
+ client: QlikCloudClient,
38
+ service_connection: QlikCloudConnection,
39
+ automation_workflow: Optional[AutomationWorkflow] = None,
40
+ ) -> None:
41
+ """
42
+ Test connection. This can be executed either as part
43
+ of a metadata workflow or during an Automation Workflow
44
+ """
45
+
46
+ def custom_executor():
47
+ return client.get_dashboards_list()
48
+
49
+ test_fn = {"GetDashboards": custom_executor}
50
+
51
+ test_connection_steps(
52
+ metadata=metadata,
53
+ test_fn=test_fn,
54
+ service_type=service_connection.type.value,
55
+ automation_workflow=automation_workflow,
56
+ )