acryl-datahub 1.0.0.3rc2__py3-none-any.whl → 1.0.0.3rc4__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.

@@ -1,7 +1,7 @@
1
- acryl_datahub-1.0.0.3rc2.dist-info/licenses/LICENSE,sha256=9xNHpsD0uYF5ONzXsKDCuHHB-xbiCrSbueWXqrTNsxk,11365
1
+ acryl_datahub-1.0.0.3rc4.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=wKoNLhdfRXZqqQqju-C7yvPFz3YKQceonahT8wrZq6Y,323
4
+ datahub/_version.py,sha256=911KmAC1s4iZRnTeHRY8SXqgCBef_UX6nB2GAa1FqkE,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=Vi6u9snSiacDlq2iofHiUGlsVl9_uqEJBACrVfT3Zts,7698
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=tAxdxy8djDKD2THKIYEAsNi1Ly_eRpmBjT6fASCnUqg,7944
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=-74g3vIuecTuXsNBgspOSEfnpO-NqT-yg-ZqkL6OgP0,29692
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=UZca0ZQUQdoXr5Z-3AIUT9gIlPt-XwbMNjj7WEEiR_4,3107
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=xpZXt4f05-sroWFv9SbzVhU1-iBeVfU1ocJKb-fy3aM,6333
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=tBDyDAAFnFS1pag_cK1hjE73qpFRcZK-BVphBJ5r_Gs,154109
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=ipq2Zb2lXTZkUg9r78kvuIIhX7mc-5hr-o83395IWpo,43589
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=fE2l_xXvKONqb4jabl4LtKRBZDnP3koMLJV520wEAMg,2555
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=n8NwTeBKsnQdtNCMG85LDc6mPgDT5JGUbsgg9KcNj18,1012635
597
- datahub/metadata/schema.avsc,sha256=ckv1TFKtvz0eGTSqL2qijL4eqfTuQYMIj91pO0vbc2M,753114
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=Oceu7P26--E0812IFrX3RiEY0Ktam869iiYN30zBudc,481
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
@@ -1046,8 +1046,8 @@ datahub_provider/operators/datahub_assertion_operator.py,sha256=uvTQ-jk2F0sbqqxp
1046
1046
  datahub_provider/operators/datahub_assertion_sensor.py,sha256=lCBj_3x1cf5GMNpHdfkpHuyHfVxsm6ff5x2Z5iizcAo,140
1047
1047
  datahub_provider/operators/datahub_operation_operator.py,sha256=aevDp2FzX7FxGlXrR0khoHNbxbhKR2qPEX5e8O2Jyzw,174
1048
1048
  datahub_provider/operators/datahub_operation_sensor.py,sha256=8fcdVBCEPgqy1etTXgLoiHoJrRt_nzFZQMdSzHqSG7M,168
1049
- acryl_datahub-1.0.0.3rc2.dist-info/METADATA,sha256=Iez_7GLl0EEt7MEDlMXlVb-A_-YB-RO4IZJRWSwuLjI,176855
1050
- acryl_datahub-1.0.0.3rc2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1051
- acryl_datahub-1.0.0.3rc2.dist-info/entry_points.txt,sha256=o3mDeJXSKhsy7XLkuogihraiabBdLn9HaizYXPrxmk0,9710
1052
- acryl_datahub-1.0.0.3rc2.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1053
- acryl_datahub-1.0.0.3rc2.dist-info/RECORD,,
1049
+ acryl_datahub-1.0.0.3rc4.dist-info/METADATA,sha256=66uBY8gH_YmKeBmwbECGBpJhT7JiyrJXfFJv5wcFgQQ,176965
1050
+ acryl_datahub-1.0.0.3rc4.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1051
+ acryl_datahub-1.0.0.3rc4.dist-info/entry_points.txt,sha256=o3mDeJXSKhsy7XLkuogihraiabBdLn9HaizYXPrxmk0,9710
1052
+ acryl_datahub-1.0.0.3rc4.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1053
+ acryl_datahub-1.0.0.3rc4.dist-info/RECORD,,
datahub/_version.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Published at https://pypi.org/project/acryl-datahub/.
2
2
  __package_name__ = "acryl-datahub"
3
- __version__ = "1.0.0.3rc2"
3
+ __version__ = "1.0.0.3rc4"
4
4
 
5
5
 
6
6
  def is_dev_mode() -> bool:
@@ -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
- # TODO: add support for properties
51
- # properties: Optional[Dict[str, str]] = None
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, materialize_iolets: bool = True
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
- yield from self.generate_data_input_output_mcp(
156
- materialize_iolets=materialize_iolets
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("Sink reported errors", self.sink.get_report())
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:
@@ -113,3 +113,6 @@ class MLAssetSubTypes(StrEnum):
113
113
  VERTEX_ENDPOINT = "Endpoint"
114
114
  VERTEX_DATASET = "Dataset"
115
115
  VERTEX_PROJECT = "Project"
116
+ VERTEX_PIPELINE = "Pipeline Job"
117
+ VERTEX_PIPELINE_TASK = "Pipeline Task"
118
+ VERTEX_PIPELINE_TASK_RUN = "Pipeline Task Run"
@@ -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: LossyDict[str, WorkspaceCounts] = Field(
85
- default_factory=LossyDict,
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
- True,
617
- description="When enabled, hidden views and dashboards are ingested into Datahub. "
618
- "If a dashboard or view is hidden in Tableau the luid is blank. Default of this config field is True.",
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.config.ingest_hidden_assets or not self._is_hidden_view(sheet):
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.config.ingest_hidden_assets or not self._is_hidden_view(dashboard):
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