테이블 태그하기 빠른 시작

이 빠른 시작에서는 다음을 수행합니다.

  1. BigQuery 데이터세트를 만든 다음 데이터세트의 새 테이블에 공개 택시 데이터를 복사합니다.
  2. 고유한 유형의 네 가지 태그 속성(string, double, boolean, enumerated)을 정의하는 스키마로 태그 템플릿을 만듭니다.
  3. 테이블의 Data Catalog 항목을 찾습니다.
  4. 태그를 테이블에 첨부합니다.

시작하기 전에

  1. 프로젝트 설정:

    1. Google 계정으로 로그인합니다.

      아직 계정이 없으면 새 계정을 등록하세요.

    2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

      프로젝트 선택기 페이지로 이동

    3. Data Catalog and BigQuery API를 사용 설정합니다.

      API 사용 설정

    4. Cloud SDK 설치 및 초기화

  2. 데이터세트를 만듭니다. 이 빠른 시작에서 설명한 대로 태그를 데이터세트의 테이블에 첨부하려면 데이터세트 소유자여야 합니다.

    1. Google Cloud Console에서 BigQuery로 이동합니다.
    2. 왼쪽 탐색 창에서 프로젝트 이름을 클릭한 다음 데이터세트 만들기를 클릭합니다.
    3. 데이터세트 만들기 대화상자에서 다음을 수행합니다.
      • 데이터세트 ID에 'demo_dataset'을 입력합니다.
      • 데이터 위치에 데이터세트 위치를 US multi-region로 설정하는 기본 위치를 허용합니다.
      • 기본 테이블 만료에서 다음 옵션 중 하나를 선택합니다.
        • 사용 안 함: (기본값) 데이터세트에 생성된 테이블이 자동으로 삭제되지 않습니다. 수동으로 삭제해야 합니다.
        • 테이블 생성 후 경과 일수: 데이터세트에 생성된 모든 테이블은 생성일로부터 지정된 일수 후에 삭제됩니다. 테이블이 생성될 때 테이블 만료를 설정하지 않으면 이 값이 적용됩니다. 데이터세트 만들기
      • 데이터세트 만들기를 클릭합니다. 참고: Google Cloud Console을 사용하여 데이터세트를 만들 때는 설명이나 라벨을 추가할 수 없습니다. 데이터세트를 만든 후에 설명을 추가하고 라벨을 추가할 수 있습니다.
  3. 공개 뉴욕 택시 테이블을 demo_dataset에 복사합니다.

    1. Google Cloud Console의 BigQuery에서 'bigquery-public-data' 프로젝트의 'new_york_taxi_trips' 데이터세트를 선택한 다음 'tlc_yellow_trips' 테이블 중 하나를 선택합니다(예: tlc_yellow_trips_2017). 테이블 복사를 클릭하여 테이블 세부정보:여행 패널을 엽니다.
    2. 복사 테이블 대화상자의 '대상' 섹션에서 프로젝트와 'demo_dataset'를 선택합니다. 테이블 이름에 'trips'를 입력하고 복사를 클릭하세요.
    3. demo_dataset에 trips 테이블이 나열되는지 확인합니다.
      다음 섹션에서 테이블에 Data Catalog 태그를 추가합니다.

태그 템플릿을 만들고 테이블에 태그를 첨부합니다.

Console

