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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #11
0
    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
Beispiel #14
0
    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)
Beispiel #16
0
    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.
Beispiel #19
0
    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}
Beispiel #20
0
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)
Beispiel #21
0
    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
Beispiel #22
0
    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
Beispiel #23
0
    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
Beispiel #24
0
    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