acryl-datahub 1.0.0.3rc2__py3-none-any.whl → 1.0.0.3rc5__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-1.0.0.3rc2.dist-info → acryl_datahub-1.0.0.3rc5.dist-info}/METADATA +2500 -2498
- {acryl_datahub-1.0.0.3rc2.dist-info → acryl_datahub-1.0.0.3rc5.dist-info}/RECORD +23 -21
- datahub/_version.py +1 -1
- datahub/api/entities/datacontract/datacontract.py +35 -3
- datahub/api/entities/datajob/datajob.py +7 -4
- datahub/ingestion/run/pipeline.py +6 -4
- datahub/ingestion/source/common/subtypes.py +3 -0
- datahub/ingestion/source/sigma/config.py +2 -3
- datahub/ingestion/source/tableau/tableau.py +31 -6
- datahub/ingestion/source/vertexai/vertexai.py +316 -4
- datahub/ingestion/source/vertexai/vertexai_result_type_utils.py +23 -2
- datahub/metadata/_schema_classes.py +1 -1
- datahub/metadata/schema.avsc +2 -1
- datahub/metadata/schemas/DataContractKey.avsc +2 -1
- datahub/sdk/_all_entities.py +4 -0
- datahub/sdk/_shared.py +140 -0
- datahub/sdk/entity_client.py +8 -0
- datahub/sdk/mlmodel.py +301 -0
- datahub/sdk/mlmodelgroup.py +233 -0
- {acryl_datahub-1.0.0.3rc2.dist-info → acryl_datahub-1.0.0.3rc5.dist-info}/WHEEL +0 -0
- {acryl_datahub-1.0.0.3rc2.dist-info → acryl_datahub-1.0.0.3rc5.dist-info}/entry_points.txt +0 -0
- {acryl_datahub-1.0.0.3rc2.dist-info → acryl_datahub-1.0.0.3rc5.dist-info}/licenses/LICENSE +0 -0
- {acryl_datahub-1.0.0.3rc2.dist-info → acryl_datahub-1.0.0.3rc5.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
acryl_datahub-1.0.0.
|
|
1
|
+
acryl_datahub-1.0.0.3rc5.dist-info/licenses/LICENSE,sha256=9xNHpsD0uYF5ONzXsKDCuHHB-xbiCrSbueWXqrTNsxk,11365
|
|
2
2
|
datahub/__init__.py,sha256=aq_i5lVREmoLfYIqcx_pEQicO855YlhD19tWc1eZZNI,59
|
|
3
3
|
datahub/__main__.py,sha256=pegIvQ9hzK7IhqVeUi1MeADSZ2QlP-D3K0OQdEg55RU,106
|
|
4
|
-
datahub/_version.py,sha256=
|
|
4
|
+
datahub/_version.py,sha256=QrGnvYk4Mo48c9uZMV5srbywzBX4Fcxp27GXbDul8F4,323
|
|
5
5
|
datahub/entrypoints.py,sha256=2TYgHhs3sCxJlojIHjqfxzt3_ImPwPzq4vBtsUuMqu4,8885
|
|
6
6
|
datahub/errors.py,sha256=BzKdcmYseHOt36zfjJXc17WNutFhp9Y23cU_L6cIkxc,612
|
|
7
7
|
datahub/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -37,12 +37,12 @@ datahub/api/entities/datacontract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
|
37
37
|
datahub/api/entities/datacontract/assertion.py,sha256=3tkX2c1g6u3sZatuzrac9RNuPlAdxSSe5QhyVjt90SU,182
|
|
38
38
|
datahub/api/entities/datacontract/assertion_operator.py,sha256=N10PWIwhAPLAdcXIp_ZJoiQMS5FfFi4vH9sYmt2vUsA,4526
|
|
39
39
|
datahub/api/entities/datacontract/data_quality_assertion.py,sha256=ioYOz-oNkAfHdpTyG6wVhGpY6YpH1L2cHiyClpxoNvg,3918
|
|
40
|
-
datahub/api/entities/datacontract/datacontract.py,sha256=
|
|
40
|
+
datahub/api/entities/datacontract/datacontract.py,sha256=V1P5i8_9IuKf3k-mvJphZo9y28a_wnAwfipwCklPGGM,9272
|
|
41
41
|
datahub/api/entities/datacontract/freshness_assertion.py,sha256=TpKqNeUzeGH9wrYqelYVuZpolEm7iYXj1nymwWu8-_c,2700
|
|
42
42
|
datahub/api/entities/datacontract/schema_assertion.py,sha256=24VQ0lm4LxWbpIrho2R6Atc80yqo76Vu7AN2LZiMOzc,2418
|
|
43
43
|
datahub/api/entities/datajob/__init__.py,sha256=suzCs4cLphQ64oDG7meXsJVp6ya9_Glzqamoq_ti5GA,222
|
|
44
44
|
datahub/api/entities/datajob/dataflow.py,sha256=VBaBoO9it2cqoJarXqGQhSGJrecHVqGhdCPbpzqeSz0,7505
|
|
45
|
-
datahub/api/entities/datajob/datajob.py,sha256=
|
|
45
|
+
datahub/api/entities/datajob/datajob.py,sha256=gAIdTSlAY3iV3R3EUAcOtuYam8aR2jTGQ833iVsQNt4,8033
|
|
46
46
|
datahub/api/entities/dataprocess/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
47
|
datahub/api/entities/dataprocess/dataprocess_instance.py,sha256=IhY-rcXs-r8EatwW1_sJA79GxQyg9lhILBR66IrnLkY,19120
|
|
48
48
|
datahub/api/entities/dataproduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -182,7 +182,7 @@ datahub/ingestion/reporting/file_reporter.py,sha256=tiWukmMxHrTQI3rOAumsq6lRlw8T
|
|
|
182
182
|
datahub/ingestion/reporting/reporting_provider_registry.py,sha256=jTYSh3T4sensjnHQfPLiIcbA2dG8w0px9ghChAJjGdU,310
|
|
183
183
|
datahub/ingestion/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
184
184
|
datahub/ingestion/run/connection.py,sha256=mngNzr5aRLUDa5Izqxa0xkdDEqEqcDuacWSKIlkdvPc,1483
|
|
185
|
-
datahub/ingestion/run/pipeline.py,sha256
|
|
185
|
+
datahub/ingestion/run/pipeline.py,sha256=4CJ3fUAPI1AzIjjg_lyv0FP9K0kfu9dPtNDwvVDojXs,29758
|
|
186
186
|
datahub/ingestion/run/pipeline_config.py,sha256=EDwqlid4h_qyqyeTRCEqb1RiFA4py_T-Poz1eIKmzT4,4101
|
|
187
187
|
datahub/ingestion/run/sink_callback.py,sha256=xZAzaKkR0dcQP838pMJWsA52oaQXV5BiqXkpxEpJ_9U,2856
|
|
188
188
|
datahub/ingestion/sink/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -272,7 +272,7 @@ datahub/ingestion/source/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
|
272
272
|
datahub/ingestion/source/common/data_platforms.py,sha256=HhuP3YIEi2WpyKDjUU8RiM0a2qjHWQcvc8kcqub0cVo,548
|
|
273
273
|
datahub/ingestion/source/common/data_reader.py,sha256=XbSxiRTYrk6seOz0ZjVjzSpGvP8lEjmqXrNI4cdYYmQ,1819
|
|
274
274
|
datahub/ingestion/source/common/gcp_credentials_config.py,sha256=_NapGkAqZMbXNClLlmOfANS7U6rChhdthRX9s9iUv9k,2411
|
|
275
|
-
datahub/ingestion/source/common/subtypes.py,sha256=
|
|
275
|
+
datahub/ingestion/source/common/subtypes.py,sha256=iJ9IfuiLK_T6yJ9ovY1HA83ujaVWichAgR-rUlBXemk,3238
|
|
276
276
|
datahub/ingestion/source/data_lake_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
277
277
|
datahub/ingestion/source/data_lake_common/config.py,sha256=qUk83B01hjuBKHvVz8SmXnVCy5eFj-2-2QLEOrAdbgk,359
|
|
278
278
|
datahub/ingestion/source/data_lake_common/data_lake_utils.py,sha256=nxu7osuzqxScPFc-1ODA2M1c_xPNPpRH_SMMU7zKOIE,6212
|
|
@@ -440,7 +440,7 @@ datahub/ingestion/source/schema_inference/json.py,sha256=p5S-3idn65V2uad5T8txs1U
|
|
|
440
440
|
datahub/ingestion/source/schema_inference/object.py,sha256=dhSOtxVJHbTDY0hWeHwdLYHnOsW07Omk7Y4DPeztie0,5847
|
|
441
441
|
datahub/ingestion/source/schema_inference/parquet.py,sha256=CdqsNuiabLLCulWbuPMssijeFmKLv3M5MKFIhlatpWA,3456
|
|
442
442
|
datahub/ingestion/source/sigma/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
443
|
-
datahub/ingestion/source/sigma/config.py,sha256=
|
|
443
|
+
datahub/ingestion/source/sigma/config.py,sha256=ztZf0YisGSXKgKeqP9ipDlRKLXU-Y-XABqm7HCJ8pvA,6265
|
|
444
444
|
datahub/ingestion/source/sigma/data_classes.py,sha256=YZkkzwftV34mq5c_4jlC2PCSiRKt4hvHjmqikLQhl1I,2012
|
|
445
445
|
datahub/ingestion/source/sigma/sigma.py,sha256=ZtPj8eu6hcJxyFcWizob4kRaxrpcqsWzh__lmuVZdt8,25212
|
|
446
446
|
datahub/ingestion/source/sigma/sigma_api.py,sha256=7PK5AQa838hYeaQ5L0dioi4n4bLrpN-r7COKTTNUYw8,19837
|
|
@@ -515,7 +515,7 @@ datahub/ingestion/source/state_provider/datahub_ingestion_checkpointing_provider
|
|
|
515
515
|
datahub/ingestion/source/state_provider/file_ingestion_checkpointing_provider.py,sha256=DziD57PbHn2Tcy51tYXCG-GQgyTGMUxnkuzVS_xihFY,4079
|
|
516
516
|
datahub/ingestion/source/state_provider/state_provider_registry.py,sha256=SVq4mIyGNmLXE9OZx1taOiNPqDoQp03-Ot9rYnB5F3k,401
|
|
517
517
|
datahub/ingestion/source/tableau/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
518
|
-
datahub/ingestion/source/tableau/tableau.py,sha256=
|
|
518
|
+
datahub/ingestion/source/tableau/tableau.py,sha256=WLOcP9VJgJPlCTLHuUWlglrHueoXvGCzXvctasJiIHE,155034
|
|
519
519
|
datahub/ingestion/source/tableau/tableau_common.py,sha256=MIkHKZg_v2IVCRk-YdPlLZl3m0LcWZm5Indwb3IV2ZQ,26931
|
|
520
520
|
datahub/ingestion/source/tableau/tableau_constant.py,sha256=ZcAeHsQUXVVL26ORly0ByZk_GJAFbxaKuJAlX_sYMac,2686
|
|
521
521
|
datahub/ingestion/source/tableau/tableau_server_wrapper.py,sha256=nSyx9RzC6TCQDm-cTVJ657qT8iDwzk_8JMKpohhmOc4,1046
|
|
@@ -537,9 +537,9 @@ datahub/ingestion/source/usage/clickhouse_usage.py,sha256=jJ-EUJdS7t4d9RVjLWQQ2e
|
|
|
537
537
|
datahub/ingestion/source/usage/starburst_trino_usage.py,sha256=O3EDEZsXPNdsKGD-jStREA8e4-iTlnqd3ocqtAYFKNA,10544
|
|
538
538
|
datahub/ingestion/source/usage/usage_common.py,sha256=uuCgIduhlRL2zIAN8rymZ5cZn1WF6akZ-ZbbaVYo9_w,9813
|
|
539
539
|
datahub/ingestion/source/vertexai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
540
|
-
datahub/ingestion/source/vertexai/vertexai.py,sha256=
|
|
540
|
+
datahub/ingestion/source/vertexai/vertexai.py,sha256=RuHda0mbc1DElYZIZ_W_hvkN7Eg4LIvI1fRFMvpHPB0,56012
|
|
541
541
|
datahub/ingestion/source/vertexai/vertexai_config.py,sha256=uMnsv3b6TsPRH26u_JE_v1u0db7ANEAFlVxU5A6ELRM,989
|
|
542
|
-
datahub/ingestion/source/vertexai/vertexai_result_type_utils.py,sha256=
|
|
542
|
+
datahub/ingestion/source/vertexai/vertexai_result_type_utils.py,sha256=dJwRxuDA3flmTKjV5EUbmDFfxE0S8K1CEPB_EYUfNfI,3578
|
|
543
543
|
datahub/ingestion/source_config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
544
544
|
datahub/ingestion/source_config/csv_enricher.py,sha256=IROxxfFJA56dHkmmbjjhb7h1pZSi33tzW9sQb7ZEgac,1733
|
|
545
545
|
datahub/ingestion/source_config/operation_config.py,sha256=hxF2RM0jk0HUPXYiliMniXBC-wz-ZPcs90ZGLfHT8rE,3924
|
|
@@ -593,8 +593,8 @@ datahub/lite/lite_registry.py,sha256=bpH0kasP-LtwwUFNA2QsOIehfekAYfJtN-AkQLmSWnw
|
|
|
593
593
|
datahub/lite/lite_server.py,sha256=p9Oa2nNs65mqcssSIVOr7VOzWqfVstz6ZQEdT4f82S0,1949
|
|
594
594
|
datahub/lite/lite_util.py,sha256=G0LQHKkyEb1pc_q183g6hflShclGx7kikgMaOxtVVcs,4545
|
|
595
595
|
datahub/metadata/__init__.py,sha256=AjhXPjI6cnpdcrBRrE5gOWo15vv2TTl2ctU4UAnUN7A,238
|
|
596
|
-
datahub/metadata/_schema_classes.py,sha256=
|
|
597
|
-
datahub/metadata/schema.avsc,sha256=
|
|
596
|
+
datahub/metadata/_schema_classes.py,sha256=sdjR8XblvlYPYxYeLDQwVzTcYPAR9ycCa2sNOylOews,1012659
|
|
597
|
+
datahub/metadata/schema.avsc,sha256=w2P9zIqAZQmcJdw3pJxAM05m97KssRHBMGbEn_VnjKU,753146
|
|
598
598
|
datahub/metadata/schema_classes.py,sha256=X5Jl5EaSxyHdXOQv14pJ5WkQALun4MRpJ4q12wVFE18,1299
|
|
599
599
|
datahub/metadata/urns.py,sha256=nfrCTExR-k2P9w272WVtWSN3xW1VUJngPwP3xnvULjU,1217
|
|
600
600
|
datahub/metadata/_urns/__init__.py,sha256=cOF3GHMDgPhmbLKbN02NPpuLGHSu0qNgQyBRv08eqF0,243
|
|
@@ -706,7 +706,7 @@ datahub/metadata/schemas/Cost.avsc,sha256=o4kYZSss2uEwJ6gCA9fhBUoyD5xUqcSxz78vkI
|
|
|
706
706
|
datahub/metadata/schemas/DashboardInfo.avsc,sha256=li2lSV6R4V-nz6foOi-NYxt_8ShHWfoKRw6M2BG5530,12907
|
|
707
707
|
datahub/metadata/schemas/DashboardKey.avsc,sha256=yKlusgebWTvZhVeGgRNLZW6Qu6Fg_K0e2EbV8zr3jvA,1360
|
|
708
708
|
datahub/metadata/schemas/DashboardUsageStatistics.avsc,sha256=pUAKqs49Wy5pAL92g_6QcFtJeoYeMWRGiHWS68IJN2A,7693
|
|
709
|
-
datahub/metadata/schemas/DataContractKey.avsc,sha256=
|
|
709
|
+
datahub/metadata/schemas/DataContractKey.avsc,sha256=m0ej_Wu7NcuZQCRwQI3Sidfv9bUy5mvuhlpgax6i1xA,511
|
|
710
710
|
datahub/metadata/schemas/DataContractProperties.avsc,sha256=RCxuJMlZwqEE0iHTpuXvcH6zRFoOt7ysQFPrJRp3RqE,4763
|
|
711
711
|
datahub/metadata/schemas/DataContractStatus.avsc,sha256=5yvT43AIB13Dn_h0-4s7fsL7BTuXhkK5pi2KJug4_qg,1029
|
|
712
712
|
datahub/metadata/schemas/DataFlowInfo.avsc,sha256=tDRTd1rA3v_7kwUVbQbb-cuo6D-t3pcuE4fiRz4D8f0,4682
|
|
@@ -899,15 +899,17 @@ datahub/metadata/schemas/__init__.py,sha256=uvLNC3VyCkWA_v8e9FdA1leFf46NFKDD0Aaj
|
|
|
899
899
|
datahub/pydantic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
900
900
|
datahub/pydantic/compat.py,sha256=TUEo4kSEeOWVAhV6LQtst1phrpVgGtK4uif4OI5vQ2M,1937
|
|
901
901
|
datahub/sdk/__init__.py,sha256=QeutS6Th8K4E4ZxXuoGrmvahN6zA9Oh9asKk5mw9AIk,1670
|
|
902
|
-
datahub/sdk/_all_entities.py,sha256=
|
|
902
|
+
datahub/sdk/_all_entities.py,sha256=inbLFv2T7dhZpGfBY5FPhCWbyE0P0G8umOt0Bc7V4XA,520
|
|
903
903
|
datahub/sdk/_attribution.py,sha256=0Trh8steVd27GOr9MKCZeawbuDD2_q3GIsZlCtHqEUg,1321
|
|
904
|
-
datahub/sdk/_shared.py,sha256=
|
|
904
|
+
datahub/sdk/_shared.py,sha256=5L1IkihLc7Pd2x0ypDs96kZ8ecm6o0-UZEn0J1Sffqw,24808
|
|
905
905
|
datahub/sdk/_utils.py,sha256=aGE665Su8SGtj2CRDiTaXNYrJ8ADBsS0m4DmaXw79b8,1027
|
|
906
906
|
datahub/sdk/container.py,sha256=yw_vw9Jl1wOYNwMHxQHLz5ZvVQVDWWHi9CWBR3hOCd8,7547
|
|
907
907
|
datahub/sdk/dataset.py,sha256=5LG4c_8bHeSPYrW88KNXRgiPD8frBjR0OBVrrwdquU4,29152
|
|
908
908
|
datahub/sdk/entity.py,sha256=Q29AbpS58L4gD8ETwoNIwG-ouytz4c0MSSFi6-jLl_4,6742
|
|
909
|
-
datahub/sdk/entity_client.py,sha256=
|
|
909
|
+
datahub/sdk/entity_client.py,sha256=1AC9J7-jv3rD-MFEPz2PnFrT8nFkj_WO0M-4nyVOtQk,5319
|
|
910
910
|
datahub/sdk/main_client.py,sha256=h2MKRhR-BO0zGCMhF7z2bTncX4hagKrAYwR3wTNTtzA,3666
|
|
911
|
+
datahub/sdk/mlmodel.py,sha256=amS-hHg5tT7zAqEHG17kSA60Q7td2DFtO-W2rEfb2rY,10206
|
|
912
|
+
datahub/sdk/mlmodelgroup.py,sha256=_7IkqkLVeyqYVEUHTVePSDLQyESsnwht5ca1lcMODAg,7842
|
|
911
913
|
datahub/sdk/resolver_client.py,sha256=nKMAZJt2tRSGfKSzoREIh43PXqjM3umLiYkYHJjo1io,3243
|
|
912
914
|
datahub/sdk/search_client.py,sha256=BJR5t7Ff2oDNOGLcSCp9YHzrGKbgOQr7T8XQKGEpucw,3437
|
|
913
915
|
datahub/sdk/search_filters.py,sha256=BcMhvG5hGYAATtLPLz4WLRjKApX2oLYrrcGn-CG__ek,12901
|
|
@@ -1046,8 +1048,8 @@ datahub_provider/operators/datahub_assertion_operator.py,sha256=uvTQ-jk2F0sbqqxp
|
|
|
1046
1048
|
datahub_provider/operators/datahub_assertion_sensor.py,sha256=lCBj_3x1cf5GMNpHdfkpHuyHfVxsm6ff5x2Z5iizcAo,140
|
|
1047
1049
|
datahub_provider/operators/datahub_operation_operator.py,sha256=aevDp2FzX7FxGlXrR0khoHNbxbhKR2qPEX5e8O2Jyzw,174
|
|
1048
1050
|
datahub_provider/operators/datahub_operation_sensor.py,sha256=8fcdVBCEPgqy1etTXgLoiHoJrRt_nzFZQMdSzHqSG7M,168
|
|
1049
|
-
acryl_datahub-1.0.0.
|
|
1050
|
-
acryl_datahub-1.0.0.
|
|
1051
|
-
acryl_datahub-1.0.0.
|
|
1052
|
-
acryl_datahub-1.0.0.
|
|
1053
|
-
acryl_datahub-1.0.0.
|
|
1051
|
+
acryl_datahub-1.0.0.3rc5.dist-info/METADATA,sha256=4yRDLa5bvQ1tAjJ2uzc4mKVmegeKOASmLpseMx9A1K8,176989
|
|
1052
|
+
acryl_datahub-1.0.0.3rc5.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
1053
|
+
acryl_datahub-1.0.0.3rc5.dist-info/entry_points.txt,sha256=o3mDeJXSKhsy7XLkuogihraiabBdLn9HaizYXPrxmk0,9710
|
|
1054
|
+
acryl_datahub-1.0.0.3rc5.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
|
|
1055
|
+
acryl_datahub-1.0.0.3rc5.dist-info/RECORD,,
|
datahub/_version.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import collections
|
|
2
|
-
from typing import Iterable, List, Optional, Tuple
|
|
2
|
+
from typing import Dict, Iterable, List, Optional, Tuple, Union
|
|
3
3
|
|
|
4
4
|
from ruamel.yaml import YAML
|
|
5
5
|
from typing_extensions import Literal
|
|
@@ -25,6 +25,8 @@ from datahub.metadata.schema_classes import (
|
|
|
25
25
|
FreshnessContractClass,
|
|
26
26
|
SchemaContractClass,
|
|
27
27
|
StatusClass,
|
|
28
|
+
StructuredPropertiesClass,
|
|
29
|
+
StructuredPropertyValueAssignmentClass,
|
|
28
30
|
)
|
|
29
31
|
from datahub.utilities.urns.urn import guess_entity_type
|
|
30
32
|
|
|
@@ -47,8 +49,12 @@ class DataContract(v1_ConfigModel):
|
|
|
47
49
|
entity: str = v1_Field(
|
|
48
50
|
description="The entity urn that the Data Contract is associated with"
|
|
49
51
|
)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
properties: Optional[Dict[str, Union[str, float, List[Union[str, float]]]]] = (
|
|
53
|
+
v1_Field(
|
|
54
|
+
default=None,
|
|
55
|
+
description="Structured properties associated with the data contract.",
|
|
56
|
+
)
|
|
57
|
+
)
|
|
52
58
|
|
|
53
59
|
schema_field: Optional[SchemaAssertion] = v1_Field(default=None, alias="schema")
|
|
54
60
|
|
|
@@ -172,6 +178,30 @@ class DataContract(v1_ConfigModel):
|
|
|
172
178
|
)
|
|
173
179
|
yield from dq_assertion_mcps
|
|
174
180
|
|
|
181
|
+
# Construct the structured properties aspect if properties are defined
|
|
182
|
+
structured_properties_aspect: Optional[StructuredPropertiesClass] = None
|
|
183
|
+
if self.properties:
|
|
184
|
+
property_assignments: List[StructuredPropertyValueAssignmentClass] = []
|
|
185
|
+
for key, value in self.properties.items():
|
|
186
|
+
# Use f-string formatting for the property URN, like in dataset.py
|
|
187
|
+
prop_urn = f"urn:li:structuredProperty:{key}"
|
|
188
|
+
# Ensure value is a list for StructuredPropertyValueAssignmentClass
|
|
189
|
+
values_list = value if isinstance(value, list) else [value]
|
|
190
|
+
property_assignments.append(
|
|
191
|
+
StructuredPropertyValueAssignmentClass(
|
|
192
|
+
propertyUrn=prop_urn,
|
|
193
|
+
values=[
|
|
194
|
+
str(v) for v in values_list
|
|
195
|
+
], # Ensure all values are strings
|
|
196
|
+
)
|
|
197
|
+
)
|
|
198
|
+
if (
|
|
199
|
+
property_assignments
|
|
200
|
+
): # Only create aspect if there are valid assignments
|
|
201
|
+
structured_properties_aspect = StructuredPropertiesClass(
|
|
202
|
+
properties=property_assignments
|
|
203
|
+
)
|
|
204
|
+
|
|
175
205
|
# Now that we've generated the assertions, we can generate
|
|
176
206
|
# the actual data contract.
|
|
177
207
|
yield from MetadataChangeProposalWrapper.construct_many(
|
|
@@ -202,6 +232,8 @@ class DataContract(v1_ConfigModel):
|
|
|
202
232
|
if True
|
|
203
233
|
else None
|
|
204
234
|
),
|
|
235
|
+
# Add structured properties aspect if defined
|
|
236
|
+
structured_properties_aspect,
|
|
205
237
|
],
|
|
206
238
|
)
|
|
207
239
|
|
|
@@ -108,7 +108,9 @@ class DataJob:
|
|
|
108
108
|
return [tags]
|
|
109
109
|
|
|
110
110
|
def generate_mcp(
|
|
111
|
-
self,
|
|
111
|
+
self,
|
|
112
|
+
generate_lineage: bool = True,
|
|
113
|
+
materialize_iolets: bool = True,
|
|
112
114
|
) -> Iterable[MetadataChangeProposalWrapper]:
|
|
113
115
|
env: Optional[str] = None
|
|
114
116
|
if self.flow_urn.cluster.upper() in builder.ALL_ENV_TYPES:
|
|
@@ -152,9 +154,10 @@ class DataJob:
|
|
|
152
154
|
)
|
|
153
155
|
yield mcp
|
|
154
156
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
157
|
+
if generate_lineage:
|
|
158
|
+
yield from self.generate_data_input_output_mcp(
|
|
159
|
+
materialize_iolets=materialize_iolets
|
|
160
|
+
)
|
|
158
161
|
|
|
159
162
|
for owner in self.generate_ownership_aspect():
|
|
160
163
|
mcp = MetadataChangeProposalWrapper(
|
|
@@ -555,18 +555,20 @@ class Pipeline:
|
|
|
555
555
|
def raise_from_status(self, raise_warnings: bool = False) -> None:
|
|
556
556
|
if self.source.get_report().failures:
|
|
557
557
|
raise PipelineExecutionError(
|
|
558
|
-
"Source reported errors", self.source.get_report()
|
|
558
|
+
"Source reported errors", self.source.get_report().failures
|
|
559
559
|
)
|
|
560
560
|
if self.sink.get_report().failures:
|
|
561
|
-
raise PipelineExecutionError(
|
|
561
|
+
raise PipelineExecutionError(
|
|
562
|
+
"Sink reported errors", self.sink.get_report().failures
|
|
563
|
+
)
|
|
562
564
|
if raise_warnings:
|
|
563
565
|
if self.source.get_report().warnings:
|
|
564
566
|
raise PipelineExecutionError(
|
|
565
|
-
"Source reported warnings", self.source.get_report()
|
|
567
|
+
"Source reported warnings", self.source.get_report().warnings
|
|
566
568
|
)
|
|
567
569
|
if self.sink.get_report().warnings:
|
|
568
570
|
raise PipelineExecutionError(
|
|
569
|
-
"Sink reported warnings", self.sink.get_report()
|
|
571
|
+
"Sink reported warnings", self.sink.get_report().warnings
|
|
570
572
|
)
|
|
571
573
|
|
|
572
574
|
def log_ingestion_stats(self) -> None:
|
|
@@ -18,7 +18,6 @@ from datahub.ingestion.source.state.stale_entity_removal_handler import (
|
|
|
18
18
|
from datahub.ingestion.source.state.stateful_ingestion_base import (
|
|
19
19
|
StatefulIngestionConfigBase,
|
|
20
20
|
)
|
|
21
|
-
from datahub.utilities.lossy_collections import LossyDict
|
|
22
21
|
|
|
23
22
|
logger = logging.getLogger(__name__)
|
|
24
23
|
|
|
@@ -81,8 +80,8 @@ class WorkspaceCounts(BaseModel):
|
|
|
81
80
|
class SigmaWorkspaceEntityFilterReport(EntityFilterReport):
|
|
82
81
|
type: str = "workspace"
|
|
83
82
|
|
|
84
|
-
workspace_counts:
|
|
85
|
-
default_factory=
|
|
83
|
+
workspace_counts: Dict[str, WorkspaceCounts] = Field(
|
|
84
|
+
default_factory=dict,
|
|
86
85
|
description="Counts of workbooks, datasets, elements and pages in each workspace.",
|
|
87
86
|
)
|
|
88
87
|
|
|
@@ -12,6 +12,7 @@ from typing import (
|
|
|
12
12
|
Dict,
|
|
13
13
|
Iterable,
|
|
14
14
|
List,
|
|
15
|
+
Literal,
|
|
15
16
|
Optional,
|
|
16
17
|
Set,
|
|
17
18
|
Tuple,
|
|
@@ -612,10 +613,14 @@ class TableauConfig(
|
|
|
612
613
|
description="Configuration settings for ingesting Tableau groups and their capabilities as custom properties.",
|
|
613
614
|
)
|
|
614
615
|
|
|
615
|
-
ingest_hidden_assets: bool = Field(
|
|
616
|
-
|
|
617
|
-
description=
|
|
618
|
-
|
|
616
|
+
ingest_hidden_assets: Union[List[Literal["worksheet", "dashboard"]], bool] = Field(
|
|
617
|
+
default=["worksheet", "dashboard"],
|
|
618
|
+
description=(
|
|
619
|
+
"When enabled, hidden worksheets and dashboards are ingested into Datahub."
|
|
620
|
+
" If a dashboard or worksheet is hidden in Tableau the luid is blank."
|
|
621
|
+
" A list of asset types can also be specified, to only ingest those hidden assets."
|
|
622
|
+
" Current options supported are 'worksheet' and 'dashboard'."
|
|
623
|
+
),
|
|
619
624
|
)
|
|
620
625
|
|
|
621
626
|
tags_for_hidden_assets: List[str] = Field(
|
|
@@ -1348,6 +1353,26 @@ class TableauSiteSource:
|
|
|
1348
1353
|
# More info here: https://help.tableau.com/current/api/metadata_api/en-us/reference/view.doc.html
|
|
1349
1354
|
return not dashboard_or_view.get(c.LUID)
|
|
1350
1355
|
|
|
1356
|
+
def _should_ingest_worksheet(self, worksheet: Dict) -> bool:
|
|
1357
|
+
return (
|
|
1358
|
+
self.config.ingest_hidden_assets is True
|
|
1359
|
+
or (
|
|
1360
|
+
isinstance(self.config.ingest_hidden_assets, list)
|
|
1361
|
+
and "worksheet" in self.config.ingest_hidden_assets
|
|
1362
|
+
)
|
|
1363
|
+
or not self._is_hidden_view(worksheet)
|
|
1364
|
+
)
|
|
1365
|
+
|
|
1366
|
+
def _should_ingest_dashboard(self, dashboard: Dict) -> bool:
|
|
1367
|
+
return (
|
|
1368
|
+
self.config.ingest_hidden_assets is True
|
|
1369
|
+
or (
|
|
1370
|
+
isinstance(self.config.ingest_hidden_assets, list)
|
|
1371
|
+
and "dashboard" in self.config.ingest_hidden_assets
|
|
1372
|
+
)
|
|
1373
|
+
or not self._is_hidden_view(dashboard)
|
|
1374
|
+
)
|
|
1375
|
+
|
|
1351
1376
|
def get_connection_object_page(
|
|
1352
1377
|
self,
|
|
1353
1378
|
query: str,
|
|
@@ -3059,7 +3084,7 @@ class TableauSiteSource:
|
|
|
3059
3084
|
query_filter=sheets_filter,
|
|
3060
3085
|
page_size=self.config.effective_sheet_page_size,
|
|
3061
3086
|
):
|
|
3062
|
-
if self.
|
|
3087
|
+
if self._should_ingest_worksheet(sheet):
|
|
3063
3088
|
yield from self.emit_sheets_as_charts(sheet, sheet.get(c.WORKBOOK))
|
|
3064
3089
|
else:
|
|
3065
3090
|
self.report.num_hidden_assets_skipped += 1
|
|
@@ -3380,7 +3405,7 @@ class TableauSiteSource:
|
|
|
3380
3405
|
query_filter=dashboards_filter,
|
|
3381
3406
|
page_size=self.config.effective_dashboard_page_size,
|
|
3382
3407
|
):
|
|
3383
|
-
if self.
|
|
3408
|
+
if self._should_ingest_dashboard(dashboard):
|
|
3384
3409
|
yield from self.emit_dashboard(dashboard, dashboard.get(c.WORKBOOK))
|
|
3385
3410
|
else:
|
|
3386
3411
|
self.report.num_hidden_assets_skipped += 1
|