Google Cloud Console의 Data Catalog UI에서 태그 템플릿을 만들 수 있습니다.

  1. '태그 템플릿 만들기'를 선택하여 템플릿 만들기 페이지를 엽니다. 템플릿 양식을 작성하여 '데모 태그 템플릿'을 정의합니다.
    1. 템플릿 ID: demo_tag_template
    2. 템플릿 표시 이름: Demo Tag Template
    3. 프로젝트 프로젝트를 선택합니다.
  2. 그리고 4개의 태그 속성(태그 '필드'라고도 함)을 만듭니다. '속성 추가'를 클릭하여 새 속성 대화상자를 엽니다. 아래에 나열된 값으로 4개의 속성을 만듭니다. '소스' 속성은 필수 태그 속성을 정의합니다.
      • 속성 ID: source
      • 이 속성을 필수 항목으로 설정: Checked
      • 속성 표시 이름: Source of data asset
      • 유형: String
      • 완료를 클릭합니다.
      • 속성 ID: num_rows
      • 이 속성을 필수 항목으로 설정: Not checked
      • 속성 표시 이름: Number of rows in the data asset
      • 유형: Double
      • 완료를 클릭합니다.
      • 속성 ID: has_pii
      • 이 속성을 필수 항목으로 설정: Not checked
      • 속성 표시 이름: Has PII
      • 유형: Boolean
      • 완료를 클릭합니다.
      • 속성 ID: pii_type
      • 이 속성을 필수 항목으로 설정: Not checked
      • 속성 표시 이름: PII type
      • 유형 : Enumerated
        다음 3개의 값을 추가합니다.
        1. 이메일
        2. 사회보장번호
        3. 없음
      • 완료를 클릭합니다.

    완성된 태그 템플릿 양식에 다음 4개의 태그 속성이 표시됩니다.

    만들기를 클릭합니다. Data Catalog 태그 템플릿 페이지에는 템플릿 세부정보와 속성이 표시됩니다.

  3. 태그를 데이터세트의 테이블에 첨부하려면 Data Catalog UI를 열고 검색창에 'demo_dataset'을 입력한 다음 검색을 클릭합니다.
  4. 데이터세트에 복사한 demo_datasettrips 테이블이 검색 결과에 표시됩니다. trips 링크를 클릭합니다.
  5. 항목 세부정보 페이지가 열립니다. 태그 첨부를 클릭합니다.
  6. 태그 첨부 대화상자에서 '첨부 대상' 필드를 '테이블'로 설정하고 프로젝트에서 '데모 태그 템플릿'을 선택합니다. 다음으로 각 태그 속성에 대해 다음 값을 입력하거나 선택합니다. 필수 '소스' 속성 값을 제공해야 합니다. 데이터세트에 복사한 tlc_yellow_trips 테이블의 소스 연도를 표시해야 하는 경우 '2017'을 변경하세요.
    1. source
      Copied from tlc_yellow_trips_2017
      
    2. num_rows
      113496874
      
    3. pii_type
      Select "NONE"
      
    4. has_pii
      Select "false"
      

    저장을 클릭합니다. 태그 속성은 항목 세부정보 페이지에 표시됩니다.

gcloud 명령

아래에 표시된 gcloud data-catalog tag-templates create 명령을 실행하여 다음 네 가지 태그 필드('속성'이라고도 함)로 태그 템플릿을 작성하십시오.

  1. display_name: Source of data asset
    id: source
    required: TRUE
    type: String
  2. display_name: 데이터 애셋에 있는 행의 수
    id: num_rows
    required: FALSE
    type: Double
  3. display_name: Has PII
    id: has_pii
    required: FALSE
    type: Boolean
  4. display_name: PII type
    id: pii_type
    required: FALSE
    type: Enumerated
    values:
    1. 이메일
    2. 사회보장번호
    3. 없음
# -------------------------------
# Create a Tag Template.
# -------------------------------
gcloud data-catalog tag-templates create demo_template \
    --location=us-central1 \
    --display-name="Demo Tag Template" \
    --field=id=source,display-name="Source of data asset",type=string,required=TRUE \
    --field=id=num_rows,display-name="Number of rows in the data asset",type=double \
    --field=id=has_pii,display-name="Has PII",type=bool \
    --field=id=pii_type,display-name="PII type",type='enum(EMAIL|SOCIAL SECURITY NUMBER|NONE)'

# -------------------------------
# Lookup the Data Catalog entry for the table.
# -------------------------------
ENTRY_NAME=$(gcloud data-catalog entries lookup '//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET/tables/TABLE' --format="value(name)")

# -------------------------------
# Attach a Tag to the table.
# -------------------------------

# Create the Tag file.
cat > tag_file.json << EOF
  {
    "source": "BigQuery",
    "num_rows": 1000,
    "has_pii": true,
    "pii_type": "EMAIL"
  }
EOF

gcloud data-catalog tags create --entry=${ENTRY_NAME} \
    --tag-template=demo_template --tag-template-location=us-central1 --tag-file=tag_file.json

