acryl-datahub 0.15.0.5rc4__py3-none-any.whl → 15.0.4__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 acryl-datahub might be problematic. Click here for more details.
- {acryl_datahub-0.15.0.5rc4.dist-info → acryl_datahub-15.0.4.dist-info}/METADATA +2385 -2388
- {acryl_datahub-0.15.0.5rc4.dist-info → acryl_datahub-15.0.4.dist-info}/RECORD +28 -30
- datahub/__init__.py +25 -1
- datahub/cli/check_cli.py +1 -1
- datahub/cli/cli_utils.py +3 -3
- datahub/cli/ingest_cli.py +2 -2
- datahub/emitter/rest_emitter.py +1 -1
- datahub/entrypoints.py +5 -5
- datahub/ingestion/api/registry.py +2 -4
- datahub/ingestion/reporting/datahub_ingestion_run_summary_provider.py +1 -1
- datahub/ingestion/run/connection.py +1 -1
- datahub/ingestion/run/pipeline.py +3 -3
- datahub/ingestion/source/aws/glue.py +5 -13
- datahub/ingestion/source/looker/lookml_config.py +1 -4
- datahub/ingestion/source/looker/lookml_source.py +0 -56
- datahub/ingestion/source/slack/slack.py +0 -6
- datahub/ingestion/source/snowflake/snowflake_schema_gen.py +7 -17
- datahub/ingestion/source/sql/clickhouse.py +43 -5
- datahub/ingestion/source/unity/proxy.py +2 -2
- datahub/metadata/_schema_classes.py +400 -400
- datahub/metadata/_urns/urn_defs.py +1665 -1665
- datahub/metadata/schema.avsc +15276 -15634
- datahub/telemetry/telemetry.py +4 -4
- datahub/testing/check_imports.py +0 -28
- datahub/upgrade/upgrade.py +4 -4
- acryl_datahub-0.15.0.5rc4.dist-info/LICENSE +0 -202
- datahub/_version.py +0 -13
- {acryl_datahub-0.15.0.5rc4.dist-info → acryl_datahub-15.0.4.dist-info}/WHEEL +0 -0
- {acryl_datahub-0.15.0.5rc4.dist-info → acryl_datahub-15.0.4.dist-info}/entry_points.txt +0 -0
- {acryl_datahub-0.15.0.5rc4.dist-info → acryl_datahub-15.0.4.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
datahub/__init__.py,sha256=
|
|
1
|
+
datahub/__init__.py,sha256=rx3PYcvbjaNEzZalslVifAyeMCe0dneD6l7E0K8KCcY,571
|
|
2
2
|
datahub/__main__.py,sha256=pegIvQ9hzK7IhqVeUi1MeADSZ2QlP-D3K0OQdEg55RU,106
|
|
3
|
-
datahub/
|
|
4
|
-
datahub/entrypoints.py,sha256=osv2ailvuW-HHlAE0fOtyblJI1X7HInZutd9DC66jqQ,8022
|
|
3
|
+
datahub/entrypoints.py,sha256=vbkUx_jVIkr_V4wtoQhOpledna-pD_tco1mloRnb7QY,8029
|
|
5
4
|
datahub/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
5
|
datahub/_codegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
6
|
datahub/_codegen/aspect.py,sha256=PJRa-Z4ouXHq3OkulfyWhwZn-fFUBDK_UPvmqaWdbWk,1063
|
|
@@ -59,8 +58,8 @@ datahub/api/graphql/assertion.py,sha256=ponITypRQ8vE8kiqRNpvdoniNJzi4aeBK97UvkF0
|
|
|
59
58
|
datahub/api/graphql/base.py,sha256=9q637r6v-RGOd8Mk8HW2g0vt9zpqFexsQ5R6TPEHVbs,1614
|
|
60
59
|
datahub/api/graphql/operation.py,sha256=h7OXbVRrpJgoth1X4cgeIFhD5JY1MGKg2KjVlQK1gqE,5116
|
|
61
60
|
datahub/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
-
datahub/cli/check_cli.py,sha256=
|
|
63
|
-
datahub/cli/cli_utils.py,sha256=
|
|
61
|
+
datahub/cli/check_cli.py,sha256=9dXNyzZayHeoFjwFjLkMVyx6DiCZfeESyI-sYtGA6bE,12850
|
|
62
|
+
datahub/cli/cli_utils.py,sha256=onbG7z9hIm0zCAm0a2ulTOsHC_NVkdIsbg__EMj02DQ,13540
|
|
64
63
|
datahub/cli/config_utils.py,sha256=yuXw7RzpRY5x_-MAoqWbv46qUkIeRNAJL4_OeJpYdBE,4879
|
|
65
64
|
datahub/cli/container_cli.py,sha256=8D73hLfTHsDg4Cedh_2x0utl7ppOeB1TUJVRgur-Crw,3624
|
|
66
65
|
datahub/cli/delete_cli.py,sha256=oQ4Yy6hxZHcl67MYJiQumLs_8QmFEj7SPZFzxFXvDk8,23481
|
|
@@ -69,7 +68,7 @@ datahub/cli/docker_cli.py,sha256=w9ZQMRVlHwfJI2XDe7mO0lwnT7-dZoK6tPadSMgwEM8,364
|
|
|
69
68
|
datahub/cli/env_utils.py,sha256=RQzjg4JE29hjPt4v7p-RuqoOr99w8E3DBHWiN2Sm7T4,252
|
|
70
69
|
datahub/cli/exists_cli.py,sha256=IsuU86R-g7BJjAl1vULH6d-BWJHAKa4XHLZl5WxGUEM,1233
|
|
71
70
|
datahub/cli/get_cli.py,sha256=VV80BCXfZ0-C8fr2k43SIuN9DB-fOYP9StWsTHnXwFw,2327
|
|
72
|
-
datahub/cli/ingest_cli.py,sha256=
|
|
71
|
+
datahub/cli/ingest_cli.py,sha256=949TSI0MX9i16tKHU-Cirb4ps-7M6dxZpey5y-n_vAs,22534
|
|
73
72
|
datahub/cli/json_file.py,sha256=nWo-VVthaaW4Do1eUqgrzk0fShb29MjiKXvZVOTq76c,943
|
|
74
73
|
datahub/cli/lite_cli.py,sha256=lolCnWWMMYojRMebbYTpHWBmOBQF_729RpW4A_y_xF4,13034
|
|
75
74
|
datahub/cli/migrate.py,sha256=3orGfLNsdh1Q7gkPaCaf2bBWM5b3Ih4fGFw3poe0wiA,17937
|
|
@@ -121,7 +120,7 @@ datahub/emitter/mcp.py,sha256=hAAYziDdkwjazQU0DtWMbQWY8wS09ACrKJbqxoWXdgc,9637
|
|
|
121
120
|
datahub/emitter/mcp_builder.py,sha256=_-d5o7RIwgtMMdr_9tg0oU5ta6lL4dqOie1a68WEjKg,11638
|
|
122
121
|
datahub/emitter/mcp_patch_builder.py,sha256=u7cpW6DkiN7KpLapmMaXgL_FneoN69boxiANbVgMdSI,4564
|
|
123
122
|
datahub/emitter/request_helper.py,sha256=33ORG3S3OVy97_jlWBRn7yUM5XCIkRN6WSdJvN7Ofcg,670
|
|
124
|
-
datahub/emitter/rest_emitter.py,sha256=
|
|
123
|
+
datahub/emitter/rest_emitter.py,sha256=v-A4eR_GSbXg-dsUgHAMcUd68qNEF5KO2MYlyhAYn8I,17880
|
|
125
124
|
datahub/emitter/serialization_helper.py,sha256=q12Avmf70Vy4ttQGMJoTKlE5EsybMKNg2w3MQeZiHvk,3652
|
|
126
125
|
datahub/emitter/sql_parsing_builder.py,sha256=Cr5imZrm3dYDSCACt5MFscgHCtVbHTD6IjUmsvsKoEs,11991
|
|
127
126
|
datahub/emitter/synchronized_file_emitter.py,sha256=s4ATuxalI4GDAkrZTaGSegxBdvvNPZ9jRSdtElU0kNs,1805
|
|
@@ -136,7 +135,7 @@ datahub/ingestion/api/incremental_lineage_helper.py,sha256=JTmJvXzzwI04oTUTIeTKK
|
|
|
136
135
|
datahub/ingestion/api/incremental_properties_helper.py,sha256=KzdxdrQtaMV2XMHfPsCtRa7ffDGPA1w1hgPUjeenZBU,2514
|
|
137
136
|
datahub/ingestion/api/ingestion_job_checkpointing_provider_base.py,sha256=3lLdkkxVqE9MVc26cdXImPeWy16az5BwgcorWxeBV50,1759
|
|
138
137
|
datahub/ingestion/api/pipeline_run_listener.py,sha256=5uBP__LbMQxJ2utlf07cIzQINqPbUOKiZyOJta6a0og,713
|
|
139
|
-
datahub/ingestion/api/registry.py,sha256=
|
|
138
|
+
datahub/ingestion/api/registry.py,sha256=LGElUdzhNQoEr-k2SN23mJaIYnA1PYfF97LQxBmWmD8,7262
|
|
140
139
|
datahub/ingestion/api/report.py,sha256=eM_TWWz6iJNd-c_S2_4eg2qKLGYP8vSROb_TMiCwBhY,4644
|
|
141
140
|
datahub/ingestion/api/report_helpers.py,sha256=WbUC1kQeaKqIagGV3XzfPmPs7slAT1mfNY4og2BH2A8,994
|
|
142
141
|
datahub/ingestion/api/sink.py,sha256=nfal7nsYY1AT2WQRjqO48uAHitpjax7TsRVzYXnqbeM,4918
|
|
@@ -171,12 +170,12 @@ datahub/ingestion/graph/config.py,sha256=_oha8Je7P80ZmrkZUAaRHyYbdMmTkMI5JkYjEP2
|
|
|
171
170
|
datahub/ingestion/graph/connections.py,sha256=9462L0ZWGKURyypAln25eMPhK3pcufBar9tNDoqspXs,741
|
|
172
171
|
datahub/ingestion/graph/filters.py,sha256=UeUZQHoimavIYx-jXLA0WGkOUe10TaO8uEZkfa-QgNE,6188
|
|
173
172
|
datahub/ingestion/reporting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
174
|
-
datahub/ingestion/reporting/datahub_ingestion_run_summary_provider.py,sha256=
|
|
173
|
+
datahub/ingestion/reporting/datahub_ingestion_run_summary_provider.py,sha256=O2SGDU2_qMtyr_1BH9-WkNOojFWig2z4O3M21nTRo70,9908
|
|
175
174
|
datahub/ingestion/reporting/file_reporter.py,sha256=tiWukmMxHrTQI3rOAumsq6lRlw8T6spqpS6XBDYnrZU,1640
|
|
176
175
|
datahub/ingestion/reporting/reporting_provider_registry.py,sha256=jTYSh3T4sensjnHQfPLiIcbA2dG8w0px9ghChAJjGdU,310
|
|
177
176
|
datahub/ingestion/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
|
-
datahub/ingestion/run/connection.py,sha256=
|
|
179
|
-
datahub/ingestion/run/pipeline.py,sha256=
|
|
177
|
+
datahub/ingestion/run/connection.py,sha256=dqS9Fp8byIJNydPmVgtjjjlPJguuUWuMuvGnpNbQdSs,1474
|
|
178
|
+
datahub/ingestion/run/pipeline.py,sha256=vZfZcOk7-WzLSZA2lZUndkUyozbX-S2UofaPyzGCpxs,30615
|
|
180
179
|
datahub/ingestion/run/pipeline_config.py,sha256=EDwqlid4h_qyqyeTRCEqb1RiFA4py_T-Poz1eIKmzT4,4101
|
|
181
180
|
datahub/ingestion/sink/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
181
|
datahub/ingestion/sink/blackhole.py,sha256=-jYcWo4i8q7312bCIoHrGr7nT9JdPvA7c4jvSc7YOgY,557
|
|
@@ -219,7 +218,7 @@ datahub/ingestion/source/abs/report.py,sha256=fzkTdTewYlWrTk4f2Cyl-e8RV4qw9wEVtm
|
|
|
219
218
|
datahub/ingestion/source/abs/source.py,sha256=cuMezUzr-Smp5tok2ceYor5I5jp52NDMjfeN8kfIbvg,24816
|
|
220
219
|
datahub/ingestion/source/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
221
220
|
datahub/ingestion/source/aws/aws_common.py,sha256=DfdQgkJ_s2isFx8WvqKTlAcBk4KE8SgfpmA5BgC3fgY,17716
|
|
222
|
-
datahub/ingestion/source/aws/glue.py,sha256=
|
|
221
|
+
datahub/ingestion/source/aws/glue.py,sha256=9KYv53loNa-keVwCRLDb-5II_AjeHVRf1Fb2HXqtZXk,57653
|
|
223
222
|
datahub/ingestion/source/aws/s3_boto_utils.py,sha256=Y54jlLV5gLcuZ4Zs57kIW5dYHD89RSFfsVNlFbRnSkQ,3901
|
|
224
223
|
datahub/ingestion/source/aws/s3_util.py,sha256=OFypcgmVC6jnZM90-gjcPpAMtTV1lbnreCaMhCzNlzs,2149
|
|
225
224
|
datahub/ingestion/source/aws/sagemaker.py,sha256=Bl2tkBYnrindgx61VHYgNovUF_Kp_fXNcivQn28vC2w,5254
|
|
@@ -346,9 +345,9 @@ datahub/ingestion/source/looker/looker_template_language.py,sha256=mfbU27NYs0mkZ
|
|
|
346
345
|
datahub/ingestion/source/looker/looker_usage.py,sha256=qFBX7OHtIcarYIqFe0jQMrDV8MMPV_nN4PZrZRUznTw,23029
|
|
347
346
|
datahub/ingestion/source/looker/looker_view_id_cache.py,sha256=92gDy6NONhJYBp92z_IBzDVZvezmUIkaBCZY1bdk6mE,4392
|
|
348
347
|
datahub/ingestion/source/looker/lookml_concept_context.py,sha256=eDaze9S7cgO5eFP7-0azUMEJyR3EfMjmfj5pMPjpm8c,18066
|
|
349
|
-
datahub/ingestion/source/looker/lookml_config.py,sha256=
|
|
348
|
+
datahub/ingestion/source/looker/lookml_config.py,sha256=Q0fMsu_Cvm8807R6VB14VJDLqjoLTyGF-WsiUD6xEk8,10519
|
|
350
349
|
datahub/ingestion/source/looker/lookml_refinement.py,sha256=MkVreI0BylaCFyDHihDHaCcXyDSP84eF9p1h5d-ZHnM,9504
|
|
351
|
-
datahub/ingestion/source/looker/lookml_source.py,sha256=
|
|
350
|
+
datahub/ingestion/source/looker/lookml_source.py,sha256=jp58gSrWXITwxd-C5UfVoLJXpxBe5smFjdJyYza-Aek,40436
|
|
352
351
|
datahub/ingestion/source/looker/str_functions.py,sha256=zceEX2ka_4WaWwWgEdyknUSz7X3GrO951BkwSbF2afo,766
|
|
353
352
|
datahub/ingestion/source/looker/urn_functions.py,sha256=4VvqEfGvIMq3rNHHps0-HlPurMPnpqdxNtDAOOHIZww,528
|
|
354
353
|
datahub/ingestion/source/looker/view_upstream.py,sha256=4FCjZaU6p2G7npB2RJpP4Gv2yLjbvbsYWEbAg55IvjY,26110
|
|
@@ -425,7 +424,7 @@ datahub/ingestion/source/sigma/data_classes.py,sha256=YZkkzwftV34mq5c_4jlC2PCSiR
|
|
|
425
424
|
datahub/ingestion/source/sigma/sigma.py,sha256=T-zAgbEw83JSu_4j1gCYibSCaRLXjY3Kt6HdYPEZAFA,24096
|
|
426
425
|
datahub/ingestion/source/sigma/sigma_api.py,sha256=SVvbUs2vjueUdDa-3FzeMsaX5pNpApVI192P7EZzPcI,17870
|
|
427
426
|
datahub/ingestion/source/slack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
428
|
-
datahub/ingestion/source/slack/slack.py,sha256=
|
|
427
|
+
datahub/ingestion/source/slack/slack.py,sha256=C_3iXUS72h7HALhBW_AIyi3nNOqzyh7Ogflr-qI5ZEE,12946
|
|
429
428
|
datahub/ingestion/source/snowflake/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
430
429
|
datahub/ingestion/source/snowflake/constants.py,sha256=22n-0r04nuy-ImxWFFpmbrt_GrNdxV9WZKri7rmtrpQ,2628
|
|
431
430
|
datahub/ingestion/source/snowflake/oauth_config.py,sha256=ol9D3RmruGStJAeL8PYSQguSqcD2HfkjPkMF2AB_eZs,1277
|
|
@@ -440,7 +439,7 @@ datahub/ingestion/source/snowflake/snowflake_queries.py,sha256=x6__7kmlIKXdnvENy
|
|
|
440
439
|
datahub/ingestion/source/snowflake/snowflake_query.py,sha256=5po2FWz41UVowykJYbTFGxsltbmlHBCPcHG20VOhdOE,38469
|
|
441
440
|
datahub/ingestion/source/snowflake/snowflake_report.py,sha256=9Jjrie9XhD1JsIL2Wgx6pVPCNi9HuuAg6nuS0OgbLoE,6331
|
|
442
441
|
datahub/ingestion/source/snowflake/snowflake_schema.py,sha256=oZ05Y61RXTTXhjkPWkqXHxXg1v03UnDMz2QaTc3KtsA,21808
|
|
443
|
-
datahub/ingestion/source/snowflake/snowflake_schema_gen.py,sha256=
|
|
442
|
+
datahub/ingestion/source/snowflake/snowflake_schema_gen.py,sha256=spy3h4IhVlns0auX49gV6jTT5nrWKDIxabq_JCkFTy0,46213
|
|
444
443
|
datahub/ingestion/source/snowflake/snowflake_shares.py,sha256=maZyFkfrbVogEFM0tTKRiNp9c_1muv6YfleSd3q0umI,6341
|
|
445
444
|
datahub/ingestion/source/snowflake/snowflake_summary.py,sha256=kTmuCtRnvHqM8WBYhWeK4XafJq3ssFL9kcS03jEeWT4,5506
|
|
446
445
|
datahub/ingestion/source/snowflake/snowflake_tag.py,sha256=TN_cTF4a8V_tbeR2czm_hoMYfQMuqmBbFlAqyh7PJzQ,6551
|
|
@@ -449,7 +448,7 @@ datahub/ingestion/source/snowflake/snowflake_utils.py,sha256=xq58c47zmaQPkTVqjKW
|
|
|
449
448
|
datahub/ingestion/source/snowflake/snowflake_v2.py,sha256=8nnQ_XlbT4q6y6_JleSV67njUaPjF9x1yehKu5I1lgc,32072
|
|
450
449
|
datahub/ingestion/source/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
451
450
|
datahub/ingestion/source/sql/athena.py,sha256=Uh9wGLOqAkcphffxOPIQNyXvjeRm74XIpaLb4rjqMjM,24045
|
|
452
|
-
datahub/ingestion/source/sql/clickhouse.py,sha256=
|
|
451
|
+
datahub/ingestion/source/sql/clickhouse.py,sha256=nwsnc-aAlQrvZJ5bvSP_nOeeMiW7Nrz1ZygJdLqk2uo,27193
|
|
453
452
|
datahub/ingestion/source/sql/cockroachdb.py,sha256=XaD7eae34plU9ISRC6PzYX9q6RdT2qkzjH6CpTOgkx4,1443
|
|
454
453
|
datahub/ingestion/source/sql/druid.py,sha256=lhO9CCOlHV-6LjBuAxAxtB9I1pvPtsGSdr63bz6_ilA,2837
|
|
455
454
|
datahub/ingestion/source/sql/hana.py,sha256=0PIvcX0Rz59NyR7Ag5Bv1MBV_UbJwxl9UAopo_xe_CA,1342
|
|
@@ -504,7 +503,7 @@ datahub/ingestion/source/unity/config.py,sha256=IE20ybsTd082ilDrnfPXl1GmjRxbWipT
|
|
|
504
503
|
datahub/ingestion/source/unity/connection_test.py,sha256=B143Wb28fS0V4GhygU9hzKqiArWBjsQO54IUCPf23dc,2586
|
|
505
504
|
datahub/ingestion/source/unity/ge_profiler.py,sha256=DFQKOqryMWFg-NqwfFGPklNH2hHSmZGKs8ij8QmXd7w,6402
|
|
506
505
|
datahub/ingestion/source/unity/hive_metastore_proxy.py,sha256=IAWWJjaW0si_UF52Se2D7wmdYRY_afUG4QlVmQu6xaw,15351
|
|
507
|
-
datahub/ingestion/source/unity/proxy.py,sha256=
|
|
506
|
+
datahub/ingestion/source/unity/proxy.py,sha256=db-L3u-pcLvcKLybRVGVzxZga-nn6n9iIJjA6KOXviI,18404
|
|
508
507
|
datahub/ingestion/source/unity/proxy_profiling.py,sha256=WLqvYP6MziaisA4LYL4T_GA-kPt6Xdde7bfaYsjYw40,9663
|
|
509
508
|
datahub/ingestion/source/unity/proxy_types.py,sha256=qrvHiwPzl5cPX-KRvcIGGeJVdr0I8XUQmoAI6ErZ-v8,9371
|
|
510
509
|
datahub/ingestion/source/unity/report.py,sha256=0Y-ciHVTI6ZKNCJ5zWoQh3Ze1c_GMqmTMKFwzXDuuOg,2788
|
|
@@ -568,12 +567,12 @@ datahub/lite/lite_registry.py,sha256=bpH0kasP-LtwwUFNA2QsOIehfekAYfJtN-AkQLmSWnw
|
|
|
568
567
|
datahub/lite/lite_server.py,sha256=p9Oa2nNs65mqcssSIVOr7VOzWqfVstz6ZQEdT4f82S0,1949
|
|
569
568
|
datahub/lite/lite_util.py,sha256=pgBpT3vTO1YCQ2njZRNyicSkHYeEmQCt41BaXU8WvMo,4503
|
|
570
569
|
datahub/metadata/__init__.py,sha256=AjhXPjI6cnpdcrBRrE5gOWo15vv2TTl2ctU4UAnUN7A,238
|
|
571
|
-
datahub/metadata/_schema_classes.py,sha256=
|
|
572
|
-
datahub/metadata/schema.avsc,sha256=
|
|
570
|
+
datahub/metadata/_schema_classes.py,sha256=sbCVtCvb9xI_4p_Q7WOqae_HqHa1dpteT6gNn8dd3bk,975061
|
|
571
|
+
datahub/metadata/schema.avsc,sha256=59Q_iZ204Yr-t66h0ESaY7YTnGzuc99A6g2_4cvk04k,736072
|
|
573
572
|
datahub/metadata/schema_classes.py,sha256=X5Jl5EaSxyHdXOQv14pJ5WkQALun4MRpJ4q12wVFE18,1299
|
|
574
573
|
datahub/metadata/urns.py,sha256=nfrCTExR-k2P9w272WVtWSN3xW1VUJngPwP3xnvULjU,1217
|
|
575
574
|
datahub/metadata/_urns/__init__.py,sha256=cOF3GHMDgPhmbLKbN02NPpuLGHSu0qNgQyBRv08eqF0,243
|
|
576
|
-
datahub/metadata/_urns/urn_defs.py,sha256=
|
|
575
|
+
datahub/metadata/_urns/urn_defs.py,sha256=FbgcsKQLayrEuuu6MnnJO-s4r1gsixOb_kuJZdsrTVs,132110
|
|
577
576
|
datahub/metadata/com/__init__.py,sha256=gsAIuTxzfJdI7a9ybZlgMIHMAYksM1SxGxXjtySgKSc,202
|
|
578
577
|
datahub/metadata/com/linkedin/__init__.py,sha256=gsAIuTxzfJdI7a9ybZlgMIHMAYksM1SxGxXjtySgKSc,202
|
|
579
578
|
datahub/metadata/com/linkedin/events/__init__.py,sha256=s_dR0plZF-rOxxIbE8ojekJqwiHzl2WYR-Z3kW6kKS0,298
|
|
@@ -895,9 +894,9 @@ datahub/sql_parsing/sqlglot_utils.py,sha256=6W6MQ5Yh0xXT9_h0jd19yoGWMdXicyRBDD_F
|
|
|
895
894
|
datahub/sql_parsing/tool_meta_extractor.py,sha256=qEPq8RFWyK0tmSPNlluvd5cxgwbd2v6m9ViSY4hm2QM,6822
|
|
896
895
|
datahub/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
897
896
|
datahub/telemetry/stats.py,sha256=TwaQisQlD2Bk0uw__pP6u3Ovz9r-Ip4pCwpnto4r5e0,959
|
|
898
|
-
datahub/telemetry/telemetry.py,sha256=
|
|
897
|
+
datahub/telemetry/telemetry.py,sha256=gzla-QGNsynGg2FqFxiDDFQ0emG53MJ9lhOA2-UUg-Y,15047
|
|
899
898
|
datahub/testing/__init__.py,sha256=TywIuzGQvzJsNhI_PGD1RFk11M3RtGl9jIMtAVVHIkg,272
|
|
900
|
-
datahub/testing/check_imports.py,sha256=
|
|
899
|
+
datahub/testing/check_imports.py,sha256=EKuJmgUA46uOrlaOy0fCvPB7j9POkpJ0ExhO_pT3YAk,1356
|
|
901
900
|
datahub/testing/check_sql_parser_result.py,sha256=f7U7IUSbfV4VACdNI857wPZ9tAZ9j6mXiXmcJNT_RzM,2671
|
|
902
901
|
datahub/testing/check_str_enum.py,sha256=yqk0XXHOGteN-IGqCp5JHy0Kca13BnI09ZqKc4Nwl3E,1187
|
|
903
902
|
datahub/testing/compare_metadata_json.py,sha256=pVJB2qLoKzEJLBXqFT-qGrxpA1y76y-mIbvJf0NnAD0,5274
|
|
@@ -905,7 +904,7 @@ datahub/testing/docker_utils.py,sha256=g169iy_jNR_mg0p8X31cChZqjOryutAIHUYLq3xqu
|
|
|
905
904
|
datahub/testing/doctest.py,sha256=1_8WEhHZ2eRQtw8vsXKzr9L5zzvs0Tcr6q4mnkyyvtw,295
|
|
906
905
|
datahub/testing/mcp_diff.py,sha256=Dxde5uZHqZf1EjOkHm405OHY5PPJp03agZJM9SyR4yE,10717
|
|
907
906
|
datahub/upgrade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
908
|
-
datahub/upgrade/upgrade.py,sha256=
|
|
907
|
+
datahub/upgrade/upgrade.py,sha256=Hp9KzUdmRlNw1oZaiex8a68YmeyxDsl4VZjogyfLONY,16328
|
|
909
908
|
datahub/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
910
909
|
datahub/utilities/_custom_package_loader.py,sha256=9kgPE7Y77E-hNee8l4sKtVby-btUNum3dBfDixMzcVA,2059
|
|
911
910
|
datahub/utilities/_markupsafe_compat.py,sha256=QX7c9KiHs56ASl7bJlgR4FAf3CGiY94zIr0h6Ak15To,444
|
|
@@ -993,9 +992,8 @@ datahub_provider/operators/datahub_assertion_operator.py,sha256=uvTQ-jk2F0sbqqxp
|
|
|
993
992
|
datahub_provider/operators/datahub_assertion_sensor.py,sha256=lCBj_3x1cf5GMNpHdfkpHuyHfVxsm6ff5x2Z5iizcAo,140
|
|
994
993
|
datahub_provider/operators/datahub_operation_operator.py,sha256=aevDp2FzX7FxGlXrR0khoHNbxbhKR2qPEX5e8O2Jyzw,174
|
|
995
994
|
datahub_provider/operators/datahub_operation_sensor.py,sha256=8fcdVBCEPgqy1etTXgLoiHoJrRt_nzFZQMdSzHqSG7M,168
|
|
996
|
-
acryl_datahub-
|
|
997
|
-
acryl_datahub-
|
|
998
|
-
acryl_datahub-
|
|
999
|
-
acryl_datahub-
|
|
1000
|
-
acryl_datahub-
|
|
1001
|
-
acryl_datahub-0.15.0.5rc4.dist-info/RECORD,,
|
|
995
|
+
acryl_datahub-15.0.4.dist-info/METADATA,sha256=1qJNtqRgWqZlEMb6wRHPVyBSCJrttNG_z13yQQa1GSE,173235
|
|
996
|
+
acryl_datahub-15.0.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
997
|
+
acryl_datahub-15.0.4.dist-info/entry_points.txt,sha256=xnPSPLK3bJGADxe4TDS4wL4u0FT_PGlahDa-ENYdYCQ,9512
|
|
998
|
+
acryl_datahub-15.0.4.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
|
|
999
|
+
acryl_datahub-15.0.4.dist-info/RECORD,,
|
datahub/__init__.py
CHANGED
|
@@ -1 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import sys
|
|
2
|
+
import warnings
|
|
3
|
+
|
|
4
|
+
# Published at https://pypi.org/project/acryl-datahub/.
|
|
5
|
+
__package_name__ = "acryl-datahub"
|
|
6
|
+
__version__ = "15.0.4"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def is_dev_mode() -> bool:
|
|
10
|
+
return __version__.endswith("dev0")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def nice_version_name() -> str:
|
|
14
|
+
if is_dev_mode():
|
|
15
|
+
return "unavailable (installed in develop mode)"
|
|
16
|
+
return __version__
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
if sys.version_info < (3, 8):
|
|
20
|
+
warnings.warn(
|
|
21
|
+
"DataHub requires Python 3.8 or newer. "
|
|
22
|
+
"Please upgrade your Python version to continue using DataHub.",
|
|
23
|
+
FutureWarning,
|
|
24
|
+
stacklevel=2,
|
|
25
|
+
)
|
datahub/cli/check_cli.py
CHANGED
|
@@ -9,7 +9,7 @@ from typing import Dict, List, Optional, Union
|
|
|
9
9
|
|
|
10
10
|
import click
|
|
11
11
|
|
|
12
|
-
from datahub
|
|
12
|
+
from datahub import __package_name__
|
|
13
13
|
from datahub.cli.json_file import check_mce_file
|
|
14
14
|
from datahub.configuration import config_loader
|
|
15
15
|
from datahub.configuration.common import AllowDenyPattern
|
datahub/cli/cli_utils.py
CHANGED
|
@@ -9,7 +9,7 @@ import click
|
|
|
9
9
|
import requests
|
|
10
10
|
from requests.sessions import Session
|
|
11
11
|
|
|
12
|
-
import datahub
|
|
12
|
+
import datahub
|
|
13
13
|
from datahub.cli import config_utils
|
|
14
14
|
from datahub.emitter.aspect import ASPECT_MAP, TIMESERIES_ASPECT_MAP
|
|
15
15
|
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
|
@@ -422,5 +422,5 @@ def ensure_has_system_metadata(
|
|
|
422
422
|
if metadata.properties is None:
|
|
423
423
|
metadata.properties = {}
|
|
424
424
|
props = metadata.properties
|
|
425
|
-
props["clientId"] =
|
|
426
|
-
props["clientVersion"] =
|
|
425
|
+
props["clientId"] = datahub.__package_name__
|
|
426
|
+
props["clientVersion"] = datahub.__version__
|
datahub/cli/ingest_cli.py
CHANGED
|
@@ -12,7 +12,7 @@ import click_spinner
|
|
|
12
12
|
from click_default_group import DefaultGroup
|
|
13
13
|
from tabulate import tabulate
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
import datahub as datahub_package
|
|
16
16
|
from datahub.cli import cli_utils
|
|
17
17
|
from datahub.cli.config_utils import CONDENSED_DATAHUB_CONFIG_PATH
|
|
18
18
|
from datahub.configuration.common import ConfigModel, GraphError
|
|
@@ -147,7 +147,7 @@ def run(
|
|
|
147
147
|
return ret
|
|
148
148
|
|
|
149
149
|
# main function begins
|
|
150
|
-
logger.info("DataHub CLI version: %s", nice_version_name())
|
|
150
|
+
logger.info("DataHub CLI version: %s", datahub_package.nice_version_name())
|
|
151
151
|
|
|
152
152
|
pipeline_config = load_config_file(
|
|
153
153
|
config,
|
datahub/emitter/rest_emitter.py
CHANGED
|
@@ -22,7 +22,7 @@ from deprecated import deprecated
|
|
|
22
22
|
from requests.adapters import HTTPAdapter, Retry
|
|
23
23
|
from requests.exceptions import HTTPError, RequestException
|
|
24
24
|
|
|
25
|
-
from datahub
|
|
25
|
+
from datahub import nice_version_name
|
|
26
26
|
from datahub.cli import config_utils
|
|
27
27
|
from datahub.cli.cli_utils import ensure_has_system_metadata, fixup_gms_url, get_or_else
|
|
28
28
|
from datahub.cli.env_utils import get_boolean_env_variable
|
datahub/entrypoints.py
CHANGED
|
@@ -6,7 +6,7 @@ from typing import ContextManager, Optional
|
|
|
6
6
|
|
|
7
7
|
import click
|
|
8
8
|
|
|
9
|
-
import datahub
|
|
9
|
+
import datahub as datahub_package
|
|
10
10
|
from datahub.cli.check_cli import check
|
|
11
11
|
from datahub.cli.cli_utils import (
|
|
12
12
|
fixup_gms_url,
|
|
@@ -74,8 +74,8 @@ if sys.version_info >= (3, 12):
|
|
|
74
74
|
help="Write debug-level logs to a file.",
|
|
75
75
|
)
|
|
76
76
|
@click.version_option(
|
|
77
|
-
version=
|
|
78
|
-
prog_name=
|
|
77
|
+
version=datahub_package.nice_version_name(),
|
|
78
|
+
prog_name=datahub_package.__package_name__,
|
|
79
79
|
)
|
|
80
80
|
def datahub(
|
|
81
81
|
debug: bool,
|
|
@@ -112,7 +112,7 @@ def datahub(
|
|
|
112
112
|
def version(include_server: bool = False) -> None:
|
|
113
113
|
"""Print version number and exit."""
|
|
114
114
|
|
|
115
|
-
click.echo(f"DataHub CLI version: {
|
|
115
|
+
click.echo(f"DataHub CLI version: {datahub_package.nice_version_name()}")
|
|
116
116
|
click.echo(f"Models: {model_version_name()}")
|
|
117
117
|
click.echo(f"Python version: {sys.version}")
|
|
118
118
|
if include_server:
|
|
@@ -223,7 +223,7 @@ def main(**kwargs):
|
|
|
223
223
|
logger.exception(f"Command failed: {exc}")
|
|
224
224
|
|
|
225
225
|
logger.debug(
|
|
226
|
-
f"DataHub CLI version: {
|
|
226
|
+
f"DataHub CLI version: {datahub_package.__version__} at {datahub_package.__file__}"
|
|
227
227
|
)
|
|
228
228
|
logger.debug(
|
|
229
229
|
f"Python version: {sys.version} at {sys.executable} on {platform.platform()}"
|
|
@@ -17,7 +17,7 @@ from typing import (
|
|
|
17
17
|
|
|
18
18
|
import typing_inspect
|
|
19
19
|
|
|
20
|
-
from datahub
|
|
20
|
+
from datahub import __package_name__
|
|
21
21
|
from datahub.configuration.common import ConfigurationError
|
|
22
22
|
|
|
23
23
|
if sys.version_info < (3, 10):
|
|
@@ -173,10 +173,8 @@ class PluginRegistry(Generic[T]):
|
|
|
173
173
|
|
|
174
174
|
tp = self._ensure_not_lazy(key)
|
|
175
175
|
if isinstance(tp, ModuleNotFoundError):
|
|
176
|
-
# TODO: Once we're on Python 3.11 (with PEP 678), we can use .add_note()
|
|
177
|
-
# to enrich the error instead of wrapping it.
|
|
178
176
|
raise ConfigurationError(
|
|
179
|
-
f"{key} is disabled
|
|
177
|
+
f"{key} is disabled; try running: pip install '{__package_name__}[{key}]'"
|
|
180
178
|
) from tp
|
|
181
179
|
elif isinstance(tp, Exception):
|
|
182
180
|
raise ConfigurationError(
|
|
@@ -15,7 +15,7 @@ import click
|
|
|
15
15
|
import humanfriendly
|
|
16
16
|
import psutil
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
import datahub
|
|
19
19
|
from datahub.configuration.common import (
|
|
20
20
|
ConfigModel,
|
|
21
21
|
IgnorableError,
|
|
@@ -144,8 +144,8 @@ def _add_init_error_context(step: str) -> Iterator[None]:
|
|
|
144
144
|
|
|
145
145
|
@dataclass
|
|
146
146
|
class CliReport(Report):
|
|
147
|
-
cli_version: str = nice_version_name()
|
|
148
|
-
cli_entry_location: str = __file__
|
|
147
|
+
cli_version: str = datahub.nice_version_name()
|
|
148
|
+
cli_entry_location: str = datahub.__file__
|
|
149
149
|
models_version: str = model_version_name()
|
|
150
150
|
py_version: str = sys.version
|
|
151
151
|
py_exec_path: str = sys.executable
|
|
@@ -218,7 +218,6 @@ class GlueSourceConfig(
|
|
|
218
218
|
|
|
219
219
|
@dataclass
|
|
220
220
|
class GlueSourceReport(StaleEntityRemovalSourceReport):
|
|
221
|
-
catalog_id: Optional[str] = None
|
|
222
221
|
tables_scanned = 0
|
|
223
222
|
filtered: List[str] = dataclass_field(default_factory=list)
|
|
224
223
|
databases: EntityFilterReport = EntityFilterReport.field(type="database")
|
|
@@ -316,7 +315,6 @@ class GlueSource(StatefulIngestionSourceBase):
|
|
|
316
315
|
self.extract_owners = config.extract_owners
|
|
317
316
|
self.source_config = config
|
|
318
317
|
self.report = GlueSourceReport()
|
|
319
|
-
self.report.catalog_id = self.source_config.catalog_id
|
|
320
318
|
self.glue_client = config.glue_client
|
|
321
319
|
self.s3_client = config.s3_client
|
|
322
320
|
self.extract_transforms = config.extract_transforms
|
|
@@ -740,17 +738,11 @@ class GlueSource(StatefulIngestionSourceBase):
|
|
|
740
738
|
self,
|
|
741
739
|
) -> Tuple[List[Mapping[str, Any]], List[Dict]]:
|
|
742
740
|
all_databases = [*self.get_all_databases()]
|
|
743
|
-
all_tables = [
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
except Exception as e:
|
|
749
|
-
self.report.failure(
|
|
750
|
-
message="Failed to get tables from database",
|
|
751
|
-
context=database["Name"],
|
|
752
|
-
exc=e,
|
|
753
|
-
)
|
|
741
|
+
all_tables = [
|
|
742
|
+
tables
|
|
743
|
+
for database in all_databases
|
|
744
|
+
for tables in self.get_tables_from_database(database)
|
|
745
|
+
]
|
|
754
746
|
return all_databases, all_tables
|
|
755
747
|
|
|
756
748
|
def get_lineage_if_enabled(
|
|
@@ -139,10 +139,7 @@ class LookMLSourceConfig(
|
|
|
139
139
|
)
|
|
140
140
|
emit_reachable_views_only: bool = Field(
|
|
141
141
|
True,
|
|
142
|
-
description=
|
|
143
|
-
"When enabled, only views that are reachable from explores defined in the model files are emitted. "
|
|
144
|
-
"If set to False, all views imported in model files are emitted. Views that are unreachable i.e. not explicitly defined in the model files are currently not emitted however reported as warning for debugging purposes."
|
|
145
|
-
),
|
|
142
|
+
description="When enabled, only views that are reachable from explores defined in the model files are emitted",
|
|
146
143
|
)
|
|
147
144
|
populate_sql_logic_for_missing_descriptions: bool = Field(
|
|
148
145
|
False,
|
|
@@ -59,7 +59,6 @@ from datahub.ingestion.source.looker.lookml_concept_context import (
|
|
|
59
59
|
from datahub.ingestion.source.looker.lookml_config import (
|
|
60
60
|
BASE_PROJECT_NAME,
|
|
61
61
|
MODEL_FILE_EXTENSION,
|
|
62
|
-
VIEW_FILE_EXTENSION,
|
|
63
62
|
LookerConnectionDefinition,
|
|
64
63
|
LookMLSourceConfig,
|
|
65
64
|
LookMLSourceReport,
|
|
@@ -885,7 +884,6 @@ class LookMLSource(StatefulIngestionSourceBase):
|
|
|
885
884
|
view_urn = maybe_looker_view.id.get_urn(
|
|
886
885
|
self.source_config
|
|
887
886
|
)
|
|
888
|
-
|
|
889
887
|
view_connection_mapping = view_connection_map.get(
|
|
890
888
|
view_urn
|
|
891
889
|
)
|
|
@@ -941,9 +939,6 @@ class LookMLSource(StatefulIngestionSourceBase):
|
|
|
941
939
|
str(maybe_looker_view.id)
|
|
942
940
|
)
|
|
943
941
|
|
|
944
|
-
if not self.source_config.emit_reachable_views_only:
|
|
945
|
-
self.report_skipped_unreachable_views(viewfile_loader, processed_view_map)
|
|
946
|
-
|
|
947
942
|
if (
|
|
948
943
|
self.source_config.tag_measures_and_dimensions
|
|
949
944
|
and self.reporter.events_produced != 0
|
|
@@ -971,56 +966,5 @@ class LookMLSource(StatefulIngestionSourceBase):
|
|
|
971
966
|
),
|
|
972
967
|
).as_workunit()
|
|
973
968
|
|
|
974
|
-
def report_skipped_unreachable_views(
|
|
975
|
-
self,
|
|
976
|
-
viewfile_loader: LookerViewFileLoader,
|
|
977
|
-
processed_view_map: Dict[str, Set[str]] = {},
|
|
978
|
-
) -> None:
|
|
979
|
-
view_files: Dict[str, List[pathlib.Path]] = {}
|
|
980
|
-
for project, folder_path in self.base_projects_folder.items():
|
|
981
|
-
folder = pathlib.Path(folder_path)
|
|
982
|
-
view_files[project] = list(folder.glob(f"**/*{VIEW_FILE_EXTENSION}"))
|
|
983
|
-
|
|
984
|
-
skipped_view_paths: Dict[str, List[str]] = {}
|
|
985
|
-
for project, views in view_files.items():
|
|
986
|
-
skipped_paths: Set[str] = set()
|
|
987
|
-
|
|
988
|
-
for view_path in views:
|
|
989
|
-
# Check if the view is already in processed_view_map
|
|
990
|
-
if not any(
|
|
991
|
-
str(view_path) in view_set
|
|
992
|
-
for view_set in processed_view_map.values()
|
|
993
|
-
):
|
|
994
|
-
looker_viewfile = viewfile_loader.load_viewfile(
|
|
995
|
-
path=str(view_path),
|
|
996
|
-
project_name=project,
|
|
997
|
-
connection=None,
|
|
998
|
-
reporter=self.reporter,
|
|
999
|
-
)
|
|
1000
|
-
|
|
1001
|
-
if looker_viewfile is not None:
|
|
1002
|
-
for raw_view in looker_viewfile.views:
|
|
1003
|
-
raw_view_name = raw_view.get("name", "")
|
|
1004
|
-
|
|
1005
|
-
if (
|
|
1006
|
-
raw_view_name
|
|
1007
|
-
and self.source_config.view_pattern.allowed(
|
|
1008
|
-
raw_view_name
|
|
1009
|
-
)
|
|
1010
|
-
):
|
|
1011
|
-
skipped_paths.add(str(view_path))
|
|
1012
|
-
|
|
1013
|
-
skipped_view_paths[project] = list(skipped_paths)
|
|
1014
|
-
|
|
1015
|
-
for project, view_paths in skipped_view_paths.items():
|
|
1016
|
-
for path in view_paths:
|
|
1017
|
-
self.reporter.report_warning(
|
|
1018
|
-
title="Skipped View File",
|
|
1019
|
-
message=(
|
|
1020
|
-
"The Looker view file was skipped because it may not be referenced by any models."
|
|
1021
|
-
),
|
|
1022
|
-
context=(f"Project: {project}, View File Path: {path}"),
|
|
1023
|
-
)
|
|
1024
|
-
|
|
1025
969
|
def get_report(self):
|
|
1026
970
|
return self.reporter
|
|
@@ -5,8 +5,6 @@ from typing import Iterable, List, Optional, Tuple
|
|
|
5
5
|
|
|
6
6
|
from pydantic import Field, SecretStr
|
|
7
7
|
from slack_sdk import WebClient
|
|
8
|
-
from tenacity import retry, wait_exponential
|
|
9
|
-
from tenacity.before_sleep import before_sleep_log
|
|
10
8
|
|
|
11
9
|
import datahub.emitter.mce_builder as builder
|
|
12
10
|
from datahub.configuration.common import ConfigModel
|
|
@@ -296,10 +294,6 @@ class SlackSource(Source):
|
|
|
296
294
|
return
|
|
297
295
|
raise e
|
|
298
296
|
|
|
299
|
-
@retry(
|
|
300
|
-
wait=wait_exponential(multiplier=2, min=4, max=60),
|
|
301
|
-
before_sleep=before_sleep_log(logger, logging.ERROR, True),
|
|
302
|
-
)
|
|
303
297
|
def get_user_to_be_updated(self) -> Iterable[CorpUser]:
|
|
304
298
|
graphql_query = textwrap.dedent(
|
|
305
299
|
"""
|
|
@@ -491,25 +491,15 @@ class SnowflakeSchemaGenerator(SnowflakeStructuredReportMixin):
|
|
|
491
491
|
try:
|
|
492
492
|
view_definitions = self.data_dictionary.get_secure_view_definitions()
|
|
493
493
|
return view_definitions[db_name][schema_name][table_name]
|
|
494
|
-
except KeyError:
|
|
495
|
-
# Received secure view definitions but the view is not present in results
|
|
496
|
-
self.structured_reporter.info(
|
|
497
|
-
title="Secure view definition not found",
|
|
498
|
-
message="Lineage will be missing for the view.",
|
|
499
|
-
context=f"{db_name}.{schema_name}.{table_name}",
|
|
500
|
-
)
|
|
501
|
-
return None
|
|
502
494
|
except Exception as e:
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
495
|
+
if isinstance(e, SnowflakePermissionError):
|
|
496
|
+
error_msg = (
|
|
497
|
+
"Failed to get secure views definitions. Please check permissions."
|
|
498
|
+
)
|
|
499
|
+
else:
|
|
500
|
+
error_msg = "Failed to get secure views definitions"
|
|
509
501
|
self.structured_reporter.warning(
|
|
510
|
-
|
|
511
|
-
message=f"Lineage will be missing for the view. {action_msg}",
|
|
512
|
-
context=f"{db_name}.{schema_name}.{table_name}",
|
|
502
|
+
error_msg,
|
|
513
503
|
exc=e,
|
|
514
504
|
)
|
|
515
505
|
return None
|
|
@@ -53,6 +53,7 @@ from datahub.metadata.com.linkedin.pegasus2avro.schema import (
|
|
|
53
53
|
)
|
|
54
54
|
from datahub.metadata.schema_classes import (
|
|
55
55
|
DatasetLineageTypeClass,
|
|
56
|
+
DatasetPropertiesClass,
|
|
56
57
|
DatasetSnapshotClass,
|
|
57
58
|
UpstreamClass,
|
|
58
59
|
)
|
|
@@ -417,11 +418,41 @@ class ClickHouseSource(TwoTierSQLAlchemySource):
|
|
|
417
418
|
dataset_snapshot: DatasetSnapshotClass = wu.metadata.proposedSnapshot
|
|
418
419
|
assert dataset_snapshot
|
|
419
420
|
|
|
420
|
-
lineage_mcp = self.get_lineage_mcp(
|
|
421
|
+
lineage_mcp, lineage_properties_aspect = self.get_lineage_mcp(
|
|
422
|
+
wu.metadata.proposedSnapshot.urn
|
|
423
|
+
)
|
|
421
424
|
|
|
422
425
|
if lineage_mcp is not None:
|
|
423
426
|
yield lineage_mcp.as_workunit()
|
|
424
427
|
|
|
428
|
+
if lineage_properties_aspect:
|
|
429
|
+
aspects = dataset_snapshot.aspects
|
|
430
|
+
if aspects is None:
|
|
431
|
+
aspects = []
|
|
432
|
+
|
|
433
|
+
dataset_properties_aspect: Optional[DatasetPropertiesClass] = None
|
|
434
|
+
|
|
435
|
+
for aspect in aspects:
|
|
436
|
+
if isinstance(aspect, DatasetPropertiesClass):
|
|
437
|
+
dataset_properties_aspect = aspect
|
|
438
|
+
|
|
439
|
+
if dataset_properties_aspect is None:
|
|
440
|
+
dataset_properties_aspect = DatasetPropertiesClass()
|
|
441
|
+
aspects.append(dataset_properties_aspect)
|
|
442
|
+
|
|
443
|
+
custom_properties = (
|
|
444
|
+
{
|
|
445
|
+
**dataset_properties_aspect.customProperties,
|
|
446
|
+
**lineage_properties_aspect.customProperties,
|
|
447
|
+
}
|
|
448
|
+
if dataset_properties_aspect.customProperties
|
|
449
|
+
else lineage_properties_aspect.customProperties
|
|
450
|
+
)
|
|
451
|
+
dataset_properties_aspect.customProperties = custom_properties
|
|
452
|
+
dataset_snapshot.aspects = aspects
|
|
453
|
+
|
|
454
|
+
dataset_snapshot.aspects.append(dataset_properties_aspect)
|
|
455
|
+
|
|
425
456
|
# Emit the work unit from super.
|
|
426
457
|
yield wu
|
|
427
458
|
|
|
@@ -625,16 +656,19 @@ class ClickHouseSource(TwoTierSQLAlchemySource):
|
|
|
625
656
|
|
|
626
657
|
def get_lineage_mcp(
|
|
627
658
|
self, dataset_urn: str
|
|
628
|
-
) ->
|
|
659
|
+
) -> Tuple[
|
|
660
|
+
Optional[MetadataChangeProposalWrapper], Optional[DatasetPropertiesClass]
|
|
661
|
+
]:
|
|
629
662
|
dataset_key = mce_builder.dataset_urn_to_key(dataset_urn)
|
|
630
663
|
if dataset_key is None:
|
|
631
|
-
return None
|
|
664
|
+
return None, None
|
|
632
665
|
|
|
633
666
|
if not self._lineage_map:
|
|
634
667
|
self._populate_lineage()
|
|
635
668
|
assert self._lineage_map is not None
|
|
636
669
|
|
|
637
670
|
upstream_lineage: List[UpstreamClass] = []
|
|
671
|
+
custom_properties: Dict[str, str] = {}
|
|
638
672
|
|
|
639
673
|
if dataset_key.name in self._lineage_map:
|
|
640
674
|
item = self._lineage_map[dataset_key.name]
|
|
@@ -650,12 +684,16 @@ class ClickHouseSource(TwoTierSQLAlchemySource):
|
|
|
650
684
|
)
|
|
651
685
|
upstream_lineage.append(upstream_table)
|
|
652
686
|
|
|
687
|
+
properties = None
|
|
688
|
+
if custom_properties:
|
|
689
|
+
properties = DatasetPropertiesClass(customProperties=custom_properties)
|
|
690
|
+
|
|
653
691
|
if not upstream_lineage:
|
|
654
|
-
return None
|
|
692
|
+
return None, properties
|
|
655
693
|
|
|
656
694
|
mcp = MetadataChangeProposalWrapper(
|
|
657
695
|
entityUrn=dataset_urn,
|
|
658
696
|
aspect=UpstreamLineage(upstreams=upstream_lineage),
|
|
659
697
|
)
|
|
660
698
|
|
|
661
|
-
return mcp
|
|
699
|
+
return mcp, properties
|