데이터 프로필 스캔 만들기 및 사용

Dataplex Universal Catalog를 사용하면 BigQuery 테이블에 있는 열의 일반적인 통계 특성(일반적인 값, 데이터 분포, null 개수)을 식별할 수 있습니다. 이 정보는 데이터를 더욱 효과적으로 이해하고 분석하는 데 도움이 됩니다.

Dataplex Universal Catalog 데이터 프로필 스캔에 대한 자세한 내용은 데이터 프로파일링 정보를 참조하세요.

시작하기 전에

Enable the Dataplex API.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

필요한 역할

데이터 프로필 스캔을 만들고 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 테이블과 같은 리소스에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 데이터 프로필 스캔 만들기, 실행, 업데이트, 삭제: 데이터 스캔이 포함된 프로젝트에 대한 Dataplex DataScan 편집자(roles/dataplex.dataScanEditor) 역할
  • Dataplex Universal Catalog가 BigQuery 데이터에 대해 데이터 프로필 스캔을 실행하도록 허용하려면 Dataplex Universal Catalog 서비스 계정에 다음 역할을 부여하세요. 스캔을 실행하는 프로젝트의 BigQuery 작업 사용자(roles/bigquery.jobUser) 역할, 스캔되는 테이블의 BigQuery 데이터 뷰어(roles/bigquery.dataViewer) 역할
  • Cloud Storage 데이터를 사용하는 BigQuery 외부 테이블에 대한 데이터 프로필 스캔을 실행하려면 Dataplex Universal Catalog 서비스 계정에 Cloud Storage 버킷에 대한 스토리지 객체 뷰어(roles/storage.objectViewer) 및 스토리지 기존 버킷 리더(roles/storage.legacyBucketReader) 역할을 부여합니다.
  • 데이터 프로필 스캔 결과, 작업, 기록 보기: 데이터 스캔이 포함된 프로젝트에 대한 Dataplex DataScan 뷰어(roles/dataplex.dataScanViewer) 역할
  • 데이터 프로필 스캔 결과를 BigQuery 테이블로 내보내기: 테이블에 대한 BigQuery 데이터 편집자(roles/bigquery.dataEditor) 역할
  • 데이터 프로필 스캔 결과를 Dataplex Universal Catalog에 게시: @bigquery 항목 그룹에 대한 Dataplex 카탈로그 편집자(roles/dataplex.catalogEditor) 역할
  • 데이터 프로필 탭에서 BigQuery에 게시된 데이터 프로필 스캔 결과 보기: 테이블에 대한 BigQuery 데이터 뷰어(roles/bigquery.dataViewer) 역할

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

필수 권한

커스텀 역할을 사용하는 경우 다음 IAM 권한을 부여해야 합니다.

  • 데이터 프로필 스캔 만들기, 실행, 업데이트, 삭제:
    • 프로젝트에 대한 dataplex.datascans.create: DataScan 만들기
    • 데이터 스캔에 대한 dataplex.datascans.update: DataScan 설명 업데이트
    • 데이터 스캔에 대한 dataplex.datascans.delete: DataScan 삭제
    • 데이터 스캔에 대한 dataplex.datascans.run: DataScan 실행
    • 데이터 스캔에 대한 dataplex.datascans.get: 결과를 제외한 DataScan 세부정보 보기
    • 프로젝트에 대한 dataplex.datascans.list: DataScan 나열
    • 데이터 스캔 작업에 대한 dataplex.dataScanJobs.get: DataScan 작업 리소스 읽기
    • 데이터 스캔에 대한 dataplex.dataScanJobs.list: 프로젝트의 DataScan 작업 리소스 나열
  • Dataplex Universal Catalog가 BigQuery 데이터에 대해 데이터 프로필 스캔을 실행하도록 허용:
    • 프로젝트에 대한 bigquery.jobs.create: 작업 실행
    • 테이블에 대한 bigquery.tables.get: 테이블 메타데이터 가져오기
    • 테이블에 대한 bigquery.tables.getData: 테이블 데이터 가져오기
  • Cloud Storage 데이터를 사용하는 BigQuery 외부 테이블에 대한 데이터 프로필 스캔 실행:
    • 버킷에 대한 storage.buckets.get: 버킷 메타데이터 읽기
    • 객체에 대한 storage.objects.get: 객체 데이터 읽기
  • 데이터 프로필 스캔 결과, 작업, 기록 보기:
    • 데이터 스캔에 대한 dataplex.datascans.getData: 결과를 포함한 DataScan 세부정보 보기
    • 프로젝트에 대한 dataplex.datascans.list: DataScan 나열
    • 데이터 스캔 작업에 대한 dataplex.dataScanJobs.get: DataScan 작업 리소스 읽기
    • 데이터 스캔에 대한 dataplex.dataScanJobs.list: 프로젝트의 DataScan 작업 리소스 나열
  • 데이터 프로필 스캔 결과를 BigQuery 테이블로 내보내기:
    • 데이터 세트에 대한 bigquery.tables.create: 테이블 만들기
    • 테이블에 대한 bigquery.tables.updateData: 테이블에 데이터 쓰기
  • 데이터 프로필 스캔 결과를 Dataplex Universal Catalog에 게시:
    • 항목 그룹에 대한 dataplex.entryGroups.useDataProfileAspect: Dataplex Universal Catalog 데이터 프로필 스캔이 결과를 Dataplex Universal Catalog에 저장할 수 있도록 허용
    • 또한 다음 권한 중 하나가 필요합니다.
      • 테이블에 대한 bigquery.tables.update: 테이블 메타데이터 업데이트
      • 항목에 대한 dataplex.entries.update: 항목 업데이트
  • BigQuery 또는 Dataplex Universal Catalog의 테이블에 대해 게시된 데이터 프로필 결과 보기:
    • 테이블에 대한 bigquery.tables.get: 테이블 메타데이터 가져오기
    • 테이블에 대한 bigquery.tables.getData: 테이블 데이터 가져오기