Python

  1. 클라이언트 라이브러리 설치
  2. 애플리케이션 기본 사용자 인증 정보 설정
  3. 코드 실행
    # -------------------------------
    # Import required modules.
    # -------------------------------
    from google.cloud import datacatalog_v1
    
    # -------------------------------
    # Set your Google Cloud Platform project ID.
    # -------------------------------
    project_id = PROJECT
    
    # -------------------------------
    # Currently, Data Catalog stores metadata in the
    # us-central1 region.
    # -------------------------------
    location = 'us-central1'
    
    # -------------------------------
    # Use Application Default Credentials to create a new
    # Data Catalog client. GOOGLE_APPLICATION_CREDENTIALS
    # environment variable must be set with the location
    # of a service account key file.
    # -------------------------------
    datacatalog = datacatalog_v1.DataCatalogClient()
    
    # -------------------------------
    # Create a Tag Template.
    # -------------------------------
    tag_template = datacatalog_v1.types.TagTemplate()
    
    tag_template.display_name = 'Demo Tag Template'
    
    tag_template.fields['source'].display_name = 'Source of data asset'
    tag_template.fields['source'].type.primitive_type = \
        datacatalog_v1.enums.FieldType.PrimitiveType.STRING.value
    
    tag_template.fields['num_rows'].display_name = 'Number of rows in data asset'
    tag_template.fields['num_rows'].type.primitive_type = \
        datacatalog_v1.enums.FieldType.PrimitiveType.DOUBLE.value
    
    tag_template.fields['has_pii'].display_name = 'Has PII'
    tag_template.fields['has_pii'].type.primitive_type = \
        datacatalog_v1.enums.FieldType.PrimitiveType.BOOL.value
    
    tag_template.fields['pii_type'].display_name = 'PII type'
    tag_template.fields['pii_type'].type.enum_type\
        .allowed_values.add().display_name = 'EMAIL'
    tag_template.fields['pii_type'].type.enum_type\
        .allowed_values.add().display_name = 'SOCIAL SECURITY NUMBER'
    tag_template.fields['pii_type'].type.enum_type\
        .allowed_values.add().display_name = 'NONE'
    
    expected_template_name = datacatalog_v1.DataCatalogClient\
        .tag_template_path(project_id, location, 'demo_tag_template')
    
    # Delete any pre-existing Template with the same name.
    try:
        datacatalog.delete_tag_template(name=expected_template_name, force=True)
        print('Deleted template: {}'.format(expected_template_name))
    except:
        print('Cannot delete template: {}'.format(expected_template_name))
    
    # Create the Tag Template.
    try:
        tag_template = datacatalog.create_tag_template(
            parent=datacatalog_v1.DataCatalogClient.location_path(
                project_id, location),
            tag_template_id='demo_tag_template',
            tag_template=tag_template)
        print('Created template: {}'.format(tag_template.name))
    except:
        print('Cannot create template: {}'.format(expected_template_name))
    
    # -------------------------------
    # Lookup Data Catalog's Entry referring to the table.
    # -------------------------------
    resource_name = '//bigquery.googleapis.com/projects/{}' \
                    '/datasets/demo_dataset/tables/trips'.format(project_id)
    table_entry = datacatalog.lookup_entry(linked_resource=resource_name)
    
    # -------------------------------
    # Attach a Tag to the table.
    # -------------------------------
    tag = datacatalog_v1.types.Tag()
    
    tag.template = tag_template.name
    
    tag.fields['source'].string_value = 'Copied from tlc_yellow_trips_2017'
    tag.fields['num_rows'].double_value = 113496874
    tag.fields['has_pii'].bool_value = False
    tag.fields['pii_type'].enum_value.display_name = 'NONE'
    
    tag = datacatalog.create_tag(parent=table_entry.name, tag=tag)
    print('Created tag: {}'.format(tag.name))
    

