테이블 태그 지정을 위한 빠른 시작

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

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

시작하기 전에

  1. 프로젝트 설정:

    1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
    2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

      프로젝트 선택기로 이동

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

      API 사용 설정

    4. Cloud SDK 설치 및 초기화

  2. 프로젝트에 공개 데이터 세트를 추가합니다.

    1. Google Cloud Console에서 BigQuery로 이동합니다.
    2. 왼쪽 탐색 창에서 + 데이터 추가를 클릭하고 드롭다운 목록에서 공개 데이터 세트 살펴보기를 선택합니다.

      공개 데이터 세트 살펴보기

    3. 데이터 세트 패널에서 '뉴욕 택시 운행'을 검색하고 관련 검색결과를 클릭합니다.

    4. 데이터 세트 개요 패널에서 데이터 세트 보기를 클릭합니다.

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

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

    1. Google Cloud Console의 BigQuery에서 왼쪽 탐색기 창에서 'tlc_yellow_trips' 테이블을 검색하고 테이블 중 하나(예:tlc_yellow_trips_2017)를 선택합니다. 그런 다음 복사를 클릭합니다.
    2. 테이블 복사 대화상자의 대상 섹션에서 다음을 수행합니다.

      1. 프로젝트 이름 드롭다운 목록에서 프로젝트를 선택합니다.
      2. 데이터 세트 이름 드롭다운 목록에서 'demo_dataset'를 선택합니다.
      3. 테이블 이름에 'trips'를 입력한 다음 복사를 클릭합니다.
    3. 왼쪽 탐색 창에서 trips 테이블이 demo_dataset에 나열되어 있는지 확인합니다.

      다음 섹션에서 테이블에 Data Catalog 태그를 추가합니다.

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

콘솔

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. EMAIL_ADDRESS
        2. US_SOCIAL_SECURITY_NUMBER
        3. 없음
      • 완료를 클릭합니다.

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

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

  3. 태그를 데이터 세트의 테이블에 첨부하려면 Data Catalog UI를 열고 검색창에 'demo_dataset'을 입력한 다음 검색을 클릭합니다.
  4. 데이터 세트에 복사한 demo_datasettrips 테이블이 검색 결과에 표시됩니다. trips 링크를 클릭합니다.
  5. 항목 세부정보 페이지가 열립니다. 태그 연결을 클릭합니다.
  6. 태그 첨부 패널에서 다음을 수행합니다.
    1. 태그할 대상 선택에서 trips 테이블을 선택하고 확인을 클릭합니다.
    2. 태그 템플릿 선택에서 Demo Tag Template을 찾아 선택하고 확인을 클릭합니다.
    3. 태그 값 입력에서 각 입력란에 다음 값을 입력합니다.
      • 데이터 애셋의 소스: Copied from tlc_yellow_trips_2017
      • 데이터 애셋의 행 수: 113496874
      • Has PII: FALSE
      • PII 유형: NONE

      'Save(저장)'를 클릭합니다. 이제 태그 필드가 BigQuery 데이터 세트 세부정보 아래 태그 섹션에 나열됩니다.

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. EMAIL_ADDRESS
    2. US_SOCIAL_SECURITY_NUMBER
    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_ADDRESS|US_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_ADDRESS"
  }
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'
    
    # -------------------------------
    # Set your BigQuery dataset and table name.
    # -------------------------------
    dataset_id = 'demo_dataset'
    table_name = 'trips'
    
    # -------------------------------
    # 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_client = datacatalog_v1.DataCatalogClient()
    
    # -------------------------------
    # Create a Tag Template.
    # -------------------------------
    tag_template = datacatalog_v1.types.TagTemplate()
    
    tag_template.display_name = 'Demo Tag Template'
    
    tag_template.fields['source'] = datacatalog_v1.types.TagTemplateField()
    tag_template.fields['source'].display_name = 'Source of data asset'
    tag_template.fields['source'].type_.primitive_type = datacatalog_v1.types.FieldType.PrimitiveType.STRING
    
    tag_template.fields['num_rows'] = datacatalog_v1.types.TagTemplateField()
    tag_template.fields['num_rows'].display_name = 'Number of rows in data asset'
    tag_template.fields['num_rows'].type_.primitive_type = datacatalog_v1.types.FieldType.PrimitiveType.DOUBLE
    
    tag_template.fields['has_pii'] = datacatalog_v1.types.TagTemplateField()
    tag_template.fields['has_pii'].display_name = 'Has PII'
    tag_template.fields['has_pii'].type_.primitive_type = datacatalog_v1.types.FieldType.PrimitiveType.BOOL
    
    tag_template.fields['pii_type'] = datacatalog_v1.types.TagTemplateField()
    tag_template.fields['pii_type'].display_name = 'PII type'
    
    for display_name in ['EMAIL_ADDRESS', 'US_SOCIAL_SECURITY_NUMBER', 'NONE']:
        enum_value = datacatalog_v1.types.FieldType.EnumType.EnumValue(display_name = display_name)
        tag_template.fields['pii_type'].type_.enum_type.allowed_values.append(enum_value)
    
    expected_template_name = datacatalog_v1.DataCatalogClient\
        .tag_template_path(project_id, location, 'example_tag_template')
    
    # Delete any pre-existing Template with the same name.
    try:
        datacatalog_client.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_client.create_tag_template(
            parent='projects/{}/locations/us-central1'.format(project_id),
            tag_template_id='example_tag_template',
            tag_template=tag_template)
        print('Created template: {}'.format(tag_template.name))
    except OSError as e:
        print('Cannot create template: {}'.format(expected_template_name))
        print('{}'.format(e))
    
    # -------------------------------
    # Lookup Data Catalog's Entry referring to the table.
    # -------------------------------
    resource_name = '//bigquery.googleapis.com/projects/{}' \
                    '/datasets/{}/tables/{}'.format(project_id, dataset_id, table_name)
    table_entry = datacatalog_client.lookup_entry(request={"linked_resource": resource_name})
    
    # -------------------------------
    # Attach a Tag to the table.
    # -------------------------------
    tag = datacatalog_v1.types.Tag()
    
    tag.template = tag_template.name
    tag.name="my_tag"
    
    tag.fields['source'] = datacatalog_v1.types.TagField()
    tag.fields['source'].string_value = 'Copied from tlc_yellow_trips_2018'
    
    tag.fields['num_rows'] = datacatalog_v1.types.TagField()
    tag.fields['num_rows'].double_value = 113496874
    
    tag.fields['has_pii'] = datacatalog_v1.types.TagField()
    tag.fields['has_pii'].bool_value = False
    
    tag.fields['pii_type'] = datacatalog_v1.types.TagField()
    tag.fields['pii_type'].enum_value.display_name = 'NONE'
    
    tag = datacatalog_client.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_ADDRESS").build())
                                  .addAllowedValues(
                                      EnumValue.newBuilder()
                                          .setDisplayName("US_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_ADDRESS',
                        },
                        {
                            displayName: 'US_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_ADDRESS"
            },
            {
              "displayName":"US_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_ADDRESS"
            },
            {
              "displayName":"NONE"
            },
            {
              "displayName":"US_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. 태그 템플릿 페이지에서 삭제를 클릭하여 데모 태그 템플릿을 삭제합니다.

다음 단계