-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(ingest/lookml): ingest field tags #10792
Changes from all commits
27dbba4
36c688a
c28e4f2
b463ded
094ad86
954e544
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -244,6 +244,7 @@ class ViewField: | |||||||||||||||||||||||||||||||||||||||||||||||||||||
view_name: Optional[str] = None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
is_primary_key: bool = False | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
upstream_fields: List[str] = dataclasses_field(default_factory=list) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tags: List[str] = dataclasses_field(default_factory=list) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
@dataclass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -561,21 +562,30 @@ def _get_tag_mce_for_urn(tag_urn: str) -> MetadataChangeEvent: | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
@staticmethod | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
def _get_tags_from_field_type( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
field_type: ViewFieldType, reporter: SourceReport | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
field: ViewField, reporter: SourceReport | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
) -> Optional[GlobalTagsClass]: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
if field_type in LookerUtil.type_to_tag_map: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
return GlobalTagsClass( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tags=[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
schema_field_tags: List[TagAssociationClass] = [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
TagAssociationClass(tag=builder.make_tag_urn(tag_name)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
for tag_name in field.tags | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
if field.field_type in LookerUtil.type_to_tag_map: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
schema_field_tags.extend( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
TagAssociationClass(tag=tag_name) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
for tag_name in LookerUtil.type_to_tag_map[field_type] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
for tag_name in LookerUtil.type_to_tag_map[field.field_type] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
reporter.report_warning( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
"lookml", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
f"Failed to map view field type {field_type}. Won't emit tags for it", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
f"Failed to map view field type {field.field_type}. Won't emit tags for measure and dimension", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
return None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
if schema_field_tags: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
return GlobalTagsClass(tags=schema_field_tags) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
return None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
@staticmethod | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
def get_tag_mces() -> Iterable[MetadataChangeEvent]: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -602,7 +612,7 @@ def view_field_to_schema_field( | |||||||||||||||||||||||||||||||||||||||||||||||||||||
else f"{field.field_type.value}. {field.description}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
globalTags=( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
LookerUtil._get_tags_from_field_type(field.field_type, reporter) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
LookerUtil._get_tags_from_field_type(field, reporter) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve readability with ternary operators. Use ternary operators to improve readability for the @staticmethod
def view_field_to_schema_field(
field: ViewField,
reporter: SourceReport,
tag_measures_and_dimensions: bool = True,
) -> SchemaField:
return SchemaField(
fieldPath=field.name,
type=LookerUtil._get_field_type(field.type, reporter),
nativeDataType=field.type,
label=field.label,
description=(
field.description
if tag_measures_and_dimensions
else f"{field.field_type.value}. {field.description}"
),
globalTags=(
LookerUtil._get_tags_from_field_type(field, reporter)
if tag_measures_and_dimensions
else None
),
isPartOfKey=field.is_primary_key,
) Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
if tag_measures_and_dimensions is True | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
else None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Simplify tag extraction logic.
The tag extraction logic can be simplified by combining the user-defined and predefined tags in a single list comprehension.
Committable suggestion