자바

  1. 클라이언트 라이브러리 설치
  2. 애플리케이션 기본 사용자 인증 정보 설정
  3. 코드 실행
    /*
    This application demonstrates how to perform core operations with the
    Data Catalog API.
    
    For more information, see the README.md and the official documentation at
    https://cloud.google.com/data-catalog/docs.
    */
    
    package com.example.datacatalog;
    
    import com.google.cloud.datacatalog.v1.CreateTagRequest;
    import com.google.cloud.datacatalog.v1.CreateTagTemplateRequest;
    import com.google.cloud.datacatalog.v1.DataCatalogClient;
    import com.google.cloud.datacatalog.v1.DeleteTagTemplateRequest;
    import com.google.cloud.datacatalog.v1.Entry;
    import com.google.cloud.datacatalog.v1.FieldType;
    import com.google.cloud.datacatalog.v1.FieldType.EnumType;
    import com.google.cloud.datacatalog.v1.FieldType.EnumType.EnumValue;
    import com.google.cloud.datacatalog.v1.FieldType.PrimitiveType;
    import com.google.cloud.datacatalog.v1.LocationName;
    import com.google.cloud.datacatalog.v1.LookupEntryRequest;
    import com.google.cloud.datacatalog.v1.Tag;
    import com.google.cloud.datacatalog.v1.TagField;
    import com.google.cloud.datacatalog.v1.TagTemplate;
    import com.google.cloud.datacatalog.v1.TagTemplateField;
    import com.google.cloud.datacatalog.v1.TagTemplateName;
    
    public class CreateTags {
    
      public static void createTags() {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "my-project";
        String tagTemplateId = "my_tag_template";
        createTags(projectId, tagTemplateId);
      }
    
      public static void createTags(String projectId, String tagTemplateId) {
        // Currently, Data Catalog stores metadata in the us-central1 region.
        String location = "us-central1";
    
        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests. After completing all of your requests, call
        // the "close" method on the client to safely clean up any remaining background resources.
        try (DataCatalogClient dataCatalogClient = DataCatalogClient.create()) {
    
          // -------------------------------
          // Create a Tag Template.
          // -------------------------------
          TagTemplateField sourceField =
              TagTemplateField.newBuilder()
                  .setDisplayName("Source of data asset")
                  .setType(FieldType.newBuilder().setPrimitiveType(PrimitiveType.STRING).build())
                  .build();
    
          TagTemplateField numRowsField =
              TagTemplateField.newBuilder()
                  .setDisplayName("Number of rows in data asset")
                  .setType(FieldType.newBuilder().setPrimitiveType(PrimitiveType.DOUBLE).build())
                  .build();
    
          TagTemplateField hasPiiField =
              TagTemplateField.newBuilder()
                  .setDisplayName("Has PII")
                  .setType(FieldType.newBuilder().setPrimitiveType(PrimitiveType.BOOL).build())
                  .build();
    
          TagTemplateField piiTypeField =
              TagTemplateField.newBuilder()
                  .setDisplayName("PII type")
                  .setType(
                      FieldType.newBuilder()
                          .setEnumType(
                              EnumType.newBuilder()
                                  .addAllowedValues(
                                      EnumValue.newBuilder().setDisplayName("EMAIL").build())
                                  .addAllowedValues(
                                      EnumValue.newBuilder()
                                          .setDisplayName("SOCIAL SECURITY NUMBER")
                                          .build())
                                  .addAllowedValues(
                                      EnumValue.newBuilder().setDisplayName("NONE").build())
                                  .build())
                          .build())
                  .build();
    
          TagTemplate tagTemplate =
              TagTemplate.newBuilder()
                  .setDisplayName("Demo Tag Template")
                  .putFields("source", sourceField)
                  .putFields("num_rows", numRowsField)
                  .putFields("has_pii", hasPiiField)
                  .putFields("pii_type", piiTypeField)
                  .build();
    
          CreateTagTemplateRequest createTagTemplateRequest =
              CreateTagTemplateRequest.newBuilder()
                  .setParent(
                      LocationName.newBuilder()
                          .setProject(projectId)
                          .setLocation(location)
                          .build()
                          .toString())
                  .setTagTemplateId("demo_tag_template")
                  .setTagTemplate(tagTemplate)
                  .build();
    
          String expectedTemplateName =
              TagTemplateName.newBuilder()
                  .setProject(projectId)
                  .setLocation(location)
                  .setTagTemplate("demo_tag_template")
                  .build()
                  .toString();
    
          // Delete any pre-existing Template with the same name.
          try {
            dataCatalogClient.deleteTagTemplate(
                DeleteTagTemplateRequest.newBuilder()
                    .setName(expectedTemplateName)
                    .setForce(true)
                    .build());
    
            System.out.println(String.format("Deleted template: %s", expectedTemplateName));
          } catch (Exception e) {
            System.out.println(String.format("Cannot delete template: %s", expectedTemplateName));
          }
    
          // Create the Tag Template.
          tagTemplate = dataCatalogClient.createTagTemplate(createTagTemplateRequest);
          System.out.println(String.format("Template created with name: %s", tagTemplate.getName()));
    
          // -------------------------------
          // Lookup Data Catalog's Entry referring to the table.
          // -------------------------------
          String linkedResource =
              String.format(
                  "//bigquery.googleapis.com/projects/%s/datasets/demo_dataset/tables/trips",
                  projectId);
          LookupEntryRequest lookupEntryRequest =
              LookupEntryRequest.newBuilder().setLinkedResource(linkedResource).build();
          Entry tableEntry = dataCatalogClient.lookupEntry(lookupEntryRequest);
    
          // -------------------------------
          // Attach a Tag to the table.
          // -------------------------------
          TagField sourceValue =
              TagField.newBuilder().setStringValue("Copied from tlc_yellow_trips_2017").build();
          TagField numRowsValue = TagField.newBuilder().setDoubleValue(113496874).build();
          TagField hasPiiValue = TagField.newBuilder().setBoolValue(false).build();
          TagField piiTypeValue =
              TagField.newBuilder()
                  .setEnumValue(TagField.EnumValue.newBuilder().setDisplayName("NONE").build())
                  .build();
    
          Tag tag =
              Tag.newBuilder()
                  .setTemplate(tagTemplate.getName())
                  .putFields("source", sourceValue)
                  .putFields("num_rows", numRowsValue)
                  .putFields("has_pii", hasPiiValue)
                  .putFields("pii_type", piiTypeValue)
                  .build();
    
          CreateTagRequest createTagRequest =
              CreateTagRequest.newBuilder().setParent(tableEntry.getName()).setTag(tag).build();
    
          dataCatalogClient.createTag(createTagRequest);
    
        } catch (Exception e) {
          System.out.print("Error during CreateTags:\n" + e.toString());
        }
      }
    }
    