테이블에서 BigQuery 행 수준 보안을 사용하는 경우 Dataplex Universal Catalog는 Dataplex Universal Catalog 서비스 계정에 표시되는 행만 스캔할 수 있습니다. Dataplex Universal Catalog가 모든 행을 스캔하도록 허용하려면 조건자가 TRUE인 행 필터에 서비스 계정을 추가하세요.

테이블에서 BigQuery 열 수준 보안을 사용하는 경우 Dataplex Universal Catalog에서 보호된 열을 스캔하려면 액세스 권한이 필요합니다. 액세스 권한을 부여하려면 테이블에 사용된 모든 정책 태그에 대해 Dataplex Universal Catalog 서비스 계정에 Data Catalog 세분화된 권한의 리더(roles/datacatalog.fineGrainedReader) 역할을 부여합니다. 데이터 스캔을 만들거나 업데이트하는 사용자는 보호된 열에 대한 권한도 필요합니다.

Dataplex Universal Catalog 서비스 계정에 역할 부여

데이터 프로필 스캔을 실행하기 위해 Dataplex Universal Catalog는 BigQuery 작업을 실행하고 BigQuery 테이블 데이터를 읽을 수 있는 권한이 필요한 서비스 계정을 사용합니다. 필요한 역할을 부여하려면 다음 단계를 따르세요.

  1. Dataplex Universal Catalog 서비스 계정 이메일 주소를 가져옵니다. 이 프로젝트에서 데이터 프로필 또는 데이터 품질 스캔을 이전에 만든 적이 없는 경우 다음 gcloud 명령어를 실행하여 서비스 ID를 생성합니다.

    gcloud beta services identity create --service=dataplex.googleapis.com
    

    이 명령어는 서비스 계정 이메일을 반환하며, 이메일의 형식은 service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com입니다.

    서비스 계정이 이미 있는 경우 Google Cloud 콘솔의 IAM 페이지에서 Dataplex 이름이 있는 주 구성원을 확인하여 이메일을 찾을 수 있습니다.

  2. 프로젝트에서 서비스 계정에 BigQuery 작업 사용자(roles/bigquery.jobUser) 역할을 부여합니다. 이 역할을 통해 서비스 계정에서 스캔을 위한 BigQuery 작업을 실행할 수 있습니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
        --role="roles/bigquery.jobUser"
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
    • service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com: Dataplex Universal Catalog 서비스 계정의 이메일입니다.
  3. 프로파일링할 각 테이블에 대해 서비스 계정에 BigQuery 데이터 뷰어(roles/bigquery.dataViewer) 역할을 부여합니다. 이 역할은 테이블에 대한 읽기 전용 액세스 권한을 부여합니다.

    gcloud bigquery tables add-iam-policy-binding DATASET_ID.TABLE_ID \
        --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
        --role="roles/bigquery.dataViewer"
    

    다음을 바꿉니다.

    • DATASET_ID: 테이블이 포함된 데이터 세트의 ID입니다.
    • TABLE_ID: 프로파일링할 테이블의 ID입니다.
    • service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com: Dataplex Universal Catalog 서비스 계정의 이메일입니다.

      데이터 프로필 스캔 만들기

      콘솔

      1. Google Cloud 콘솔에서 Dataplex Universal Catalog 데이터 프로파일링 및 품질 페이지로 이동합니다.

        데이터 프로파일링 및 품질로 이동

      2. 데이터 프로필 스캔 만들기를 클릭합니다.

      3. 선택사항: 표시 이름을 입력합니다.

      4. ID를 입력합니다. 리소스 이름 지정 규칙을 참조하세요.

      5. 선택사항: 설명을 입력합니다.

      6. 테이블 필드에서 찾아보기를 클릭합니다. 스캔할 테이블을 선택한 후 선택을 클릭합니다.

        멀티 리전 데이터 세트의 테이블에서 데이터 스캔을 생성할 리전을 선택합니다.

        Dataplex Universal Catalog 레이크 내에 구성된 테이블을 찾아보려면 Dataplex 레이크 둘러보기를 클릭합니다.

      7. 범위 필드에서 증분 또는 전체 데이터를 선택합니다.

        • 증분 데이터를 선택한 경우 타임스탬프 열 필드에서 새 레코드가 추가될 때 증가하고 새 레코드를 식별하는 데 사용할 수 있는 BigQuery 테이블의 DATE 또는 TIMESTAMP 유형 열을 선택합니다. DATE 또는 TIMESTAMP 유형의 열로 파티션을 나눈 테이블의 경우 파티션 열을 타임스탬프 필드로 사용하는 것이 좋습니다.
      8. 선택사항: 데이터를 필터링하려면 다음 중 하나를 수행합니다.

        • 행별로 필터링하려면 행 필터링 체크박스를 선택합니다. GoogleSQL 문법의 WHERE에서 사용할 수 있는 유효한 SQL 표현식을 입력합니다. 예를 들면 col1 >= 0입니다.

          필터는 여러 열에 대한 SQL 조건의 조합일 수 있습니다. 예를 들면 col1 >= 0 AND col2 < 10입니다.

        • 열별로 필터링하려면 열 필터링 체크박스를 선택합니다.

          • 프로필 스캔에 열을 포함하려면 열 포함 필드에서 찾아보기를 클릭합니다. 포함할 열을 선택한 후 선택을 클릭합니다.

          • 프로필 스캔에서 열을 제외하려면 열 제외 필드에서 찾아보기를 클릭합니다. 제외할 열을 선택한 후 선택을 클릭합니다.

      9. 데이터 프로필 스캔에 샘플링을 적용하려면 샘플링 크기 목록에서 샘플링 비율을 선택합니다. 소수점 이하 3자리까지 0.0%에서 100.0% 사이의 백분율 값을 선택합니다.

        • 데이터 세트가 클수록 낮은 샘플링 비율을 선택합니다. 예를 들어 1PB 테이블의 경우 0.1%~1.0% 사이의 값을 입력하면 데이터 프로필 샘플에서 데이터 1~10TB를 샘플링합니다.

        • 결과를 반환하려면 샘플링된 데이터에 레코드가 최소 100개 이상 있어야 합니다.

        • 증분 데이터 스캔의 경우 데이터 프로필 스캔은 최신 증분에 샘플링을 적용합니다.

      10. 선택사항: 소스 테이블의Google Cloud 콘솔에서 BigQuery 및 Dataplex Universal Catalog 페이지에 데이터 프로필 스캔 결과를 게시합니다. BigQuery 및 Dataplex 카탈로그에 결과 게시 체크박스를 선택합니다.

        소스 테이블의 BigQuery 페이지와 Dataplex Universal Catalog 페이지에 있는 데이터 프로필 탭에서 최신 스캔 결과를 볼 수 있습니다. 사용자가 게시된 스캔 결과에 액세스할 수 있게 하려면 이 문서의 데이터 프로필 스캔 결과에 대한 액세스 권한 부여 섹션을 참조하세요.

        다음과 같은 경우 게시 옵션을 사용하지 못할 수 있습니다.

        • 테이블에 대한 필수 권한이 없습니다.
        • 결과를 게시하도록 또 다른 데이터 품질 스캔이 설정되었습니다.
      11. 일정 섹션에서 다음 옵션 중 하나를 선택합니다.

        • 반복: 시간별, 일별, 주별, 월별 또는 커스텀 일정으로 데이터 프로필 스캔을 실행합니다. 스캔 실행 빈도와 시간을 지정합니다. 커스텀을 선택하는 경우 크론 형식을 사용하여 일정을 지정합니다.

        • 주문형: 데이터 프로필 스캔을 주문형으로 실행합니다.

      12. 계속을 클릭합니다.

      13. 선택사항: 스캔 결과를 BigQuery 표준 테이블로 내보냅니다. BigQuery 테이블로 스캔 결과 내보내기 섹션에서 다음을 수행합니다.

        1. BigQuery 데이터 세트 선택 필드에서 찾아보기를 클릭합니다. 데이터 프로필 스캔 결과를 저장할 BigQuery 데이터 세트를 선택합니다.

        2. BigQuery 테이블 필드에서 데이터 프로필 스캔 결과를 저장할 테이블을 지정합니다. 기존 테이블을 사용하는 경우 내보내기 테이블 스키마와 호환되는지 확인합니다. 지정된 테이블이 없으면 Dataplex Universal Catalog에서 테이블을 자동으로 만듭니다.

      14. 선택사항: 라벨을 추가합니다. 라벨은 관련 객체를 함께 그룹화하거나 다른 Google Cloud 리소스와 그룹화할 수 있게 해주는 키-값 쌍입니다.

      15. 스캔을 만들려면 만들기를 클릭합니다.

        일정을 주문형으로 설정한 경우 스캔 실행을 클릭하여 지금 스캔을 실행할 수도 있습니다.

      gcloud

      데이터 프로필 스캔을 만들려면 gcloud dataplex datascans create data-profile 명령어를 사용합니다.

      소스 데이터가 Dataplex Universal Catalog 레이크에 구성된 경우 --data-source-entity 플래그를 포함합니다.

      gcloud dataplex datascans create data-profile DATASCAN \
      --location=LOCATION \
      --data-source-entity=DATA_SOURCE_ENTITY
      

      소스 데이터가 Dataplex Universal Catalog 레이크에 구성되지 않은 경우에는 --data-source-resource 플래그를 포함합니다.

      gcloud dataplex datascans create data-profile DATASCAN \
      --location=LOCATION \
      --data-source-resource=DATA_SOURCE_RESOURCE
      

      다음 변수를 바꿉니다.

      • DATASCAN: 데이터 프로필 스캔의 이름입니다.
      • LOCATION: 데이터 프로필 스캔을 만들 Google Cloud 리전입니다.
      • DATA_SOURCE_ENTITY: 데이터 프로필 스캔 데이터가 포함된 Dataplex Universal Catalog 항목. 예를 들면 projects/test-project/locations/test-location/lakes/test-lake/zones/test-zone/entities/test-entity입니다.
      • DATA_SOURCE_RESOURCE: 데이터 프로필 스캔 데이터가 포함된 리소스의 이름. 예를 들면 //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table입니다.

      C#

      C#

      이 샘플을 사용해 보기 전에 Dataplex Universal Catalog 빠른 시작: 클라이언트 라이브러리 사용C# 설정 안내를 따르세요. 자세한 내용은 Dataplex Universal Catalog C# API 참고 문서를 참조하세요.

      Dataplex Universal Catalog에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

      using Google.Api.Gax.ResourceNames;
      using Google.Cloud.Dataplex.V1;
      using Google.LongRunning;
      
      public sealed partial class GeneratedDataScanServiceClientSnippets
      {
          /// <summary>Snippet for CreateDataScan</summary>
          /// <remarks>
          /// This snippet has been automatically generated and should be regarded as a code template only.
          /// It will require modifications to work:
          /// - It may require correct/in-range values for request initialization.
          /// - It may require specifying regional endpoints when creating the service client as shown in
          ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
          /// </remarks>
          public void CreateDataScanRequestObject()
          {
              // Create client
              DataScanServiceClient dataScanServiceClient = DataScanServiceClient.Create();
              // Initialize request argument(s)
              CreateDataScanRequest request = new CreateDataScanRequest
              {
                  ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
                  DataScan = new DataScan(),
                  DataScanId = "",
                  ValidateOnly = false,
              };
              // Make the request
              Operation<DataScan, OperationMetadata> response = dataScanServiceClient.CreateDataScan(request);
      
              // Poll until the returned long-running operation is complete
              Operation<DataScan, OperationMetadata> completedResponse = response.PollUntilCompleted();
              // Retrieve the operation result
              DataScan result = completedResponse.Result;
      
              // Or get the name of the operation
              string operationName = response.Name;
              // This name can be stored, then the long-running operation retrieved later by name
              Operation<DataScan, OperationMetadata> retrievedResponse = dataScanServiceClient.PollOnceCreateDataScan(operationName);
              // Check if the retrieved long-running operation has completed
              if (retrievedResponse.IsCompleted)
              {
                  // If it has completed, then access the result
                  DataScan retrievedResult = retrievedResponse.Result;
              }
          }
      }

      Go

      Go

      이 샘플을 사용해 보기 전에 Dataplex Universal Catalog 빠른 시작: 클라이언트 라이브러리 사용Go 설정 안내를 따르세요. 자세한 내용은 Dataplex Universal Catalog Go API 참고 문서를 참조하세요.

      Dataplex Universal Catalog에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

      
      package main
      
      import (
      	"context"
      
      	dataplex "cloud.google.com/go/dataplex/apiv1"
      	dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb"
      )
      
      func main() {
      	ctx := context.Background()
      	// This snippet has been automatically generated and should be regarded as a code template only.
      	// It will require modifications to work:
      	// - It may require correct/in-range values for request initialization.
      	// - It may require specifying regional endpoints when creating the service client as shown in:
      	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
      	c, err := dataplex.NewDataScanClient(ctx)
      	if err != nil {
      		// TODO: Handle error.
      	}
      	defer c.Close()
      
      	req := &dataplexpb.CreateDataScanRequest{
      		// TODO: Fill request struct fields.
      		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#CreateDataScanRequest.
      	}
      	op, err := c.CreateDataScan(ctx, req)
      	if err != nil {
      		// TODO: Handle error.
      	}
      
      	resp, err := op.Wait(ctx)
      	if err != nil {
      		// TODO: Handle error.
      	}
      	// TODO: Use resp.
      	_ = resp
      }
      

      자바

      Java

      이 샘플을 사용해 보기 전에 Dataplex Universal Catalog 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 Dataplex Universal Catalog Java API 참고 문서를 참조하세요.

      Dataplex Universal Catalog에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

      import com.google.cloud.dataplex.v1.CreateDataScanRequest;
      import com.google.cloud.dataplex.v1.DataScan;
      import com.google.cloud.dataplex.v1.DataScanServiceClient;
      import com.google.cloud.dataplex.v1.LocationName;
      
      public class SyncCreateDataScan {
      
        public static void main(String[] args) throws Exception {
          syncCreateDataScan();
        }
      
        public static void syncCreateDataScan() throws Exception {
          // This snippet has been automatically generated and should be regarded as a code template only.
          // It will require modifications to work:
          // - It may require correct/in-range values for request initialization.
          // - It may require specifying regional endpoints when creating the service client as shown in
          // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
          try (DataScanServiceClient dataScanServiceClient = DataScanServiceClient.create()) {
            CreateDataScanRequest request =
                CreateDataScanRequest.newBuilder()
                    .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
                    .setDataScan(DataScan.newBuilder().build())
                    .setDataScanId("dataScanId1260787906")
                    .setValidateOnly(true)
                    .build();
            DataScan response = dataScanServiceClient.createDataScanAsync(request).get();
          }
        }
      }

      Python

      Python

      이 샘플을 사용해 보기 전에 Dataplex Universal Catalog 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 Dataplex Universal Catalog Python API 참고 문서를 참조하세요.

      Dataplex Universal Catalog에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

      # This snippet has been automatically generated and should be regarded as a
      # code template only.
      # It will require modifications to work:
      # - It may require correct/in-range values for request initialization.
      # - It may require specifying regional endpoints when creating the service
      #   client as shown in:
      #   https://googleapis.dev/python/google-api-core/latest/client_options.html
      from google.cloud import dataplex_v1
      
      
      def sample_create_data_scan():
          # Create a client
          client = dataplex_v1.DataScanServiceClient()
      
          # Initialize request argument(s)
          data_scan = dataplex_v1.DataScan()
          data_scan.data_quality_spec.rules.dimension = "dimension_value"
          data_scan.data.entity = "entity_value"
      
          request = dataplex_v1.CreateDataScanRequest(
              parent="parent_value",
              data_scan=data_scan,
              data_scan_id="data_scan_id_value",
          )
      
          # Make the request
          operation = client.create_data_scan(request=request)
      
          print("Waiting for operation to complete...")
      
          response = operation.result()
      
          # Handle the response
          print(response)
      
      

      Ruby

      Ruby

      이 샘플을 사용해 보기 전에 Dataplex Universal Catalog 빠른 시작: 클라이언트 라이브러리 사용Ruby 설정 안내를 따르세요. 자세한 내용은 Dataplex Universal Catalog Ruby API 참고 문서를 참조하세요.

      Dataplex Universal Catalog에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

      require "google/cloud/dataplex/v1"
      
      ##
      # Snippet for the create_data_scan call in the DataScanService service
      #
      # This snippet has been automatically generated and should be regarded as a code
      # template only. It will require modifications to work:
      # - It may require correct/in-range values for request initialization.
      # - It may require specifying regional endpoints when creating the service
      # client as shown in https://cloud.google.com/ruby/docs/reference.
      #
      # This is an auto-generated example demonstrating basic usage of
      # Google::Cloud::Dataplex::V1::DataScanService::Client#create_data_scan.
      #
      def create_data_scan
        # Create a client object. The client can be reused for multiple calls.
        client = Google::Cloud::Dataplex::V1::DataScanService::Client.new
      
        # Create a request. To set request fields, pass in keyword arguments.
        request = Google::Cloud::Dataplex::V1::CreateDataScanRequest.new
      
        # Call the create_data_scan method.
        result = client.create_data_scan request
      
        # The returned object is of type Gapic::Operation. You can use it to
        # check the status of an operation, cancel it, or wait for results.
        # Here is how to wait for a response.
        result.wait_until_done! timeout: 60
        if result.response?
          p result.response
        else
          puts "No response received."
        end
      end

      REST

      데이터 프로필 스캔을 만들려면 dataScans.create 메서드를 사용합니다.

      테이블 스키마 내보내기

      데이터 프로필 스캔 결과를 기존 BigQuery 테이블로 내보내려면 데이터 프로필 스캔 결과가 다음 테이블 스키마와 호환되는지 확인합니다.

      열 이름 열 데이터 유형 하위 필드 이름(해당하는 경우) 하위 필드 데이터 유형 모드
      data_profile_scan struct/record resource_name string nullable //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan
      project_id string nullable test-project
      location string nullable us-central1
      data_scan_id string nullable test-datascan
      data_source struct/record resource_name string nullable

      항목 케이스: //dataplex.googleapis.com/projects/test-project/locations/europe-west2/lakes/test-lake/zones/test-zone/entities/test-entity

      테이블 케이스: //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table

      dataplex_entity_project_id string nullable test-project
      dataplex_entity_project_number integer nullable 123456789012
      dataplex_lake_id string nullable

      (소스가 항목인 경우에만 유효)

      test-lake

      dataplex_zone_id string nullable

      (소스가 항목인 경우에만 유효)

      test-zone

      dataplex_entity_id string nullable

      (소스가 항목인 경우에만 유효)

      test-entity

      table_project_id string nullable dataplex-table
      table_project_number int64 nullable 345678901234
      dataset_id string nullable

      (소스가 테이블인 경우에만 유효)

      test-dataset

      table_id string nullable

      (소스가 테이블인 경우에만 유효)

      test-table

      data_profile_job_id string nullable caeba234-cfde-4fca-9e5b-fe02a9812e38
      data_profile_job_configuration json trigger string nullable ondemand/schedule
      incremental boolean nullable true/false
      sampling_percent float nullable

      (0~100)

      20.0(20%를 나타냄)

      row_filter string nullable col1 >= 0 AND col2 < 10
      column_filter json nullable {"include_fields":["col1","col2"], "exclude_fields":["col3"]}
      job_labels json nullable {"key1":value1}
      job_start_time timestamp nullable 2023-01-01 00:00:00 UTC
      job_end_time timestamp nullable 2023-01-01 00:00:00 UTC
      job_rows_scanned integer nullable 7500
      column_name string nullable column-1
      column_type string nullable string
      column_mode string nullable repeated
      percent_null float nullable

      (0.0~100.0)

      20.0(20%를 나타냄)

      percent_unique float nullable

      (0.0~100.0)

      92.5

      min_string_length integer nullable

      (열 유형이 문자열인 경우에만 유효)

      10