in genai-for-marketing/installation_scripts/aux_data/bq_tag_generation.py [0:0]
def tag_bq_columns(
PROJECT_ID: str,
TAG_TEMPLATE_PATH: str,
TAG_TEMPLATE_ID: str,
DATASET_ID: str,
table_id: str,
column_id: str,
values: List):
# Lookup Data Catalog's Entry referring to the table.
resource_name = (
f"//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{table_id}"
)
table_entry = datacatalog_client.lookup_entry(
request={"linked_resource": resource_name}
)
# Attach a Tag to the table.
tag = datacatalog_v1.types.Tag()
tag.template = TAG_TEMPLATE_PATH
tag.name = "talktodata tag"
tag.fields["description"] = datacatalog_v1.types.TagField()
tag.fields["description"].string_value = values[0]
tag.fields["is_primary_key"] = datacatalog_v1.types.TagField()
tag.fields["is_primary_key"].bool_value = values[1]
tag.fields["is_foreign_key"] = datacatalog_v1.types.TagField()
tag.fields["is_foreign_key"].bool_value = values[2]
tag.fields["data_type"] = datacatalog_v1.types.TagField()
tag.fields["data_type"].string_value = values[3]
tag.column = column_id
try:
tag = datacatalog_client.create_tag(parent=table_entry.name, tag=tag)
print('tag created/updated for {}'.format(column_id))
except Exception as e:
print(e)
print(
'Failed to create template {} for {}.{}.{}.{}'.format(
TAG_TEMPLATE_ID,
DATASET_ID,
DATASET_ID,
table_id,
column_id)
)