def create_tag_template(self, project_id, template_id, display_name, fields_descriptors, enums_names=None): """Create a Tag Template.""" location = datacatalog.DataCatalogClient.location_path( project_id, _CLOUD_PLATFORM_REGION) tag_template = types.TagTemplate() tag_template.display_name = display_name for descriptor in fields_descriptors: field_id = descriptor[0] field_type = descriptor[2] tag_template.fields[field_id].display_name = descriptor[1] if not field_type == _DATA_CATALOG_ENUM_TYPE: tag_template.fields[field_id].type.primitive_type = \ enums.FieldType.PrimitiveType[field_type] else: for enum_name in enums_names[field_id]: fields = tag_template.fields fields[field_id].type.enum_type.allowed_values.add( ).display_name = enum_name created_tag_template = self.__datacatalog.create_tag_template( parent=location, tag_template_id=template_id, tag_template=tag_template) logging.info(f'===> Template created: {created_tag_template.name}')
def __create_tag_template(cls): template = types.TagTemplate() tag_template_id = 'template' template.name = 'template name' template.display_name = 'template display name' template.fields['bool-field'].type.primitive_type = cls.__BOOL_TYPE template.fields['bool-field'].display_name = 'Bool Field' template.fields['double-field'].type.primitive_type = cls.__DOUBLE_TYPE template.fields['double-field'].display_name = 'Double Field' template.fields['string-field'].type.primitive_type = cls.__STRING_TYPE template.fields['string-field'].display_name = 'String Field' template.fields['timestamp-field'].type.primitive_type = \ cls.__TIMESTAMP_TYPE template.fields['timestamp-field'].display_name = 'Timestamp Field' template.fields['enum-field'].type.enum_type.allowed_values \ .add().display_name = 'Test ENUM Value' return tag_template_id, template
def make_fake_tag_template(): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['bool_field'].type.primitive_type = enums.FieldType.PrimitiveType.BOOL tag_template.fields['string_field'].type.primitive_type = enums.FieldType.PrimitiveType.STRING return tag_template
def test_make_tag_should_set_column(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, {}, 'test_column') self.assertEqual('test_column', tag.column)
def test_make_tag_should_set_column(self): tag_template = types.TagTemplate() tag_template.name = 'test-template' tag = DataCatalogEntityFactory.make_tag(tag_template, None, 'test-column') self.assertEqual('test-column', tag.column)
def make_tag_template_for_folder(self): tag_template = types.TagTemplate() tag_template.name = datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=constant.TAG_TEMPLATE_ID_FOLDER) tag_template.display_name = 'Looker Folder Metadata' tag_template.fields['id'].type.primitive_type = self.__STRING_TYPE tag_template.fields['id'].display_name = 'Unique Id' tag_template.fields['name'].type.primitive_type = self.__STRING_TYPE tag_template.fields['name'].display_name = 'Unique Name' tag_template.fields['has_children'].type.primitive_type = \ self.__BOOL_TYPE tag_template.fields['has_children'].display_name = 'Has children' tag_template.fields['children_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['children_count'].display_name = 'Children count' tag_template.fields['parent_id'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['parent_id'].display_name = 'Id of Parent' tag_template.fields[ 'parent_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['parent_entry'].display_name = \ 'Data Catalog Entry for the parent Folder' tag_template.fields['has_dashboards'].type.primitive_type = \ self.__BOOL_TYPE tag_template.fields['has_dashboards'].display_name = 'Has dashboards' tag_template.fields['dashboards_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['dashboards_count'].display_name = \ 'Dashboards count' tag_template.fields['has_looks'].type.primitive_type = self.__BOOL_TYPE tag_template.fields['has_looks'].display_name = 'Has looks' tag_template.fields['looks_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['looks_count'].display_name = 'Looks count' tag_template.fields['instance_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['instance_url'].display_name = \ 'Looker Instance Url' return tag_template
def test_make_tag_valid_string_value_should_set_field(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['test_string_field'].type.primitive_type = self.__STRING_TYPE tag_fields = {'test_string_field': 'Test String Value'} tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, tag_fields) self.assertEqual('Test String Value', tag.fields['test_string_field'].string_value)
def test_make_tag_valid_enum_value_should_set_field(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['test_enum_field'].type.enum_type.allowed_values.add().display_name = \ 'VALUE_1' tag_fields = {'test_enum_field': 'VALUE_1'} tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, tag_fields) self.assertEqual('VALUE_1', tag.fields['test_enum_field'].enum_value.display_name)
def test_make_tag_should_ignore_invalid_field(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['test_bool_field'].type.primitive_type = self.__BOOL_TYPE tag_fields = {'test_bool_field_invalid': True} tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, tag_fields) self.assertFalse('test_bool_field' in tag.fields) self.assertFalse('test_bool_field_invalid' in tag.fields)
def test_make_tag_valid_double_values_should_set_fields(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['test_double_field'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['test_double_field_str'].type.primitive_type = self.__DOUBLE_TYPE tag_fields = {'test_double_field': 2.5, 'test_double_field_str': '3.1415'} tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, tag_fields) self.assertEqual(2.5, tag.fields['test_double_field'].double_value) self.assertEqual(3.1415, tag.fields['test_double_field_str'].double_value)
def __create_entity_type_tag_template(self, entity_type_dict, entity_types_dict, enum_types_dict): tag_template = types.TagTemplate() entity_type_data = entity_type_dict['data'] name = entity_type_data['name'] formatted_name = attr_normalizer.DataCatalogAttributeNormalizer.\ format_name(name) version = entity_type_data.get('version') tag_template_id = attr_normalizer.DataCatalogAttributeNormalizer.\ create_tag_template_id(formatted_name, constant.ENTITY_TYPE_PREFIX, version) tag_template.name = self.get_tag_template_path(tag_template_id) tag_template.display_name = 'Type - {}'.format(name) entity_super_types = entity_type_dict.get('superTypes') attribute_defs = entity_type_data['attributeDefs'] if entity_super_types: self.__add_fields_from_super_types(tag_template, entity_super_types, entity_types_dict, enum_types_dict) self.__add_fields_from_attribute_defs(tag_template, attribute_defs, enum_types_dict) tag_template.fields[ formatted_name].type.primitive_type = self.__BOOL_TYPE tag_template.fields[formatted_name].display_name = formatted_name tag_template.fields[ constant.ENTITY_GUID].type.primitive_type = self.__STRING_TYPE tag_template.fields[constant.ENTITY_GUID].display_name = 'entity guid' tag_template.fields[ constant. INSTANCE_URL_FIELD].type.primitive_type = self.__STRING_TYPE tag_template.fields[ constant.INSTANCE_URL_FIELD].display_name = 'instance url' self.__create_custom_fields_for_entity_type(tag_template, entity_type_data) return {tag_template_id: tag_template}
def make_tag_template_for_workbook(self): tag_template_id = constant.TAG_TEMPLATE_WORKBOOK_ID tag_template = types.TagTemplate() tag_template.name = \ datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=tag_template_id) tag_template.display_name = 'Tableau Workbook Metadata' tag_template.fields['luid'].type.primitive_type = self.__STRING_TYPE tag_template.fields['luid'].display_name = \ 'Unique identifier for the REST API' tag_template.fields['site_name'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['site_name'].display_name = \ 'Site name' tag_template.fields['project_name'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['project_name'].display_name = \ 'Project name' tag_template.fields['owner_username'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['owner_username'].display_name = \ 'Owner username' tag_template.fields['owner_name'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['owner_name'].display_name = \ 'Owner name' tag_template.fields['upstream_table_definition']\ .type.primitive_type = self.__STRING_TYPE tag_template.fields['upstream_table_definition'].display_name = \ 'upstream_tables values meaning' tag_template.fields['upstream_tables'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['upstream_tables'].display_name = \ 'Tables used by the workbook' return tag_template_id, tag_template
def make_tag_template_for_sheet(self): tag_template_id = constant.TAG_TEMPLATE_SHEET_ID tag_template = types.TagTemplate() tag_template.name = \ datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=tag_template_id) tag_template.display_name = 'Tableau Sheet Metadata' tag_template.fields['id'].type.primitive_type = self.__STRING_TYPE tag_template.fields['id'].display_name = \ 'Unique identifier for the Metadata API' tag_template.fields['luid'].type.primitive_type = self.__STRING_TYPE tag_template.fields['luid'].display_name = \ 'Unique identifier for the REST API' tag_template.fields['workbook_luid'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['workbook_luid'].display_name = \ 'Workbook identifier for the REST API' tag_template.fields['workbook_name'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['workbook_name'].display_name = \ 'Workbook name' tag_template.fields[ 'workbook_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['workbook_entry'].display_name = \ 'Data Catalog Entry for the Workbook' tag_template.fields['site_name'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['site_name'].display_name = \ 'Site name' tag_template.fields['has_external_url'].type.primitive_type = \ self.__BOOL_TYPE tag_template.fields['has_external_url'].display_name = \ 'Has external URL' return tag_template_id, tag_template
def create_tag_template(self, project_id, template_id, display_name, primitive_fields_descriptors): """Create a Tag Template.""" location = self.__datacatalog.location_path(project_id, 'us-central1') tag_template = types.TagTemplate() tag_template.display_name = display_name for descriptor in primitive_fields_descriptors: tag_template.fields[descriptor['id']].type.primitive_type = \ descriptor['primitive_type'] tag_template.fields[ descriptor['id']].display_name = descriptor['display_name'] return self.__datacatalog.create_tag_template( parent=location, tag_template_id=template_id, tag_template=tag_template)
def test_make_tag_valid_boolean_values_should_set_fields(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['test_bool_field'].type.primitive_type = self.__BOOL_TYPE tag_template.fields['test_bool_field_int'].type.primitive_type = self.__BOOL_TYPE tag_template.fields['test_bool_field_str'].type.primitive_type = self.__BOOL_TYPE tag_fields = { 'test_bool_field': True, 'test_bool_field_int': 1, 'test_bool_field_str': 'T' } tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, tag_fields) self.assertTrue(tag.fields['test_bool_field'].bool_value) self.assertTrue(tag.fields['test_bool_field_int'].bool_value) self.assertTrue(tag.fields['test_bool_field_str'].bool_value)
def make_column_tag_template(self): tag_template = types.TagTemplate() tag_template_id = attr_normalizer.DataCatalogAttributeNormalizer.\ create_tag_template_id( 'ref', constant.COLUMN_PREFIX) tag_template.name = self.get_tag_template_path(tag_template_id) tag_template.display_name = 'Column' tag_template.fields[ 'column_guid'].type.primitive_type = self.__STRING_TYPE tag_template.fields['column_guid'].display_name = 'column guid' tag_template.fields[ 'column_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields[ 'column_entry'].display_name = 'column data catalog entry' return {tag_template_id: tag_template}
def test_make_tag_valid_timestamp_values_should_set_fields(self): tag_template = types.TagTemplate() tag_template.name = 'test_template' tag_template.fields['test_timestamp_field'].type.primitive_type = self.__TIMESTAMP_TYPE tag_template.fields['test_timestamp_field_str'].type.primitive_type = self.__TIMESTAMP_TYPE test_datetime = datetime.strptime('2019-10-15T21:30:00-0300', '%Y-%m-%dT%H:%M:%S%z') tag_fields = { 'test_timestamp_field': test_datetime, 'test_timestamp_field_str': '2019-10-15T21:30:00-0300' } tag = datacatalog_entity_factory.DataCatalogEntityFactory.make_tag( tag_template, tag_fields) self.assertEqual(test_datetime.timestamp(), tag.fields['test_timestamp_field'].timestamp_value.seconds) self.assertEqual(test_datetime.timestamp(), tag.fields['test_timestamp_field_str'].timestamp_value.seconds)
def datacatalog_tag_template(): location = datacatalog.DataCatalogClient.location_path( TEST_PROJECT_ID, 'us-central1') # Delete a Tag Template with the same name if it already exists. try: name = datacatalog.DataCatalogClient.tag_template_path( TEST_PROJECT_ID, 'us-central1', f'{__generate_uuid()}_quickstart_test_tag_template') datacatalog_client.delete_tag_template(name=name, force=True) except exceptions.PermissionDenied: pass template = types.TagTemplate() template.fields[ 'boolean_field'].type.primitive_type = enums.FieldType.PrimitiveType.BOOL template.fields[ 'double_field'].type.primitive_type = enums.FieldType.PrimitiveType.DOUBLE template.fields[ 'string_field'].type.primitive_type = enums.FieldType.PrimitiveType.STRING template.fields['timestamp_field'].type.primitive_type = \ enums.FieldType.PrimitiveType.TIMESTAMP template.fields['enum_field'].type.enum_type.allowed_values.add( ).display_name = 'VALUE 1' template.fields['enum_field'].type.enum_type.allowed_values.add( ).display_name = 'VALUE 2' tag_template = datacatalog_client.create_tag_template( parent=location, tag_template_id='quickstart_test_tag_template', tag_template=template) time.sleep( 2) # Wait a few seconds for Data Catalog's search index sync/update. yield tag_template datacatalog_client.delete_tag_template(tag_template.name, force=True) time.sleep( 2) # Wait a few seconds for Data Catalog's search index sync/update.
def __create_classification_tag_template(self, classification_dict, classifications_dict, enum_types_dict): tag_template = types.TagTemplate() classification_data = classification_dict['data'] name = classification_data['name'] formatted_name = attr_normalizer.DataCatalogAttributeNormalizer.\ format_name(name) version = classification_data.get('version') tag_template_id = attr_normalizer.DataCatalogAttributeNormalizer.\ create_tag_template_id(formatted_name, constant.CLASSIFICATION_PREFIX, version) tag_template.name = self.get_tag_template_path(tag_template_id) tag_template.display_name = '{}'.format(name) classification_data = classification_dict['data'] classification_super_types = classification_data.get('superTypes') attribute_defs = classification_data['attributeDefs'] if classification_super_types: self.__add_fields_from_super_types(tag_template, classification_super_types, classifications_dict, enum_types_dict) self.__add_fields_from_attribute_defs(tag_template, attribute_defs, enum_types_dict) tag_template.fields[ formatted_name].type.primitive_type = self.__BOOL_TYPE tag_template.fields[formatted_name].display_name = formatted_name return {tag_template_id: tag_template}
def create_template(key_file, project_id, region, yaml_file): datacatalog_client = DataCatalogClient.from_service_account_file(key_file) location = DataCatalogClient.location_path(project_id, region) template_instance = types.TagTemplate() with open(yaml_file) as file: file_contents = yaml.full_load(file) template_contents = file_contents.get("template")[0] for k, v in template_contents.items(): print(k + "->" + str(v)) if k == 'name': template_id = v if k == 'display_name': template_instance.display_name = v if k == 'fields': fields = v for field in fields: field_name = None datatype = None enum_values = None display_name = None required = False for fname, fval in field.items(): print(fname + "->" + str(fval)) if fname == "field": field = fval if fname == "type": datatype = fval if fname == "values": enum_values = fval if fname == "display": display = fval if fname == "required": required = fval if datatype.lower() == "enum": enum_list = enum_values.split("|") for enum_value in enum_list: template_instance.fields[ field].type.enum_type.allowed_values.add( ).display_name = enum_value template_instance.fields[ field].display_name = display template_instance.fields[ field].is_required = required elif datatype.lower() == "bool": template_instance.fields[ field].type.primitive_type = enums.FieldType.PrimitiveType.BOOL template_instance.fields[field].display_name = display template_instance.fields[field].is_required = required elif datatype.lower() == "string": template_instance.fields[ field].type.primitive_type = enums.FieldType.PrimitiveType.STRING template_instance.fields[field].display_name = display template_instance.fields[field].is_required = required elif datatype.lower() == "double": template_instance.fields[ field].type.primitive_type = enums.FieldType.PrimitiveType.DOUBLE template_instance.fields[field].display_name = display template_instance.fields[field].is_required = required elif datatype.lower() == "timestamp": template_instance.fields[ field].type.primitive_type = enums.FieldType.PrimitiveType.TIMESTAMP template_instance.fields[field].display_name = display template_instance.fields[field].is_required = required datacatalog_client.create_tag_template(parent=location, tag_template_id=template_id, tag_template=template_instance)
def make_tag_template_for_query(self): tag_template = types.TagTemplate() tag_template.name = datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=constant.TAG_TEMPLATE_ID_QUERY) tag_template.display_name = 'Looker Query Metadata' tag_template.fields['id'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['id'].display_name = 'Unique Id' tag_template.fields['fields'].type.primitive_type = self.__STRING_TYPE tag_template.fields['fields'].display_name = 'Fields' tag_template.fields['pivots'].type.primitive_type = self.__STRING_TYPE tag_template.fields['pivots'].display_name = 'Pivots' tag_template.fields['sorts'].type.primitive_type = self.__STRING_TYPE tag_template.fields['sorts'].display_name = 'Sorting for the results' tag_template.fields['runtime'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['runtime'].display_name = 'Runtime' tag_template.fields['client_id'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['client_id'].display_name = 'Id for explore URLs' tag_template.fields['query_timezone'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['query_timezone'].display_name = 'Query Timezone' tag_template.fields['lookml_model'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['lookml_model'].display_name = 'LookML Model name' tag_template.fields['explore_name'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['explore_name'].display_name = 'Explore name' tag_template.fields['sql'].type.primitive_type = self.__STRING_TYPE tag_template.fields['sql'].display_name = 'Generated SQL' tag_template.fields['lookml_project'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['lookml_project'].display_name = 'LookML Project' tag_template.fields['connection'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['connection'].display_name = 'Connection name' tag_template.fields['host'].type.primitive_type = self.__STRING_TYPE tag_template.fields['host'].display_name = 'Server hostname or address' tag_template.fields['database'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['database'].display_name = 'Database name' tag_template.fields['connection_dialect'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['connection_dialect'].display_name = \ 'SQL Dialect name' tag_template.fields['connection_username'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['connection_username'].display_name = \ 'Username for server authentication' tag_template.fields['instance_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['instance_url'].display_name = \ 'Looker Instance Url' return tag_template
def make_tag_template_for_dashboard(self): tag_template = types.TagTemplate() tag_template.name = datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=constant.TAG_TEMPLATE_ID_DASHBOARD) tag_template.display_name = 'Looker Dashboard Metadata' tag_template.fields['id'].type.primitive_type = self.__STRING_TYPE tag_template.fields['id'].display_name = 'Unique Id' tag_template.fields['description'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['description'].display_name = 'Description' tag_template.fields['folder_id'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['folder_id'].display_name = 'Folder Id' tag_template.fields[ 'folder_name'].type.primitive_type = self.__STRING_TYPE tag_template.fields['folder_name'].display_name = 'Folder Name' tag_template.fields[ 'folder_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['folder_entry'].display_name = \ 'Data Catalog Entry for the Folder' tag_template.fields['is_hidden'].type.primitive_type = self.__BOOL_TYPE tag_template.fields['is_hidden'].display_name = 'Is hidden' tag_template.fields['user_id'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['user_id'].display_name = 'Id of User' tag_template.fields['view_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['view_count'].display_name = \ 'Number of views in the web UI' tag_template.fields['favorite_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['favorite_count'].display_name = \ 'Number of times favorited' tag_template.fields['last_accessed_at'].type.primitive_type = \ self.__TIMESTAMP_TYPE tag_template.fields['last_accessed_at'].display_name = \ 'Time it was last accessed' tag_template.fields['last_viewed_at'].type.primitive_type = \ self.__TIMESTAMP_TYPE tag_template.fields['last_viewed_at'].display_name = \ 'Time last viewed in the web UI' tag_template.fields['is_deleted'].type.primitive_type = \ self.__BOOL_TYPE tag_template.fields['is_deleted'].display_name = 'Is soft deleted' tag_template.fields['deleted_at'].type.primitive_type = \ self.__TIMESTAMP_TYPE tag_template.fields['deleted_at'].display_name = \ 'Time it was soft deleted' tag_template.fields['deleter_id'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['deleter_id'].display_name = \ 'Id of User that soft deleted it' tag_template.fields['instance_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['instance_url'].display_name = \ 'Looker Instance Url' return tag_template
def make_tag_template_for_look(self): tag_template = types.TagTemplate() tag_template.name = datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=constant.TAG_TEMPLATE_ID_LOOK) tag_template.display_name = 'Looker Look Metadata' tag_template.fields['id'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['id'].display_name = 'Unique Id' tag_template.fields['description'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['description'].display_name = 'Description' tag_template.fields['folder_id'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['folder_id'].display_name = 'Folder Id' tag_template.fields[ 'folder_name'].type.primitive_type = self.__STRING_TYPE tag_template.fields['folder_name'].display_name = 'Folder Name' tag_template.fields[ 'folder_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['folder_entry'].display_name = \ 'Data Catalog Entry for the Folder' tag_template.fields['is_public'].type.primitive_type = self.__BOOL_TYPE tag_template.fields['is_public'].display_name = 'Is public' tag_template.fields['user_id'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['user_id'].display_name = 'Id of User' tag_template.fields['last_updater_id'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['last_updater_id'].display_name = \ 'Id of User that last updated it' tag_template.fields['query_id'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['query_id'].display_name = 'Query Id' tag_template.fields[ 'query_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['query_entry'].display_name = \ 'Data Catalog Entry for the Query' tag_template.fields['url'].type.primitive_type = self.__STRING_TYPE tag_template.fields['url'].display_name = 'Url' tag_template.fields['short_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['short_url'].display_name = 'Short Url' tag_template.fields['public_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['public_url'].display_name = 'Public Url' tag_template.fields['excel_file_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['excel_file_url'].display_name = 'Excel File Url' tag_template.fields['google_spreadsheet_formula']\ .type.primitive_type = self.__STRING_TYPE tag_template.fields['google_spreadsheet_formula'].display_name = \ 'Google Spreadsheet Formula' tag_template.fields['view_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['view_count'].display_name = \ 'Number of views in the web UI' tag_template.fields['favorite_count'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['favorite_count'].display_name = \ 'Number of times favorited' tag_template.fields['last_accessed_at'].type.primitive_type = \ self.__TIMESTAMP_TYPE tag_template.fields['last_accessed_at'].display_name = \ 'Time it was last accessed' tag_template.fields['last_viewed_at'].type.primitive_type = \ self.__TIMESTAMP_TYPE tag_template.fields['last_viewed_at'].display_name = \ 'Time last viewed in the web UI' tag_template.fields['is_deleted'].type.primitive_type = \ self.__BOOL_TYPE tag_template.fields['is_deleted'].display_name = 'Is soft deleted' tag_template.fields['deleted_at'].type.primitive_type = \ self.__TIMESTAMP_TYPE tag_template.fields['deleted_at'].display_name = \ 'Time it was soft deleted' tag_template.fields['deleter_id'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['deleter_id'].display_name = \ 'Id of User that soft deleted it' tag_template.fields['instance_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['instance_url'].display_name = \ 'Looker Instance Url' return tag_template
def make_tag_template_for_dashboard_element(self): tag_template = types.TagTemplate() tag_template.name = datacatalog.DataCatalogClient.tag_template_path( project=self.__project_id, location=self.__location_id, tag_template=constant.TAG_TEMPLATE_ID_DASHBOARD_ELEMENT) tag_template.display_name = 'Looker Dashboard Element Metadata' tag_template.fields['id'].type.primitive_type = self.__STRING_TYPE tag_template.fields['id'].display_name = 'Unique Id' tag_template.fields['type'].type.primitive_type = self.__STRING_TYPE tag_template.fields['type'].display_name = 'Type' tag_template.fields['dashboard_id'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['dashboard_id'].display_name = 'Id of Dashboard' tag_template.fields['dashboard_title'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['dashboard_title'].display_name = \ 'Title of Dashboard' tag_template.fields[ 'dashboard_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['dashboard_entry'].display_name = \ 'Data Catalog Entry for the Dashboard' tag_template.fields['look_id'].type.primitive_type = self.__DOUBLE_TYPE tag_template.fields['look_id'].display_name = 'Id Of Look' tag_template.fields['look_title'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['look_title'].display_name = 'Title Of Look' tag_template.fields[ 'look_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['look_entry'].display_name = \ 'Data Catalog Entry for the Look' tag_template.fields['lookml_link_id'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['lookml_link_id'].display_name = 'LookML link ID' tag_template.fields['query_id'].type.primitive_type = \ self.__DOUBLE_TYPE tag_template.fields['query_id'].display_name = 'Id Of Query' tag_template.fields[ 'query_entry'].type.primitive_type = self.__STRING_TYPE tag_template.fields['query_entry'].display_name = \ 'Data Catalog Entry for the Query' tag_template.fields['instance_url'].type.primitive_type = \ self.__STRING_TYPE tag_template.fields['instance_url'].display_name = \ 'Looker Instance Url' return tag_template