Node.js

  1. 클라이언트 라이브러리 설치
  2. 애플리케이션 기본 사용자 인증 정보 설정
  3. 코드를 실행합니다.
    async function main() {
        // -------------------------------
        // Import required modules.
        // -------------------------------
        const { DataCatalogClient } = require('@google-cloud/datacatalog').v1;
    
        // Common fields.
        let request;
        let responses;
    
        // -------------------------------
        // Set your Google Cloud Platform project ID.
        // -------------------------------
        const projectId = 'PROJECT_ID';
    
        // -------------------------------
        // Currently, Data Catalog stores metadata in the
        // us-central1 region.
        // -------------------------------
        const location = 'us-central1';
    
        // -------------------------------
        // Use Application Default Credentials to create a new
        // Data Catalog client. GOOGLE_APPLICATION_CREDENTIALS
        // environment variable must be set with the location
        // of a service account key file.
        // -------------------------------
        const datacatalog = new DataCatalogClient();
    
        // Create Fields.
        const fieldSource = {
            displayName: 'Source of data asset',
            type: {
                primitiveType: 'STRING',
            },
        };
    
        const fieldNumRows = {
            displayName: 'Number of rows in data asset',
            type: {
                primitiveType: 'DOUBLE',
            },
        };
    
        const fieldHasPII = {
            displayName: 'Has PII',
            type: {
                primitiveType: 'BOOL',
            },
        };
    
        const fieldPIIType = {
            displayName: 'PII type',
            type: {
                enumType: {
                    allowedValues: [
                        {
                            displayName: 'EMAIL',
                        },
                        {
                            displayName: 'SOCIAL SECURITY NUMBER',
                        },
                        {
                            displayName: 'NONE',
                        },
                    ],
                },
            },
        };
    
        // -------------------------------
        // Create Tag Template.
        // -------------------------------
        const tagTemplateId = 'demo_tag_template';
    
        const tagTemplate = {
            displayName: 'Demo Tag Template',
            fields: {
                source: fieldSource,
                num_rows: fieldNumRows,
                has_pii: fieldHasPII,
                pii_type: fieldPIIType,
            },
        };
    
        const tagTemplatePath = datacatalog.tagTemplatePath(
            projectId,
            location,
            tagTemplateId
        );
    
        // Delete any pre-existing Template with the same name.
        try {
            request = {
                name: tagTemplatePath,
                force: true,
            };
            await datacatalog.deleteTagTemplate(request);
            console.log(`Deleted template: ${tagTemplatePath}`);
        } catch (error) {
            console.log(`Cannot delete template: ${tagTemplatePath}`);
        }
    
        // Create the Tag Template request.
        const locationPath = datacatalog.locationPath(projectId, location);
    
        request = {
            parent: locationPath,
            tagTemplateId: tagTemplateId,
            tagTemplate: tagTemplate,
        };
    
        // Execute the request.
        responses = await datacatalog.createTagTemplate(request);
        const createdTagTemplate = responses[0];
        console.log(`Created template: ${createdTagTemplate.name}`);
    
        // -------------------------------
        // Lookup Data Catalog's Entry referring to the table.
        // -------------------------------
        responses = await datacatalog.lookupEntry({
            linkedResource: `//bigquery.googleapis.com/projects/` +
                `${projectId}/datasets/demo_dataset/tables/trips`,
        });
        const entry = responses[0];
        console.log(`Entry name: ${entry.name}`);
        console.log(`Entry type: ${entry.type}`);
        console.log(`Linked resource: ${entry.linkedResource}`);
    
        // -------------------------------
        // Attach a Tag to the table.
        // -------------------------------
        const tag = {
            name: entry.name,
            template: createdTagTemplate.name,
            fields: {
                source: {
                    stringValue: 'Copied from tlc_yellow_trips_2017',
                },
                num_rows: {
                    doubleValue: 113496874,
                },
                has_pii: {
                    boolValue: false,
                },
                pii_type: {
                    enumValue: {
                        displayName: 'NONE',
                    },
                },
            },
        };
    
        request = {
            parent: entry.name,
            tag: tag,
        };
    
        // Create the Tag.
        await datacatalog.createTag(request);
        console.log(`Tag created for entry: ${entry.name}`);
    }
    
    main();
    

REST 및 명령줄

해당 언어의 Cloud 클라이언트 라이브러리에 액세스할 수 없거나 REST 요청을 사용하여 API를 테스트하려는 경우 다음 예시를 참조하고 Data Catalog REST API 문서를 참조하세요.

1. 태그 템플릿 만들기

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: GCP 프로젝트 ID

HTTP 메서드 및 URL:

POST https://datacatalog.googleapis.com/v1/projects/project-id/locations/us-central1/tagTemplates?tagTemplateId=demo_tag_template

JSON 요청 본문:

{
  "displayName":"Demo Tag Template",
  "fields":{
    "source":{
      "displayName":"Source of data asset",
      "isRequired": "true",
      "type":{
        "primitiveType":"STRING"
      }
    },
    "num_rows":{
      "displayName":"Number of rows in data asset",
      "isRequired": "false",
      "type":{
        "primitiveType":"DOUBLE"
      }
    },
    "has_pii":{
      "displayName":"Has PII",
      "isRequired": "false",
      "type":{
        "primitiveType":"BOOL"
      }
    },
    "pii_type":{
      "displayName":"PII type",
      "isRequired": "false",
      "type":{
        "enumType":{
          "allowedValues":[
            {
              "displayName":"EMAIL"
            },
            {
              "displayName":"SOCIAL SECURITY NUMBER"
            },
            {
              "displayName":"NONE"
            }
          ]
        }
      }
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name":"projects/project-id/locations/us-central1/tagTemplates/demo_tag_template",
  "displayName":"Demo Tag Template",
  "fields":{
    "num_rows":{
      "displayName":"Number of rows in data asset",
      "isRequired": "false",
      "type":{
        "primitiveType":"DOUBLE"
      }
    },
    "has_pii":{
      "displayName":"Has PII",
      "isRequired": "false",
      "type":{
        "primitiveType":"BOOL"
      }
    },
    "pii_type":{
      "displayName":"PII type",
      "isRequired": "false",
      "type":{
        "enumType":{
          "allowedValues":[
            {
              "displayName":"EMAIL"
            },
            {
              "displayName":"NONE"
            },
            {
              "displayName":"SOCIAL SECURITY NUMBER"
            }
          ]
        }
      }
    },
    "source":{
      "displayName":"Source of data asset",
      "isRequired":"true",
      "type":{
        "primitiveType":"STRING"
      }
    }
  }
}

2. BigQuery 테이블의 Data Catalog entry-id 찾기

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: GCP 프로젝트 ID

HTTP 메서드 및 URL:

GET https://datacatalog.googleapis.com/v1/entries:lookup?linkedResource=//bigquery.googleapis.com/projects/project-id/datasets/demo_dataset/tables/trips

JSON 요청 본문:

Request body is empty.

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/project-id/locations/US/entryGroups/@bigquery/entries/entry-id",
  "type": "TABLE",
  "schema": {
    "columns": [
      {
        "type": "STRING",
        "description": "A code indicating the TPEP provider that provided the record. 1= ",
        "mode": "REQUIRED",
        "column": "vendor_id"
      },
      ...
    ]
  },
  "sourceSystemTimestamps": {
    "createTime": "2019-01-25T01:45:29.959Z",
    "updateTime": "2019-03-19T23:20:26.540Z"
  },
  "linkedResource": "//bigquery.googleapis.com/projects/project-id/datasets/demo_dataset/tables/trips",
  "bigqueryTableSpec": {
    "tableSourceType": "BIGQUERY_TABLE"
  }
}

3. 템플릿에서 태그를 만들고 BigQuery 테이블에 태그를 첨부합니다.

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: GCP 프로젝트 ID
  • entry-id: 데모 데이터세트 trips 테이블의 Data Catalog 항목 ID입니다. 이전 단계의 조회 결과로 표시됩니다.

HTTP 메서드 및 URL:

POST https://datacatalog.googleapis.com/v1/projects/project-id/locations/us-central1/entryGroups/@bigquery/entries/entry-id/tags?tagTemplateId=demo_tag_template

JSON 요청 본문:

{
  "template":"projects/project-id/locations/us-central1/tagTemplates/demo_tag_template",
  "fields":{
    "source":{
      "stringValue":"Copied from tlc_yellow_trips_2017"
    },
    "num_rows":{
      "doubleValue":113496874
    },
    "has_pii":{
      "boolValue":false
    },
    "pii_type":{
      "enumValue":{
        "displayName":"NONE"
      }
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name":"projects/project-id/locations/US/entryGroups/@bigquery/entries/entry-id/tags/tag-id",
  "template":"projects/project-id/locations/us-central1/tagTemplates/demo_tag_template",
  "fields":{
    "pii_type":{
      "displayName":"PII type",
      "enumValue":{
        "displayName":"NONE"
      }
    },
    "has_pii":{
      "displayName":"Has PII",
      "boolValue":false
    },
    "source":{
      "displayName":"Source of data asset",
      "stringValue":"Copied from tlc_yellow_trips_2017"
    },
    "num_rows":{
      "displayName":"Number of rows in data asset",
      "doubleValue":113496874
    }
  },
  "templateDisplayName":"Demo Tag Template"
}

정리

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

데이터세트 삭제

  1. 필요하면 BigQuery 웹 UI를 엽니다.

    BigQuery 웹 UI로 이동

  2. 탐색 패널의 리소스 섹션에서 만든 demo_dataset 데이터세트를 클릭합니다.

  3. 세부정보 패널의 우측에서 데이터세트 삭제를 클릭합니다. 이 작업으로 데이터세트, 테이블, 모든 데이터가 삭제됩니다.

  4. 데이터세트 삭제 대화상자에서 데이터세트 이름(demo_dataset)을 입력하여 삭제 명령어를 확인한 후 삭제를 클릭합니다.

태그 템플릿 삭제

  1. Google Cloud Console에서 Data Catalog UI를 엽니다. 태그 템플릿에서 '태그 템플릿 살펴보기'를 클릭합니다.

  2. '데모 태그 템플릿'을 클릭합니다.

  3. 태그 템플릿 페이지에서 '삭제'를 클릭하여 데모 태그 템플릿을 삭제하십시오.

다음 단계