자동 데이터 품질 사용

이 문서에서는 Knowledge Catalog (이전 명칭: Dataplex Universal Catalog) 데이터 품질 스캔을 사용하여 데이터 품질을 측정, 모니터링, 관리하는 방법을 설명합니다. 데이터 품질 검사를 사용하면 데이터의 완전성, 유효성, 일관성을 검증하는 프로세스를 자동화할 수 있습니다.

데이터 품질 검사를 사용하면 누락된 값을 확인하고, 값이 정규 표현식과 일치하거나 집합에 속하는지 확인하고, 고유성을 검증하거나, 이상치 감지와 같은 더 복잡한 유효성 검사를 위해 맞춤 SQL을 사용하는 규칙을 정의할 수 있습니다. 이 문서에서는 데이터 품질 스캔을 만들고 관리하는 방법을 설명합니다.

데이터 품질 스캔에 대해 자세히 알아보세요. 여러 스캔에서 데이터 품질 규칙을 재사용하는 방법을 자세히 알아보세요.

시작하기 전에

  1. Dataplex API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기

    API 사용 설정하기

  2. 선택사항: 데이터 프로필 스캔 결과를 기반으로 데이터 품질 규칙 권장사항을 생성하려면 데이터 프로필 스캔을 만들고 실행합니다.

필수 역할 및 권한

이 섹션에서는 Knowledge Catalog 데이터 품질 검사를 사용하는 데 필요한 IAM 역할과 권한을 설명합니다.

사용자 역할 및 권한

데이터 품질 검사를 실행하고 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

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

이러한 사전 정의된 역할에는 데이터 품질 스캔을 실행하고 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

데이터 품질 스캔을 실행하고 관리하려면 다음 권한이 필요합니다.

  • BigQuery 테이블에서 데이터 품질 스캔을 실행합니다.
    • bigquery.jobs.create 스캔 작업을 실행할 프로젝트에 대한 권한
    • 스캔할 BigQuery 테이블에 대한 bigquery.tables.get
    • 스캔할 BigQuery 테이블에 대한 bigquery.tables.getData
  • 데이터 품질 스캔 결과를 Knowledge Catalog에 게시:
    • 스캔된 테이블에 대한 bigquery.tables.update
    • dataplex.entryGroups.useDataQualityScorecardAspect 테이블과 동일한 위치에 있는 @bigquery 항목 그룹에 대한 권한
  • 프로젝트에서 DataScan을 만듭니다. dataplex.datascans.create
  • DataScan 삭제: 프로젝트에 대한 dataplex.datascans.delete
  • DataScan 메타데이터 보기: 프로젝트에 대한 dataplex.datascans.get 권한
  • 규칙 및 결과를 포함한 DataScan 세부정보 보기: 프로젝트에 대한 dataplex.datascans.getData
  • DataScan 목록 표시: 프로젝트에 대한 dataplex.datascans.list 권한
  • 프로젝트에서 DataScan 실행: dataplex.datascans.run on the project
  • 프로젝트에서 DataScan(dataplex.datascans.update) 업데이트
  • DataScan에서 IAM 정책 가져오기 또는 설정:
    • 프로젝트에 대한 dataplex.datascans.getIamPolicy 권한
    • 프로젝트에 대한 dataplex.datascans.setIamPolicy 권한

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

BigQuery 열 수준 액세스 정책으로 보호되는 열에 액세스해야 하는 경우 해당 열에 대한 권한도 필요합니다.

Knowledge Catalog 서비스 계정 역할 및 권한

데이터 품질 또는 데이터 프로필 스캔을 만들지 않았거나 이 프로젝트에 Knowledge Catalog 레이크가 없으면 gcloud beta services identity create --service=dataplex.googleapis.com을 실행하여 서비스 식별자를 만듭니다. 이 명령어는 Knowledge Catalog 서비스 식별자를 반환합니다(있는 경우).

데이터 품질 스캔이 포함된 프로젝트의 Knowledge Catalog 서비스 계정에 다양한 소스에서 데이터를 읽고 결과를 내보내는 데 필요한 권한이 있는지 확인하려면 관리자에게 데이터 품질 스캔이 포함된 프로젝트의 Knowledge Catalog 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.

  • BigQuery 테이블 데이터 읽기: 스캔할 테이블 및 규칙에서 참조하는 기타 테이블에 대한 BigQuery 데이터 뷰어 (roles/bigquery.dataViewer)
  • Google Cloud Lakehouse 테이블 데이터에서 Iceberg REST 카탈로그, SAP Business Data Cloud Delta Lake, Apache Hive 읽기: 스캔할 각 테이블과 규칙에서 참조되는 기타 테이블의 BigLake 뷰어 (roles/biglake.viewer)
  • 스캔 결과를 BigQuery 테이블로 내보내기: 결과 데이터 세트 및 테이블에 대한 BigQuery 데이터 편집자 (roles/bigquery.dataEditor)
  • Knowledge Catalog 레이크에 정리된 BigQuery 데이터를 스캔합니다.
  • Cloud Storage에서 BigQuery 외부 테이블을 스캔합니다. Cloud Storage 버킷의 스토리지 객체 뷰어 (roles/storage.objectViewer)

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

이러한 사전 정의된 역할에는 다양한 소스에서 데이터를 읽고 결과를 내보내는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

다양한 소스에서 데이터를 읽고 결과를 내보내려면 다음 권한이 필요합니다.

  • BigQuery 테이블 데이터 읽기:
    • BigQuery 테이블에 대한 bigquery.tables.get 권한
    • BigQuery 테이블에 대한 bigquery.tables.getData 권한
  • BigQuery 테이블로 스캔 결과 내보내기:
    • 결과 데이터 세트 및 테이블에 대한 bigquery.datasets.get 권한
    • 결과 데이터 세트 및 테이블에 대한 bigquery.tables.create 권한
    • 결과 데이터 세트 및 테이블에 대한 bigquery.tables.get 권한
    • 결과 데이터 세트 및 테이블에 대한 bigquery.tables.getData 권한
    • 결과 데이터 세트 및 테이블에 대한 bigquery.tables.update 권한
    • 결과 데이터 세트 및 테이블에 대한 bigquery.tables.updateData 권한
  • Knowledge Catalog 레이크에 정리된 BigQuery 데이터를 스캔합니다.
    • dataplex.lakes.list Dataplex 리소스
    • dataplex.lakes.get Dataplex 리소스
    • dataplex.zones.list Dataplex 리소스
    • dataplex.zones.get Dataplex 리소스
    • dataplex.entities.list Dataplex 리소스
    • dataplex.entities.get Dataplex 리소스
    • dataplex.operations.get Dataplex 리소스
  • Cloud Storage에서 BigQuery 외부 테이블을 스캔합니다.
    • Cloud Storage 버킷의 storage.buckets.get
    • Cloud Storage 버킷의 storage.objects.get

관리자는 데이터 품질 검사가 포함된 프로젝트의 Knowledge Catalog 서비스 계정에 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이러한 권한을 부여할 수도 있습니다.

BigQuery 열 수준 액세스 정책으로 보호되는 열에 액세스해야 하는 경우 Knowledge Catalog 서비스 계정에 해당 열에 대한 권한을 할당합니다.

테이블에 BigQuery 행 수준 액세스 정책이 사용 설정된 경우에는 Knowledge Catalog 서비스 계정에 표시되는 행만 스캔할 수 있습니다. 개별 사용자의 액세스 권한은 행 수준 정책에 따라 평가되지 않습니다.

네트워킹 요구사항

스캔을 실행하려면 스캔에 사용하는 VPC 서브넷에서 비공개 Google 액세스를 사용 설정해야 합니다. 서브넷을 지정하지 않은 경우 기본 서브넷에 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다.

데이터 품질 규칙 정의

다음을 사용하여 데이터 품질 규칙을 정의할 수 있습니다.

Google Cloud CLI를 사용하는 경우 JSON 또는 YAML 파일에서 이러한 규칙을 정의할 수 있습니다.

다음 섹션의 예시에서는 다양한 데이터 품질 규칙을 정의하는 방법을 보여줍니다. 이 규칙은 고객 트랜잭션에 대한 데이터가 포함된 샘플 테이블을 검증합니다. 테이블에 다음과 같은 스키마가 있다고 가정해 보겠습니다.

열 이름 열 유형 열 설명
transaction_timestamp 타임스탬프 트랜잭션 타임스탬프입니다. 테이블은 이 필드로 파티셔닝됩니다.
customer_id 문자열 8자리 문자 뒤에 16자리 숫자가 오는 형식의 고객 ID입니다.
transaction_id 문자열 트랜잭션 ID는 테이블 전체에서 고유해야 합니다.
currency_id 문자열 지원되는 통화 중 하나입니다. 통화 유형은 측정기준 표(dim_currency)에서 제공되는 통화 중 하나와 일치해야 합니다.
amount 부동 소수점 수 트랜잭션 금액입니다.
discount_pct 부동 소수점 수 할인율입니다. 이 값은 0~100 사이여야 합니다.

기본 제공 규칙 유형을 사용하여 데이터 품질 규칙 정의

다음 예시는 기본 제공 규칙 유형을 기반으로 합니다. Google Cloud 콘솔이나 API를 사용하여 기본 제공 규칙 유형을 기반으로 규칙을 만들 수 있습니다. Knowledge Catalog에서 이러한 규칙 중 일부를 추천할 수 있습니다.

열 이름 규칙 유형 추천 측정기준 규칙 파라미터
transaction_id 고유성 검사 고유성 기준: Not Applicable
amount Null 검사 완료도 기준: 100%
customer_id 정규식(정규 표현식) 검사 유효성 정규 표현식: ^[a-zA-Z]{8}[0-9]{16}$
기준: 100%
currency_id 값 설정 검사 유효성 대상 집합: USD,JPY,INR,GBP,CAN
기준: 100%

커스텀 SQL 규칙을 사용하여 데이터 품질 규칙 정의

커스텀 SQL 규칙을 빌드하려면 다음 프레임워크를 사용합니다.

  • 한 번에 하나의 행을 평가하는 규칙을 만드는 경우 Knowledge Catalog에서 SELECT COUNTIF(CUSTOM_SQL_EXPRESSION) FROM TABLE 쿼리를 평가할 때 성공적인 행 수를 생성하는 표현식을 만듭니다. Knowledge Catalog는 기준점에 대해 성공한 행 수를 확인합니다.

  • 행 전체에서 평가되거나 테이블 조건을 사용하는 규칙을 만드는 경우 Knowledge Catalog에서 SELECT IF(CUSTOM_SQL_EXPRESSION) FROM TABLE 쿼리를 평가할 때 성공이나 실패를 반환하는 표현식을 만듭니다.

  • 데이터 세트의 잘못된 상태를 평가하는 규칙을 만드는 경우 잘못된 행을 반환하는 문을 제공합니다. 행이 반환되면 규칙은 실패합니다. SQL 문에서 후행 세미콜론을 생략합니다.

  • 소스 테이블과 해당 필터를 명시적으로 언급하는 대신 규칙에서 데이터 참조 파라미터 ${data()}를 사용하여 데이터 소스 테이블과 모든 전제 조건 필터를 참조할 수 있습니다. 전제 조건 필터 예시에는 행 필터, 샘플링 비율, 증분 필터 등이 있습니다. ${data()} 파라미터는 대소문자를 구분합니다.

다음 예는 맞춤 SQL 규칙을 기반으로 합니다.

규칙 유형 규칙 설명 SQL 표현식
행 조건 discount_pct 값이 0~100 사이인지 확인합니다. 0 < discount_pctdiscount_pct < 100
행 조건 참조 확인을 통해 currency_id가 지원되는 통화 중 하나인지 검증합니다. currency_id in (select id from my_project_id.dim_dataset.dim_currency)
테이블 조건 평균 discount_pct가 30%~50% 사이인지 확인하는 집계 SQL 표현식입니다. 30<avg(discount) AND avg(discount) <50
행 조건 미래 날짜가 아닌지 확인합니다. TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
테이블 조건 BigQuery 사용자 정의 함수(UDF)를 통해 평균 트랜잭션 금액이 국가별 사전 정의된 값보다 작은지 확인합니다. 다음 명령어를 실행하여 (JavaScript) UDF를 만듭니다.
        CREATE OR REPLACE FUNCTION
        myProject.myDataset.average_by_country (
          country STRING, average FLOAT64)
        RETURNS BOOL LANGUAGE js AS R"""
        if (country = "CAN" && average < 5000){
          return 1
        } else if (country = "IND" && average < 1000){
          return 1
        } else { return 0 }
        """;
       
country=CAN의 평균 트랜잭션 금액을 확인하는 규칙 예시입니다.
        myProject.myDataset.average_by_country(
        "CAN",
        (SELECT avg(amount) FROM
          myProject.myDataset.transactions_table
            WHERE currency_id = 'CAN'
        ))
      
테이블 조건 discount_pct에서 이상치를 식별하는 BigQuery ML 예측 절입니다. customer, currency, transaction을 기준으로 할인이 적용되어야 하는지 확인합니다. 이 규칙은 예측이 실젯값과 일치하는지(최소 99% 이상) 확인합니다. 가정: 규칙을 사용하기 전에 ML 모델이 생성됩니다. 다음 명령어를 사용하여 ML 모델을 만듭니다.
  CREATE MODEL
  model-project-id.dataset-id.model-name
        OPTIONS(model_type='logistic_reg') AS
  SELECT
  IF(discount_pct IS NULL, 0, 1) AS label,
  IFNULL(customer_id, "") AS customer,
  IFNULL(currency_id, "") AS currency,
  IFNULL(amount, 0.0) AS amount
  FROM
  `data-project-id.dataset-id.table-names`
  WHERE transaction_timestamp < '2022-01-01';
  
다음 규칙은 예측 정확성이 99%를 초과하는지 확인합니다.
      SELECT
        accuracy > 0.99
      FROM
       ML.EVALUATE
        (MODEL model-project-id.dataset-id.model-name,
         (
          SELECT
            customer_id,
            currency_id,
            amount,
            discount_pct
          FROM
            data-project-id.dataset-id.table-names
          WHERE transaction_timestamp > '2022-01-01';
         )
        )
    
행 조건 discount_pct에서 이상치를 식별하는 BigQuery ML 예측 함수입니다. 이 함수는 customer, currency, transaction을 기준으로 할인을 적용해야 하는지 확인합니다. 이 규칙은 예측이 일치하지 않는 모든 일치하는 항목을 식별합니다. 가정: 규칙을 사용하기 전에 ML 모델이 생성됩니다. 다음 명령어를 사용하여 ML 모델을 만듭니다.
  CREATE MODEL
  model-project-id.dataset-id.model-name
        OPTIONS(model_type='logistic_reg') AS
  SELECT
  IF(discount_pct IS NULL, 0, 1) AS label,
  IFNULL(customer_id, "") AS customer,
  IFNULL(currency_id, "") AS currency,
  IFNULL(amount, 0.0) AS amount
  FROM
  `data-project-id.dataset-id.table-names`
  WHERE transaction_timestamp < '2022-01-01';
  
다음 규칙은 할인 예측이 모든 행의 실제 예측과 일치하는지 확인합니다.
       IF(discount_pct > 0, 1, 0)
          =(SELECT predicted_label FROM
           ML.PREDICT(
            MODEL model-project-id.dataset-id.model-name,
              (
                SELECT
                  customer_id,
                  currency_id,
                  amount,
                  discount_pct
                FROM
                  data-project-id.dataset-id.table-names AS t
                    WHERE t.transaction_timestamp =
                     transaction_timestamp
                   LIMIT 1
              )
            )
         )
    
SQL 어설션 할인율이 30 이하인 행이 있는지 확인하여 discount_pct가 현재 30%를 초과하는지 확인합니다. SELECT * FROM my_project_id.dim_dataset.dim_currency WHERE discount_pct <= 30 AND transaction_timestamp >= current_date()
SQL 어설션(데이터 참조 파라미터 포함)

discount_pct가 오늘 지원되는 모든 통화에서 30%를 초과하는지 확인합니다.

날짜 필터 transaction_timestamp >= current_date()는 데이터 소스 테이블에 행 필터로 적용됩니다.

데이터 참조 매개변수 ${data()}my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date()의 자리표시자 역할을 하며 행 필터를 적용합니다.

SELECT * FROM ${data()} WHERE discount_pct > 30

gcloud CLI를 사용하여 데이터 품질 규칙 정의

다음 YAML 파일 예시에서는 기본 제공 유형을 사용하는 샘플 규칙샘플 커스텀 SQL 규칙과 동일한 규칙 일부를 사용합니다. 이 YAML 파일에는 필터 및 샘플링 비율과 같은 데이터 품질 스캔의 기타 사양도 포함되어 있습니다. gcloud CLI를 사용하여 데이터 품질 스캔을 만들거나 업데이트할 때 이와 같은 YAML 파일을 --data-quality-spec-file 인수에 대한 입력으로 사용할 수 있습니다.

rules:
- uniquenessExpectation: {}
  column: transaction_id
  dimension: UNIQUENESS
- nonNullExpectation: {}
  column: amount
  dimension: COMPLETENESS
  threshold: 1
- regexExpectation:
    regex: '^[a-zA-Z]{8}[0-9]{16}$'
  column : customer_id
  ignoreNull : true
  dimension : VALIDITY
  threshold : 1
- setExpectation :
    values :
    - 'USD'
    - 'JPY'
    - 'INR'
    - 'GBP'
    - 'CAN'
  column : currency_id
  ignoreNull : true
  dimension : VALIDITY
  threshold : 1
- rangeExpectation:
    minValue : '0'
    maxValue : '100'
  column : discount_pct
  ignoreNull : true
  dimension : VALIDITY
  threshold : 1
- rowConditionExpectation:
    sqlExpression : 0 < `discount_pct` AND `discount_pct` < 100
  column: discount_pct
  dimension: VALIDITY
  threshold: 1
- rowConditionExpectation:
    sqlExpression : currency_id in (select id from `my_project_id.dim_dataset.dim_currency`)
  column: currency_id
  dimension: VALIDITY
  threshold: 1
- tableConditionExpectation:
    sqlExpression : 30 < avg(discount_pct) AND avg(discount_pct) < 50
  dimension: VALIDITY
- rowConditionExpectation:
    sqlExpression : TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
  column: transaction_timestamp
  dimension: VALIDITY
  threshold: 1
- sqlAssertion:
    sqlStatement : SELECT * FROM `my_project_id.dim_dataset.dim_currency` WHERE discount_pct > 100
  dimension: VALIDITY
  debugQueries:
  - sqlStatement: SELECT MAX(discount_pct) FROM `my_project_id.dim_dataset.dim_currency`
samplingPercent: 50
rowFilter: discount_pct > 100
postScanActions:
  bigqueryExport:
    resultsTable: projects/my_project_id/datasets/dim_dataset/tables/dim_currency
  notificationReport:
    recipients:
      emails:
      - '222larabrown@gmail.com'
      - 'cloudysanfrancisco@gmail.com'
    scoreThresholdTrigger:
      scoreThreshold: 50
    jobFailureTrigger: {}
    jobEndTrigger: {}
catalogPublishingEnabled: true

실행 ID 구성

기본적으로 데이터 품질 스캔은 Knowledge Catalog 서비스 계정을 사용하여 실행됩니다. 이를 재정의하여 커스텀 서비스 계정 또는 자체 최종 사용자 인증 정보 (EUC)를 사용할 수 있습니다.

맞춤 실행 ID를 사용하면 스캔 요금이 청구되는 방식이 변경됩니다. 맞춤 실행 ID를 지정하면 스캔과 관련된 컴퓨팅 및 스토리지 비용이 표준 Knowledge Catalog Premium SKU를 우회하여 BigQuery 프로젝트에 직접 청구됩니다.

맞춤 실행 ID에 필요한 권한

맞춤 서비스 계정을 구성하거나 최종 사용자 사용자 인증 정보를 사용하려면 다음 추가 Identity and Access Management (IAM) 권한이 있어야 합니다.

  • 커스텀 서비스 계정을 사용하려면 다음이 필요합니다.
    • 서비스 계정이 포함된 프로젝트에 부여된 iam.serviceAccounts.actAs 권한 (예: roles/iam.serviceAccountUser)
    • 프로젝트의 서비스 에이전트(service-PROJECT_NUMBER@gcp-sa-dataplex.)에는 커스텀 서비스 계정에 대한 iam.serviceAccounts.getAccessToken 권한이 필요합니다 (예: roles/iam.serviceAccountTokenCreator 역할 보유).
    • 커스텀 서비스 계정에는 테이블에서 스캔할 수 있는 bigquery.tables.getData, 스캔 프로젝트의 bigquery.jobs.insert, 내보내기 데이터 세트의 bigquery.dataEditor (내보내기를 사용하는 경우)이 필요합니다.
  • 최종 사용자 인증 정보를 사용하려면 다음이 필요합니다.
    • 스캔할 테이블에 대한 bigquery.tables.getData 권한
    • 스캔 프로젝트의 bigquery.jobs.insert
    • 내보내기 데이터 세트의 bigquery.dataEditor (내보내기를 사용하는 경우)

실행 ID를 구성하려면 다음 옵션 중 하나를 선택합니다.

콘솔

Google Cloud 콘솔에서 실행 ID를 구성하려면 데이터 품질 스캔을 만들 때 ID를 선택하세요.

실행 ID 섹션에서 다음 중 하나를 선택합니다.

  • Dataplex 서비스 에이전트: 기본 동작입니다.
  • 서비스 계정: 사용할 서비스 계정의 이메일 주소를 입력합니다.
  • 사용자 인증 정보: 자체 사용자 인증 정보를 사용하여 스캔을 실행합니다.

REST

커스텀 서비스 계정을 사용하려면 create 요청 중에 executionIdentity 객체를 DataScan 리소스 정의에 추가하세요.

"executionIdentity": {
  "serviceAccount": {
     "email": "YOUR_SERVICE_ACCOUNT_EMAIL"
  }
}
  

다음을 바꿉니다.

  • YOUR_SERVICE_ACCOUNT_EMAIL: 사용할 서비스 계정의 이메일 주소

최종 사용자 인증 정보를 사용하려면 대신 userCredential 객체를 지정하세요.

"executionIdentity": {
  "userCredential": {}
}
  

데이터 품질 스캔 만들기

콘솔

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

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

  2. 데이터 품질 스캔 만들기를 클릭합니다.

  3. 스캔 정의 창에서 다음 필드를 작성합니다.

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

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

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

    4. 테이블 필드에서 찾아보기를 클릭합니다. 스캔할 테이블을 선택한 후 선택을 클릭합니다. 표준 BigQuery, Iceberg REST 카탈로그, SAP BDC Delta, Hive on Google Cloud Lakehouse 테이블만 지원됩니다.

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

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

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

      • 증분을 선택한 경우: 타임스탬프 열 필드에서 새 레코드가 추가될 때 증가하고 새 레코드를 식별하는 데 사용할 수 있는 BigQuery 테이블의 DATE 또는 TIMESTAMP 유형 열을 선택합니다. 테이블을 파티셔닝하는 열일 수 있습니다.
    6. 선택사항: 데이터를 필터링하려면 행 필터링 체크박스를 선택합니다. GoogleSQL 문법의 WHERE의 일부로 사용될 수 있는 유효한 SQL 표현식으로 구성된 행 필터를 제공합니다. 예를 들면 col1 >= 0입니다. 필터는 여러 열 조건의 조합일 수 있습니다. 예를 들면 col1 >= 0 AND col2 < 10입니다.

    7. 데이터를 샘플링하려면 샘플링 크기 목록에서 샘플링 비율을 선택합니다. 소수점 이하 3자리까지 0.0%~100.0% 사이의 백분율 값을 선택합니다. 데이터 세트가 클수록 낮은 샘플링 비율을 선택합니다. 예를 들어 1PB 테이블의 경우 0.1%~1.0% 사이의 값을 입력하면 데이터 품질 스캔 샘플에서 데이터 1~10TB를 샘플링합니다. 증분 데이터 스캔의 경우 데이터 품질 스캔은 최신 증분에 샘플링을 적용합니다.

    8. 선택사항: 데이터 품질 스캔 결과를 Knowledge Catalog 메타데이터로 게시하려면 Knowledge Catalog에 결과 게시 체크박스를 선택합니다.

      소스 테이블의 BigQuery 및 Knowledge Catalog 페이지에 있는 데이터 품질 탭에서 최신 스캔 결과를 확인할 수 있습니다. 사용자가 게시된 스캔 결과에 액세스할 수 있게 하려면 이 문서의 데이터 품질 스캔 결과에 대한 액세스 권한 부여 섹션을 참고하세요.

    9. 사용자 인증 정보 유형실행 ID 구성을 참고하세요.

    10. 규칙을 사용하여 데이터 품질 스캔을 만들려면 규칙 유형 > 항목 기반 규칙으로 만들기를 선택합니다.

    11. 일정 섹션에서 다음 옵션 중 하나를 선택합니다.

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

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

      • 일회성 실행: 지금 데이터 품질 스캔을 한 번 실행하고 자동 삭제 시간 후에 스캔을 삭제합니다. 이 기능은 프리뷰 버전으로 제공됩니다.

        • 스캔 후 결과 자동 삭제 설정: 자동 삭제 시간은 스캔이 실행된 시점과 스캔이 삭제된 시점 사이의 시간입니다. 자동 삭제 시간이 지정되지 않은 데이터 품질 검사는 실행 후 24시간이 지나면 자동으로 삭제됩니다. 자동 삭제 시간은 0초(즉시 삭제)에서 365일까지 다양합니다.
    12. 계속을 클릭합니다.

  4. 데이터 품질 규칙 창에서 이 데이터 품질 스캔 구성을 위한 규칙을 정의합니다.

    1. 규칙 추가를 클릭한 후 다음 옵션 중에서 선택합니다.

      • 프로필 기반 추천: 기존 데이터 프로파일링 스캔에 기반을 둔 추천으로 규칙을 빌드합니다.

        1. 열 선택: 권장 규칙을 가져올 열을 선택합니다.

        2. 스캔 프로젝트 선택: 데이터 프로필 스캔이 데이터 품질 스캔을 만드는 프로젝트와 다른 프로젝트에 있으면 프로필 스캔을 가져올 프로젝트를 선택합니다.

        3. 프로필 결과 선택: 프로필 결과를 하나 이상 선택한 후 확인을 클릭합니다. 그러면 시작 지점으로 사용할 수 있는 추천 규칙 목록이 채워집니다.

        4. 추가할 규칙의 체크박스를 선택한 후 선택을 클릭합니다. 선택하면 규칙이 현재 규칙 목록에 추가됩니다. 그런 다음 규칙을 수정할 수 있습니다.

      • 기본 제공 규칙 유형: 사전 정의된 규칙에서 규칙을 빌드합니다. 사전 정의된 규칙 목록을 참조하세요.

        1. 열 선택: 규칙을 선택할 열을 선택합니다.

        2. 규칙 유형 선택: 선택할 규칙 유형을 선택한 후 확인을 클릭합니다. 표시되는 규칙 유형은 선택한 열에 따라 다릅니다.

        3. 추가할 규칙의 체크박스를 선택한 후 선택을 클릭합니다. 선택하면 규칙이 현재 규칙 목록에 추가됩니다. 그런 다음 규칙을 수정할 수 있습니다.

      • SQL 행 확인 규칙: 각 행에 적용할 커스텀 SQL 규칙을 만듭니다.

        1. 측정기준에서 측정기준 1개를 선택합니다.

        2. 통과 기준에서 검사를 통과해야 하는 레코드의 백분율을 선택합니다.

        3. 열 이름에서 열을 선택합니다.

        4. SQL 표현식 제공 필드에 불리언 true(통과) 또는 false(실패)로 평가되는 SQL 표현식을 입력합니다. 자세한 내용은 지원되는 커스텀 SQL 규칙 유형데이터 품질 규칙 정의의 예시를 참조하세요.

        5. 추가를 클릭합니다.

      • SQL 집계 확인 규칙: 커스텀 SQL 테이블 조건 규칙을 만듭니다.

        1. 측정기준에서 측정기준 하나를 선택합니다.

        2. 열 이름에서 열을 선택합니다.

        3. SQL 표현식 제공 필드에 불리언 true(통과) 또는 false(실패)로 평가되는 SQL 표현식을 입력합니다. 자세한 내용은 지원되는 커스텀 SQL 규칙 유형데이터 품질 규칙 정의의 예시를 참조하세요.

        4. 추가를 클릭합니다.

      • SQL 어설션 규칙: 잘못된 데이터 상태를 확인하는 커스텀 SQL 어설션 규칙을 만듭니다.

        1. 측정기준에서 측정기준 하나를 선택합니다.

        2. 선택사항: 열 이름에서 열을 선택합니다.

        3. SQL 문 제공 필드에 잘못된 상태와 일치하는 행을 반환하는 SQL 문을 입력합니다. 행이 반환되면 이 규칙은 실패합니다. SQL 문에서 후행 세미콜론을 생략합니다. 자세한 내용은 지원되는 커스텀 SQL 규칙 유형데이터 품질 규칙 정의의 예시를 참조하세요.

        4. 추가를 클릭합니다.

    2. 선택사항: 데이터 품질 규칙의 경우 모니터링 및 알림에 사용할 커스텀 규칙 이름과 설명을 할당할 수 있습니다. 이렇게 하려면 규칙을 수정하고 다음 세부정보를 지정합니다.

      • 규칙 이름: 커스텀 규칙 이름을 입력합니다(최대 63자(영문 기준)). 규칙 이름에 문자(a~z, A~Z), 숫자(0~9), 하이픈(-)을 사용할 수 있으며 문자로 시작하고 숫자나 문자로 끝나야 합니다.
      • 설명: 최대 길이가 1,024자인 규칙 설명을 입력합니다.
    3. 이전 단계를 반복하여 데이터 품질 스캔에 규칙을 추가합니다. 작업을 마치면 계속을 클릭합니다.

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

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

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

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

  7. 선택사항: 이메일 알림 보고서를 설정하여 데이터 품질 스캔 작업의 상태와 결과를 사용자에게 알립니다. 알림 보고서 섹션에서 이메일 ID 추가를 클릭하고 이메일 주소를 최대 5개까지 입력합니다. 그런 다음 보고서를 전송할 시나리오를 선택합니다.

    • 품질 점수(<=): 지정된 목표 점수보다 낮은 데이터 품질 점수로 작업이 성공하면 보고서를 전송합니다. 목표 품질 점수를 0~100 사이로 입력합니다.
    • 작업 실패: 데이터 품질 결과와 관계없이 작업 자체가 실패하면 보고서를 전송합니다.
    • 작업 완료(성공 또는 실패): 데이터 품질 결과와 관계없이 작업이 종료되면 보고서를 전송합니다.
  8. 만들기를 클릭합니다.

    스캔이 생성된 후 언제든지 지금 실행을 클릭하여 실행할 수 있습니다.

gcloud

데이터 품질 스캔을 만들려면 gcloud dataplex datascans create data-quality 명령어를 사용합니다.

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

gcloud dataplex datascans create data-quality DATASCAN \
    --location=LOCATION \
    --data-quality-spec-file=DATA_QUALITY_SPEC_FILE \
    --data-source-entity=DATA_SOURCE_ENTITY

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

gcloud dataplex datascans create data-quality DATASCAN \
    --location=LOCATION \
    --data-quality-spec-file=DATA_QUALITY_SPEC_FILE \
    --data-source-resource=DATA_SOURCE_RESOURCE

다음 변수를 바꿉니다.

  • DATASCAN: 데이터 품질 스캔의 이름입니다.
  • LOCATION: 데이터 품질 스캔을 만들 Google Cloud 리전
  • DATA_QUALITY_SPEC_FILE: 데이터 품질 스캔의 사양이 포함된 JSON 또는 YAML 파일의 경로입니다. 파일은 로컬 파일이거나 프리픽스 gs://가 추가된 Cloud Storage 경로일 수 있습니다. 이 파일을 사용하여 스캔 데이터 품질 규칙을 지정합니다. 이 파일에서 필터, 샘플링 비율, 스캔 후 작업(예: BigQuery로 내보내기 또는 이메일 알림 보고서 전송)과 같은 추가 세부정보를 지정할 수도 있습니다. JSON 표현 문서YAML 표현 예시를 참조하세요.
  • DATA_SOURCE_ENTITY: 데이터 품질 스캔의 데이터가 포함된 Knowledge 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#

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

Knowledge 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

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

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


//go:build examples

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

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

Knowledge 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();
    }
  }
}

Node.js

Node.js

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

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

// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// ** This file is automatically generated by gapic-generator-typescript. **
// ** https://github.com/googleapis/gapic-generator-typescript **
// ** All changes to this file may be overwritten. **



'use strict';

function main(parent, dataScan) {
  /**
   * 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.
   * TODO(developer): Uncomment these variables before running the sample.
   */
  /**
   *  Required. The resource name of the parent location:
   *  `projects/{project}/locations/{location_id}`
   *  where `project` refers to a *project_id* or *project_number* and
   *  `location_id` refers to a Google Cloud region.
   */
  // const parent = 'abc123'
  /**
   *  Required. DataScan resource.
   */
  // const dataScan = {}
  /**
   *  Optional. DataScan identifier. If not provided, a unique ID will be
   *  generated with the prefix "data-scan-".
   *  * Must contain only lowercase letters, numbers and hyphens.
   *  * Must start with a letter.
   *  * Must end with a number or a letter.
   *  * Must be between 1-63 characters.
   *  * Must be unique within the customer project / location.
   */
  // const dataScanId = 'abc123'
  /**
   *  Optional. Only validate the request, but do not perform mutations.
   *  The default is `false`.
   */
  // const validateOnly = true

  // Imports the Dataplex library
  const {DataScanServiceClient} = require('@google-cloud/dataplex').v1;

  // Instantiates a client
  const dataplexClient = new DataScanServiceClient();

  async function callCreateDataScan() {
    // Construct request
    const request = {
      parent,
      dataScan,
    };

    // Run request
    const [operation] = await dataplexClient.createDataScan(request);
    const [response] = await operation.promise();
    console.log(response);
  }

  callCreateDataScan();
}

process.on('unhandledRejection', err => {
  console.error(err.message);
  process.exitCode = 1;
});
main(...process.argv.slice(2));

Python

Python

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

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

# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import google.api_core.exceptions
from google.cloud import dataplex_v1


def create_data_quality_scan_global(
    project_id: str,
    dataset_id: str,
    table_id: str,
    location: str,
    column_id_1: str,
    column_id_2: str,
) -> None:
    """Creates a Dataplex Data Quality Scan using global API endpoint routing.

    Args:
        project_id (str): Google Cloud project ID where the scan is created.
        dataset_id (str): Target BigQuery dataset ID.
        table_id (str): Target BigQuery table ID to scan.
        location (str): Google Cloud region where serverless compute runs.
        column_id_1 (str): Name of the first column to evaluate.
        column_id_2 (str): Name of the second column to evaluate.
    """
    client = dataplex_v1.DataScanServiceClient()

    parent = client.common_location_path(project=project_id, location=location)

    # A bigquery table with at least 2 columns is assumed.
    bigquery_table = (
        f"//bigquery.googleapis.com/projects/{project_id}"
        f"/datasets/{dataset_id}/tables/{table_id}"
    )

    data_quality_spec = dataplex_v1.DataQualitySpec(
        rules=[
            dataplex_v1.DataQualityRule(
                name="global-null-assertion",
                dimension="COMPLETENESS",
                description="Fails if any row contains a null value",
                sql_assertion=dataplex_v1.DataQualityRule.SqlAssertion(
                    # Use ${data()} as the placeholder for the table Dataplex is scanning
                    sql_statement=(
                        "SELECT * FROM ${data()} "
                        f"WHERE {column_id_1} IS NULL OR {column_id_2} IS NULL"
                    )
                ),
            )
        ]
    )

    data_scan = dataplex_v1.DataScan(
        display_name="Global Data Quality Scan",
        data=dataplex_v1.DataSource(resource=bigquery_table),
        data_quality_spec=data_quality_spec,
    )

    request = dataplex_v1.CreateDataScanRequest(parent=parent, data_scan=data_scan)

    try:
        operation = client.create_data_scan(request=request)
        print(operation.result())
    except google.api_core.exceptions.AlreadyExists:
        print("A scan with this ID already exists.")
    except google.api_core.exceptions.InvalidArgument as e:
        print(f"Your scan configuration is invalid: {e}")
    except google.api_core.exceptions.GoogleAPIError as e:
        print(f"Unexpected exception: {e}")

Ruby

Ruby

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

Knowledge 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 메서드를 사용합니다.

다음 요청은 일회성 데이터 품질 스캔을 만듭니다.

POST https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataScans?data_scan_id=DATASCAN_ID

{
"data": {
  "resource": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
},
"type": "DATA_QUALITY",
"executionSpec": {
  "trigger": {
    "oneTime": {
      "ttl_after_scan_completion": "120s"
    }
  }
},
"dataQualitySpec": {
  "rules": [
    {
      "nonNullExpectation": {},
      "column": "COLUMN_NAME",
      "dimension": "DIMENSION",
      "threshold": 1
    }
  ],
  "filter": "FILTER_CONDITION"
}
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 데이터 품질 스캔을 만들 리전입니다.
  • DATASCAN_ID: 데이터 품질 스캔의 ID입니다.
  • DATASET_ID: BigQuery 데이터 세트의 ID입니다.
  • TABLE_ID: BigQuery 테이블의 ID입니다.
  • COLUMN_NAME: 규칙의 열 이름입니다.
  • DIMENSION: 규칙의 측정기준입니다(예: VALIDITY).
  • FILTER_CONDITION: 선택적으로 규칙을 실행하는 선택적 AIP-160 필터 문자열입니다 (예: name = \"RULE_NAME\").

데이터 프로파일링 스캔의 결과를 기반으로 하는 규칙 권장사항을 사용하여 데이터 품질 스캔 규칙을 빌드하려면 데이터 프로파일링 스캔에서 dataScans.jobs.generateDataQualityRules 메서드를 호출하여 권장사항을 가져옵니다.

테이블 스키마 내보내기

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

열 이름 열 데이터 유형 하위 필드 이름
(해당하는 경우)
하위 필드 데이터 유형 모드
data_quality_scan struct/record resource_name string nullable //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan
project_id string nullable dataplex-back-end-dev-project
location string nullable us-central1
data_scan_id string nullable test-datascan
display_name string nullable datascan-display-name
data_source struct/record resource_name string nullable 항목 케이스:
//dataplex.googleapis.com/projects/dataplex-back-end-dev-project/locations/europe-west2/lakes/a0-datascan-test-lake/zones/a0-datascan-test-zone/entities/table1

테이블 케이스: //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table
dataplex_entity_project_id string nullable dataplex-back-end-dev-project
dataplex_entity_project_number integer nullable 123456789
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 test-project
table_project_number integer nullable 987654321
dataset_id string nullable (소스가 테이블인 경우에만 유효)
test-dataset
table_id string nullable (소스가 테이블인 경우에만 유효)
test-table
data_quality_job_id string nullable caeba234-cfde-4fca-9e5b-fe02a9812e38
data_quality_job_configuration json nullable {"trigger": "ondemand", "incremental": true}
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_quality_result struct/record passed boolean nullable true/false
score float null 허용 90.8
incremental_start string nullable 2023-01-01T00:00:00
incremental_end string nullable 2024-01-01T00:00:00
job_dimension_result json nullable {"ACCURACY":{"passed":true,"score":100},"CONSISTENCY":{"passed":false,"score":60}}
job_rows_scanned integer nullable 7500
rule_name string nullable test-rule
rule_description string nullable Test rule description
rule_type string nullable Range Check
rule_evaluation_type string nullable Per row
rule_column string nullable Rule only attached to a certain column
rule_dimension string nullable UNIQUENESS
rule_threshold_percent float nullable (0.0~100.0)
Rule-threshold-pct in API * 100
rule_parameters json nullable {min: 24, max:5345}
rule_passed boolean nullable true
rule_rows_evaluated integer nullable 7400
rule_rows_passed integer nullable 3
rule_rows_passed_percent float nullable (0.0~100.0)
80.0 (80%를 나타냄)
rule_rows_null integer nullable 4
rule_failed_records_query string nullable "SELECT * FROM `test-project.test-dataset.test-table` WHERE (NOT((`cTime` >= '15:31:38.776361' and `cTime` <= '19:23:53.754823') IS TRUE));"
created_on timestamp nullable 2023-01-01 00:00:00 UTC
last_updated timestamp nullable 2023-01-01 00:00:00 UTC
rule_assertion_row_count integer nullable 10
debug_queries struct/record description string nullable Test debug query description
sql_statement string nullable SELECT MIN(col1) AS min_col1, AVG(col1) FROM ${data()}
debug_query_results struct/record repeated [{"name": "min_col1", "type": "INTEGER", "value": "5"}, {"type": "FLOAT", "value": "7"}]
name string nullable 쿼리 결과 열의 이름입니다(예: min_col1).
type string nullable 쿼리 결과 열의 유형입니다(예: INTEGER).
value string nullable 쿼리 결과 열의 값(예: 5)
rule_attributes json nullable {"key": "value"}
rule_source struct/record rule_path_elements struct/record repeated [{"entry_source": {"entry_type": "bigquery_table"}}]
entry_source struct/record nullable {"entry_type": "bigquery_table"}
  ↳ entry_type string nullable bigquery_table
  ↳ entry string nullable projects/test-project/locations/us/entryGroups/@bigquery/entries/test-table
  ↳ display_name string nullable test-table
entry_link_source struct/record nullable {"entry_link_type": "table_spec"}
  ↳ entry_link_type string nullable table_spec
  ↳ entry_link string nullable projects/test-project/locations/us/entryLinks/test-link

데이터 품질 스캔 작업에 BigQueryExport를 구성할 때 다음 가이드라인을 따르세요.

  • resultsTable 필드에 //bigquery.googleapis.com/projects/{project-id}/datasets/{dataset-id}/tables/{table-id} 형식을 사용합니다.
  • BigQuery 표준 테이블을 사용합니다.
  • 스캔을 만들거나 업데이트할 때 테이블이 없으면 Knowledge Catalog에서 테이블을 만듭니다.
  • 기본적으로 테이블의 job_start_time 열은 매일 파티션을 나눕니다.
  • 테이블을 다른 구성으로 파티셔닝하려거나 파티션을 원하지 않는 경우 필요한 스키마와 구성으로 테이블을 다시 만든 후 미리 생성된 테이블을 결과 테이블로 제공합니다.
  • 결과 테이블이 소스 테이블과 같은 위치에 있는지 확인합니다.
  • 프로젝트에 VPC-SC가 구성되어 있으면 결과 테이블이 소스 테이블과 동일한 VPC-SC 경계에 있어야 합니다.
  • 스캔 실행 단계 중에 테이블이 수정되면 현재 실행 중인 작업이 이전 결과 테이블로 내보내지고 테이블 변경사항이 다음 스캔 작업에서 적용됩니다.
  • 테이블 스키마를 수정하지 마세요. 맞춤설정된 열이 필요하면 테이블에 뷰를 만듭니다.
  • 비용을 줄이려면 사용 사례에 따라 파티션에 만료 시간을 설정합니다. 자세한 내용은 파티션 만료 시간 설정 방법을 참조하세요.

데이터 품질 스캔 실행

콘솔

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

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

  2. 실행할 데이터 품질 스캔을 클릭합니다.

  3. 지금 실행을 클릭합니다.

gcloud

데이터 품질 스캔을 실행하려면 gcloud dataplex datascans run 명령어를 사용합니다.

gcloud dataplex datascans run DATASCAN \
--location=LOCATION \

다음 변수를 바꿉니다.

  • LOCATION: 데이터 품질 스캔이 생성된 Google Cloud 리전
  • DATASCAN: 데이터 품질 스캔 이름

C#

C#

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

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

using Google.Cloud.Dataplex.V1;

public sealed partial class GeneratedDataScanServiceClientSnippets
{
    /// <summary>Snippet for RunDataScan</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 RunDataScanRequestObject()
    {
        // Create client
        DataScanServiceClient dataScanServiceClient = DataScanServiceClient.Create();
        // Initialize request argument(s)
        RunDataScanRequest request = new RunDataScanRequest
        {
            DataScanName = DataScanName.FromProjectLocationDataScan("[PROJECT]", "[LOCATION]", "[DATASCAN]"),
        };
        // Make the request
        RunDataScanResponse response = dataScanServiceClient.RunDataScan(request);
    }
}

Go

Go

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

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


//go:build examples

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.RunDataScanRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#RunDataScanRequest.
	}
	resp, err := c.RunDataScan(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

자바

Java

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

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

import com.google.cloud.dataplex.v1.DataScanName;
import com.google.cloud.dataplex.v1.DataScanServiceClient;
import com.google.cloud.dataplex.v1.RunDataScanRequest;
import com.google.cloud.dataplex.v1.RunDataScanResponse;

public class SyncRunDataScan {

  public static void main(String[] args) throws Exception {
    syncRunDataScan();
  }

  public static void syncRunDataScan() 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()) {
      RunDataScanRequest request =
          RunDataScanRequest.newBuilder()
              .setName(DataScanName.of("[PROJECT]", "[LOCATION]", "[DATASCAN]").toString())
              .build();
      RunDataScanResponse response = dataScanServiceClient.runDataScan(request);
    }
  }
}

Python

Python

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

Knowledge 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_run_data_scan():
    # Create a client
    client = dataplex_v1.DataScanServiceClient()

    # Initialize request argument(s)
    request = dataplex_v1.RunDataScanRequest(
        name="name_value",
    )

    # Make the request
    response = client.run_data_scan(request=request)

    # Handle the response
    print(response)

Ruby

Ruby

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

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

require "google/cloud/dataplex/v1"

##
# Snippet for the run_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#run_data_scan.
#
def run_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::RunDataScanRequest.new

  # Call the run_data_scan method.
  result = client.run_data_scan request

  # The returned object is of type Google::Cloud::Dataplex::V1::RunDataScanResponse.
  p result
end

REST

데이터 품질 스캔을 실행하려면 dataScans.run 메서드를 사용합니다.

Airflow

Managed Service for Apache Airflow (Cloud Composer)에서 방향성 비순환 그래프 (DAG)를 사용하여 데이터 품질 검사를 실행하려면 DataplexRunDataQualityScanOperator를 사용하세요.

from datetime import datetime
from airflow import DAG
from airflow.providers.google.cloud.operators.dataplex import DataplexRunDataQualityScanOperator

with DAG(
  "dataplex_auto_dq_scan",
  start_date=datetime(2026, 1, 1),
  schedule_interval="@daily",
  catchup=False,
) as dag:

  run_dq_scan = DataplexRunDataQualityScanOperator(
      task_id="run_dataplex_dq_scan",
      project_id="PROJECT_ID",
      region="REGION",
      data_scan_id="DATASCAN_ID",
  )

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: 데이터 품질 스캔이 생성된 Google Cloud 리전
  • DATASCAN_ID: 데이터 품질 스캔의 ID입니다.

데이터 품질 스캔 작업 취소

데이터 품질 스캔 작업이 예상보다 오래 실행되거나 잘못된 구성으로 시작된 경우 취소할 수 있습니다. 이는 최선의 노력에 해당하는 작업입니다. 작업이 이미 종료 상태 (예: SUCCEEDED 또는 FAILED)인 경우 취소 요청은 무시됩니다.

필수 역할 및 권한

데이터 품질 스캔 작업을 취소하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Dataplex 편집자(roles/dataplex.editor) 또는 Dataplex DataScan 관리자(roles/dataplex.dataScanAdmin) IAM 역할을 부여해 달라고 요청하세요.

작업 취소

REST API를 사용하여 실행 중이거나 대기 중인 데이터 품질 스캔 작업을 취소할 수 있습니다.

콘솔

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

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

  2. 취소하려는 작업이 포함된 데이터 품질 스캔의 이름을 클릭합니다.

  3. 작업 기록 탭에서 상태가 실행 중 또는 대기 중인 작업을 찾습니다.

  4. 작업과 연결된 취소를 클릭합니다.

REST

projects.locations.dataScans.jobs.cancel 메서드를 사용합니다.

POST https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataScans/DATASCAN_ID/jobs/JOB_ID:cancel

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 데이터 스캔이 있는 리전입니다.
  • DATASCAN_ID: 데이터 스캔의 ID입니다.
  • JOB_ID: 취소할 작업의 ID입니다.

데이터 품질 스캔 결과 보기

콘솔

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

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

  2. 데이터 품질 스캔 이름을 클릭합니다.

    • 개요 섹션에는 스캔이 실행된 시기, 각 작업에서 스캔된 레코드 수, 모든 데이터 품질 검사 통과 여부, 실패한 경우 실패한 데이터 품질 검사 수를 포함한 최근 작업에 대한 정보가 표시됩니다.

    • 데이터 품질 스캔 구성 섹션에 스캔 세부정보가 표시됩니다.

  3. 통과한 규칙 비율을 나타내는 데이터 품질 점수, 실패한 규칙, 작업 로그와 같은 작업에 대한 세부정보를 확인하려면 작업 기록 탭을 클릭합니다. 그런 다음 작업 ID를 클릭합니다.

gcloud

데이터 품질 스캔 작업 결과를 보려면 gcloud dataplex datascans jobs describe 명령어를 사용합니다.

gcloud dataplex datascans jobs describe JOB \
--location=LOCATION \
--datascan=DATASCAN \
--view=FULL

다음 변수를 바꿉니다.

  • JOB: 데이터 품질 스캔 작업의 작업 ID입니다.
  • LOCATION: 데이터 품질 스캔이 생성된 Google Cloud 리전입니다.
  • DATASCAN: 작업이 속한 데이터 품질 스캔의 이름입니다.
  • --view=FULL: 스캔 작업 결과를 보려면 FULL을 지정합니다.

C#

C#

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

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

using Google.Cloud.Dataplex.V1;

public sealed partial class GeneratedDataScanServiceClientSnippets
{
    /// <summary>Snippet for GetDataScan</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 GetDataScanRequestObject()
    {
        // Create client
        DataScanServiceClient dataScanServiceClient = DataScanServiceClient.Create();
        // Initialize request argument(s)
        GetDataScanRequest request = new GetDataScanRequest
        {
            DataScanName = DataScanName.FromProjectLocationDataScan("[PROJECT]", "[LOCATION]", "[DATASCAN]"),
            View = GetDataScanRequest.Types.DataScanView.Unspecified,
        };
        // Make the request
        DataScan response = dataScanServiceClient.GetDataScan(request);
    }
}

Go

Go

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

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


//go:build examples

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.GetDataScanRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#GetDataScanRequest.
	}
	resp, err := c.GetDataScan(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

자바

Java

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

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

import com.google.cloud.dataplex.v1.DataScan;
import com.google.cloud.dataplex.v1.DataScanName;
import com.google.cloud.dataplex.v1.DataScanServiceClient;
import com.google.cloud.dataplex.v1.GetDataScanRequest;

public class SyncGetDataScan {

  public static void main(String[] args) throws Exception {
    syncGetDataScan();
  }

  public static void syncGetDataScan() 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()) {
      GetDataScanRequest request =
          GetDataScanRequest.newBuilder()
              .setName(DataScanName.of("[PROJECT]", "[LOCATION]", "[DATASCAN]").toString())
              .build();
      DataScan response = dataScanServiceClient.getDataScan(request);
    }
  }
}

Python

Python

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

Knowledge 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_get_data_scan():
    # Create a client
    client = dataplex_v1.DataScanServiceClient()

    # Initialize request argument(s)
    request = dataplex_v1.GetDataScanRequest(
        name="name_value",
    )

    # Make the request
    response = client.get_data_scan(request=request)

    # Handle the response
    print(response)

Ruby

Ruby

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

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

require "google/cloud/dataplex/v1"

##
# Snippet for the get_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#get_data_scan.
#
def get_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::GetDataScanRequest.new

  # Call the get_data_scan method.
  result = client.get_data_scan request

  # The returned object is of type Google::Cloud::Dataplex::V1::DataScan.
  p result
end

REST

데이터 품질 스캔 결과를 보려면 dataScans.get 메서드를 사용합니다.

게시된 결과 보기

데이터 품질 스캔 결과가 Knowledge Catalog 메타데이터로 게시되면Google Cloud 콘솔의 BigQuery 페이지와 Knowledge Catalog 페이지에 있는 소스 테이블의 데이터 품질 탭에서 최신 스캔 결과를 확인할 수 있습니다.

  1. Google Cloud 콘솔에서 Knowledge Catalog 검색 페이지로 이동합니다.

    검색 페이지로 이동

  2. 테이블을 검색한 후 선택합니다.

  3. 데이터 품질 탭을 클릭합니다.

    최근에 게시된 결과가 표시됩니다.

이전 스캔 결과 보기

Knowledge Catalog는 지난 300개 작업 또는 지난 1년 동안의 데이터 품질 스캔 기록 중 먼저 발생하는 기록을 저장합니다.

콘솔

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

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

  2. 데이터 품질 스캔 이름을 클릭합니다.

  3. 작업 기록 탭을 클릭합니다.

    작업 기록 탭에서는 각 작업에서 스캔된 레코드 수, 작업 상태, 작업이 실행된 시간, 각 규칙의 통과 또는 실패 여부와 같은 이전 작업에 대한 정보를 제공합니다.

  4. 작업에 대한 자세한 정보를 보려면 작업 ID 열에서 아무 작업이나 클릭합니다.

gcloud

이전 데이터 품질 스캔 작업을 보려면 gcloud dataplex datascans jobs list 명령어를 사용합니다.

gcloud dataplex datascans jobs list \
--location=LOCATION \
--datascan=DATASCAN \

다음 변수를 바꿉니다.

  • LOCATION: 데이터 품질 스캔이 생성된 Google Cloud 리전입니다.
  • DATASCAN: 이전 작업을 볼 데이터 품질 스캔의 이름

C#

C#

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

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

using Google.Api.Gax;
using Google.Cloud.Dataplex.V1;
using System;

public sealed partial class GeneratedDataScanServiceClientSnippets
{
    /// <summary>Snippet for ListDataScanJobs</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 ListDataScanJobsRequestObject()
    {
        // Create client
        DataScanServiceClient dataScanServiceClient = DataScanServiceClient.Create();
        // Initialize request argument(s)
        ListDataScanJobsRequest request = new ListDataScanJobsRequest
        {
            ParentAsDataScanName = DataScanName.FromProjectLocationDataScan("[PROJECT]", "[LOCATION]", "[DATASCAN]"),
            Filter = "",
        };
        // Make the request
        PagedEnumerable<ListDataScanJobsResponse, DataScanJob> response = dataScanServiceClient.ListDataScanJobs(request);

        // Iterate over all response items, lazily performing RPCs as required
        foreach (DataScanJob item in response)
        {
            // Do something with each item
            Console.WriteLine(item);
        }

        // Or iterate over pages (of server-defined size), performing one RPC per page
        foreach (ListDataScanJobsResponse page in response.AsRawResponses())
        {
            // Do something with each page of items
            Console.WriteLine("A page of results:");
            foreach (DataScanJob item in page)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
        }

        // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
        int pageSize = 10;
        Page<DataScanJob> singlePage = response.ReadPage(pageSize);
        // Do something with the page of items
        Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
        foreach (DataScanJob item in singlePage)
        {
            // Do something with each item
            Console.WriteLine(item);
        }
        // Store the pageToken, for when the next page is required.
        string nextPageToken = singlePage.NextPageToken;
    }
}

Go

Go

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

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


//go:build examples

package main

import (
	"context"

	dataplex "cloud.google.com/go/dataplex/apiv1"
	dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb"
	"google.golang.org/api/iterator"
)

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.ListDataScanJobsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#ListDataScanJobsRequest.
	}
	it := c.ListDataScanJobs(ctx, req)
	for {
		resp, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			// TODO: Handle error.
		}
		// TODO: Use resp.
		_ = resp

		// If you need to access the underlying RPC response,
		// you can do so by casting the `Response` as below.
		// Otherwise, remove this line. Only populated after
		// first call to Next(). Not safe for concurrent access.
		_ = it.Response.(*dataplexpb.ListDataScanJobsResponse)
	}
}

자바

Java

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

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

import com.google.cloud.dataplex.v1.DataScanJob;
import com.google.cloud.dataplex.v1.DataScanName;
import com.google.cloud.dataplex.v1.DataScanServiceClient;
import com.google.cloud.dataplex.v1.ListDataScanJobsRequest;

public class SyncListDataScanJobs {

  public static void main(String[] args) throws Exception {
    syncListDataScanJobs();
  }

  public static void syncListDataScanJobs() 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()) {
      ListDataScanJobsRequest request =
          ListDataScanJobsRequest.newBuilder()
              .setParent(DataScanName.of("[PROJECT]", "[LOCATION]", "[DATASCAN]").toString())
              .setPageSize(883849137)
              .setPageToken("pageToken873572522")
              .setFilter("filter-1274492040")
              .build();
      for (DataScanJob element : dataScanServiceClient.listDataScanJobs(request).iterateAll()) {
        // doThingsWith(element);
      }
    }
  }
}

Python

Python

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

Knowledge 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_list_data_scan_jobs():
    # Create a client
    client = dataplex_v1.DataScanServiceClient()

    # Initialize request argument(s)
    request = dataplex_v1.ListDataScanJobsRequest(
        parent="parent_value",
    )

    # Make the request
    page_result = client.list_data_scan_jobs(request=request)

    # Handle the response
    for response in page_result:
        print(response)

Ruby

Ruby

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

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

require "google/cloud/dataplex/v1"

##
# Snippet for the list_data_scan_jobs 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#list_data_scan_jobs.
#
def list_data_scan_jobs
  # 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::ListDataScanJobsRequest.new

  # Call the list_data_scan_jobs method.
  result = client.list_data_scan_jobs request

  # The returned object is of type Gapic::PagedEnumerable. You can iterate
  # over elements, and API calls will be issued to fetch pages as needed.
  result.each do |item|
    # Each element is of type ::Google::Cloud::Dataplex::V1::DataScanJob.
    p item
  end
end

REST

이전 데이터 품질 스캔 작업을 보려면 dataScans.jobs.list 메서드를 사용합니다.

작업 상태

데이터 스캔 작업의 상태는 다음과 같습니다.

  • PENDING: 작업이 생성되었지만 아직 실행되지 않았습니다. 이 상태에서 스캔은 인프라를 적극적으로 설정하거나 슬롯을 획득합니다. 이 단계는 스키마 복잡성과 리소스 경합에 따라 10~20초 이상 걸릴 수 있습니다.

  • RUNNING: 작업이 실행 중입니다.

  • CANCELING: 작업이 취소되는 중입니다.

  • CANCELLED: 작업이 취소되었습니다.

  • SUCCEEDED: 작업이 성공적으로 완료됩니다. 집계 및 메타데이터 동기화와 같은 후처리 단계로 인해 완료 상태가 실제 쿼리 완료보다 최대 60초까지 지연될 수 있습니다.

  • FAILED: 오류로 인해 작업이 실패합니다. 집계 및 메타데이터 동기화와 같은 후처리 단계로 인해 완료 상태가 실제 쿼리 완료보다 최대 60초까지 지연될 수 있습니다.

  • SUCCEEDED_WITH_ERRORS: 작업이 성공적으로 완료되었지만 실행 중에 일부 오류가 발생합니다.

모니터링 권장사항

데이터 스캔 작업을 모니터링할 때는 다음 권장사항에 유의하세요.

  • 공격적인 폴링 방지: 공격적인 폴링 (예: 1~5초마다 GetJob 또는 이에 상응하는 함수 호출)을 방지합니다. 과도한 폴링은 API 할당량을 낭비하며 상태 전환을 가속화하지 않습니다.

  • 지수 백오프 사용: 반복적인 폴링이 불가피한 경우 10~15초부터 시작하는 지수 백오프를 사용합니다.

  • 비동기 이벤트 기반 분리 사용 (권장): 동기 API 폴링 대신 Cloud 감사 로그 (cloudaudit.googleapis.com)를 리슨하는 Eventarc 트리거를 사용합니다. 이러한 트리거를 사용하여 DataScan 작업 완료 이벤트가 발생하면 즉시 다운스트림 워크플로를 시작할 수 있습니다. 이 접근 방식은 API 폴링 한도를 우회하고, 할당량을 보존하며, 인식된 지연 시간을 줄입니다.

데이터 품질 스캔 결과에 대한 액세스 권한 부여

조직 내 사용자가 스캔 결과를 볼 수 있게 하려면 다음을 수행합니다.

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

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

  2. 결과를 공유할 데이터 품질 스캔을 클릭합니다.

  3. 권한 탭을 클릭합니다.

  4. 다음 단계를 따르세요.

    • 주 구성원에게 액세스 권한을 부여하려면 액세스 권한 부여를 클릭합니다. 연결된 주 구성원에게 Dataplex DataScan DataViewer 역할을 부여합니다.
    • 주 구성원의 액세스 권한을 삭제하려면 Dataplex DataScan DataViewer 역할을 삭제할 주 구성원을 선택합니다. 액세스 권한 삭제를 클릭한 후 메시지가 표시되면 확인합니다.

Logging에서 알림 설정

Cloud Logging의 로그를 사용하여 데이터 품질 오류에 대한 알림을 설정하려면 다음 단계를 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 로깅 로그 탐색기로 이동합니다.

    로그 탐색기로 이동

  2. 쿼리 창에 쿼리를 입력합니다. 샘플 쿼리를 참조합니다.

  3. 쿼리 실행을 클릭합니다.

  4. 알림 만들기를 클릭합니다. 그러면 측면 패널이 열립니다.

  5. 알림 정책 이름을 입력하고 다음을 클릭합니다.

  6. 쿼리를 검토합니다.

    1. 로그 미리보기를 클릭하여 쿼리를 테스트합니다. 그러면 일치하는 조건이 있는 로그가 표시됩니다.

    2. 다음을 클릭합니다.

  7. 알림 시간 간격을 설정하고 다음을 클릭합니다.

  8. 알림을 받을 사용자를 정의하고 저장을 클릭하여 알림 정책을 만듭니다.

또는Google Cloud 콘솔에서 Monitoring > 알림으로 이동하여 알림을 구성하고 수정할 수 있습니다.

gcloud

지원되지 않음

REST

Logging에서 알림을 설정하는 방법을 알아보세요.

작업 수준 또는 측정기준 수준 알림 설정의 샘플 쿼리

  • 데이터 품질 스캔의 전체 데이터 품질 오류에 대한 알림을 설정하는 샘플 쿼리:

    resource.type="dataplex.googleapis.com/DataScan"
    AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED"
    AND resource.labels.resource_container="projects/112233445566"
    AND resource.labels.datascan_id="a0-test-dec6-dq-3"
    AND NOT jsonPayload.dataQuality.passed=true
    
  • 특정 데이터 품질 스캔 측정기준(예: 고유성)의 데이터 품질 오류에 대한 알림을 설정하는 샘플 쿼리:

    resource.type="dataplex.googleapis.com/DataScan"
    AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED"
    AND resource.labels.resource_container="projects/112233445566"
    AND resource.labels.datascan_id="a0-test-dec6-dq-3"
    AND jsonPayload.dataQuality.dimensionPassed.UNIQUENESS=false
    
  • 테이블의 데이터 품질 오류에 대한 알림을 설정하는 샘플 쿼리

    • Knowledge Catalog 레이크에 구성되지 않은 BigQuery 테이블의 데이터 품질 오류에 대한 알림을 설정합니다.

      resource.type="dataplex.googleapis.com/DataScan"
      AND jsonPayload.dataSource="//bigquery.googleapis.com/projects/test-project/datasets/testdataset/table/chicago_taxi_trips"
      AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED"
      AND resource.labels.resource_container="projects/112233445566"
      AND NOT jsonPayload.dataQuality.passed=true
      
    • Knowledge Catalog 레이크에 구성된 BigQuery 테이블의 데이터 품질 오류에 대한 알림을 설정합니다.

      resource.type="dataplex.googleapis.com/DataScan"
      AND jsonPayload.dataSource="projects/test-project/datasets/testdataset/table/chicago_taxi_trips"
      AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED"
      AND resource.labels.resource_container="projects/112233445566"
      AND NOT jsonPayload.dataQuality.passed=true
      

규칙 알림별로 설정할 샘플 쿼리

  • 데이터 품질 스캔에 지정된 커스텀 규칙 이름을 사용하여 실패한 모든 데이터 품질 규칙에 대한 알림을 설정하는 샘플 쿼리:

    resource.type="dataplex.googleapis.com/DataScan"
    AND jsonPayload.ruleName="custom-name"
    AND jsonPayload.result="FAILED"
    
  • 데이터 품질 스캔에 대한 특정 평가 유형의 실패한 모든 데이터 품질 규칙에 대한 알림을 설정하는 샘플 쿼리:

    resource.type="dataplex.googleapis.com/DataScan"
    AND jsonPayload.evalutionType="PER_ROW"
    AND jsonPayload.result="FAILED"
    
  • 데이터 품질 스캔에 사용되는 테이블의 열에 대해 실패한 모든 데이터 품질 규칙에 대한 알림을 설정하는 샘플 쿼리:

    resource.type="dataplex.googleapis.com/DataScan"
    AND jsonPayload.column="CInteger"
    AND jsonPayload.result="FAILED"
    

데이터 품질 오류 문제 해결

실패한 행 수준 규칙이 있는 작업마다 Knowledge Catalog는 실패한 레코드를 가져오는 쿼리를 제공합니다. 이 쿼리를 실행하여 규칙과 일치하지 않는 레코드를 확인합니다.

콘솔

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

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

  2. 문제를 해결하려는 레코드가 있는 데이터 품질 스캔의 이름을 클릭합니다.

  3. 작업 기록 탭을 클릭합니다.

  4. 데이터 품질 오류를 식별한 작업의 작업 ID를 클릭합니다.

  5. 작업 결과 창이 열리면 규칙 섹션에서 쿼리하여 실패한 레코드 가져오기 열을 찾습니다. 실패한 규칙에 대해 쿼리를 클립보드에 복사를 클릭합니다.

  6. BigQuery에서 쿼리를 실행하여 작업 실패 원인인 레코드를 확인합니다.

gcloud

지원되지 않음

REST

  1. 데이터 품질 오류를 식별한 작업을 가져오려면 dataScans.get 메서드를 사용합니다.

    응답 객체의 failingRowsQuery 필드에 쿼리가 표시됩니다.

  2. BigQuery에서 쿼리를 실행하여 작업 실패 원인인 레코드를 확인합니다.

Knowledge Catalog는 규칙 생성 중에 포함된 경우 디버그 쿼리도 실행합니다. 디버그 쿼리 결과는 각 규칙의 출력에 포함됩니다. 이 기능은 미리보기 상태입니다.

콘솔

지원되지 않음.

gcloud

지원되지 않음

REST

데이터 품질 오류를 식별한 작업을 가져오려면 dataScans.get 메서드를 사용합니다. 응답 객체의 debugQueriesResultSets 필드에 디버그 쿼리의 결과가 표시됩니다.

특정 테이블의 데이터 품질 스캔 관리

이 문서의 단계에서는 Google Cloud 콘솔의 Knowledge Catalog 데이터 프로파일링 및 품질 페이지를 사용하여 프로젝트 전반에서 데이터 프로필 스캔을 관리하는 방법을 보여줍니다.

특정 테이블을 사용할 때 데이터 프로필 스캔을 만들고 관리할 수도 있습니다. Google Cloud 콘솔에서 테이블의 Knowledge Catalog 페이지에 있는 데이터 품질 탭을 사용합니다. 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Knowledge Catalog 검색 페이지로 이동합니다.

    검색 페이지로 이동

    테이블을 검색한 후 선택합니다.

  2. 데이터 품질 탭을 클릭합니다.

  3. 결과가 Knowledge Catalog 메타데이터로 게시된 데이터 품질 스캔이 테이블에 있는지 여부에 따라 다음과 같은 방법으로 테이블의 데이터 품질 스캔을 사용할 수 있습니다.

    • 데이터 품질 스캔 결과가 게시됨: 페이지에 최신 스캔 결과가 표시됩니다.

      이 테이블의 데이터 품질 스캔을 관리하려면 데이터 품질 스캔을 클릭한 후 다음 옵션 중에서 선택합니다.

      • 새 스캔 만들기: 새 데이터 품질 스캔을 만듭니다. 자세한 내용은 이 문서의 데이터 품질 스캔 만들기 섹션을 참조하세요. 테이블의 세부정보 페이지에서 스캔을 만들면 테이블이 미리 선택됩니다.

      • 지금 실행: 스캔을 실행합니다.

      • 스캔 구성 수정: 표시 이름, 필터, 일정을 포함한 설정을 수정합니다.

        데이터 품질 규칙을 수정하려면 데이터 품질 탭에서 규칙 탭을 클릭합니다. 규칙 수정을 클릭합니다. 규칙을 업데이트한 후 저장을 클릭합니다.

      • 스캔 권한 관리: 스캔 결과에 액세스할 수 있는 사용자를 관리합니다. 자세한 내용은 이 문서의 데이터 품질 스캔 결과에 대한 액세스 권한 부여 섹션을 참조하세요.

      • 이전 결과 보기: 이전 데이터 품질 스캔 작업에 대한 세부정보를 봅니다. 자세한 내용은 이 문서의 데이터 품질 스캔 결과 보기이전 스캔 결과 보기 섹션을 참조하세요.

      • 모든 스캔 보기: 이 테이블에 적용되는 데이터 품질 스캔 목록을 봅니다.

    • 데이터 품질 스캔 결과가 게시되지 않음: 다음 옵션 중에서 선택합니다.

      • 데이터 품질 스캔 만들기: 새 데이터 품질 스캔을 만듭니다. 자세한 내용은 이 문서의 데이터 품질 스캔 만들기 섹션을 참조하세요. 테이블의 세부정보 페이지에서 스캔을 만들면 테이블이 미리 선택됩니다.

      • 기존 스캔 보기: 이 테이블에 적용되는 데이터 품질 스캔 목록을 봅니다.

데이터 품질 스캔 업데이트

표시 이름, 필터, 일정, 데이터 품질 규칙과 같은 기존 데이터 품질 스캔의 다양한 설정을 수정할 수 있습니다.

콘솔

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

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

  2. 데이터 품질 스캔 이름을 클릭합니다.

  3. 표시 이름, 필터, 일정을 포함한 설정을 수정하려면 수정을 클릭합니다. 값을 수정한 후 저장을 클릭합니다.

  4. 데이터 품질 규칙을 수정하려면 스캔 세부정보 페이지에서 현재 규칙 탭을 클릭합니다. 규칙 수정을 클릭합니다. 규칙을 업데이트한 후 저장을 클릭합니다.

gcloud

데이터 품질 스캔 설명을 업데이트하려면 gcloud dataplex datascans update data-quality 명령어를 사용합니다.

gcloud dataplex datascans update data-quality DATASCAN \
--location=LOCATION \
--description=DESCRIPTION

다음을 바꿉니다.

  • DATASCAN: 업데이트할 데이터 품질 스캔의 이름입니다.
  • LOCATION: 데이터 품질 스캔이 생성된 Google Cloud 리전입니다.
  • DESCRIPTION: 데이터 품질 스캔에 대한 새로운 설명입니다.

C#

C#

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

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

using Google.Cloud.Dataplex.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDataScanServiceClientSnippets
{
    /// <summary>Snippet for UpdateDataScan</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 UpdateDataScanRequestObject()
    {
        // Create client
        DataScanServiceClient dataScanServiceClient = DataScanServiceClient.Create();
        // Initialize request argument(s)
        UpdateDataScanRequest request = new UpdateDataScanRequest
        {
            DataScan = new DataScan(),
            UpdateMask = new FieldMask(),
            ValidateOnly = false,
        };
        // Make the request
        Operation<DataScan, OperationMetadata> response = dataScanServiceClient.UpdateDataScan(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.PollOnceUpdateDataScan(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

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

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


//go:build examples

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.UpdateDataScanRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#UpdateDataScanRequest.
	}
	op, err := c.UpdateDataScan(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

자바

Java

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

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

import com.google.cloud.dataplex.v1.DataScan;
import com.google.cloud.dataplex.v1.DataScanServiceClient;
import com.google.cloud.dataplex.v1.UpdateDataScanRequest;
import com.google.protobuf.FieldMask;

public class SyncUpdateDataScan {

  public static void main(String[] args) throws Exception {
    syncUpdateDataScan();
  }

  public static void syncUpdateDataScan() 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()) {
      UpdateDataScanRequest request =
          UpdateDataScanRequest.newBuilder()
              .setDataScan(DataScan.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setValidateOnly(true)
              .build();
      DataScan response = dataScanServiceClient.updateDataScanAsync(request).get();
    }
  }
}

Python

Python

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

Knowledge 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_update_data_scan():
    # Create a client
    client = dataplex_v1.DataScanServiceClient()

    # Initialize request argument(s)
    data_scan = dataplex_v1.DataScan()
    data_scan.data.entity = "entity_value"

    request = dataplex_v1.UpdateDataScanRequest(
        data_scan=data_scan,
    )

    # Make the request
    operation = client.update_data_scan(request=request)

    print("Waiting for operation to complete...")

    response = operation.result()

    # Handle the response
    print(response)

Ruby

Ruby

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

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

require "google/cloud/dataplex/v1"

##
# Snippet for the update_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#update_data_scan.
#
def update_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::UpdateDataScanRequest.new

  # Call the update_data_scan method.
  result = client.update_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.patch 메서드를 사용합니다.

데이터 품질 스캔 삭제

콘솔

콘솔

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

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

  2. 삭제하려는 스캔을 클릭합니다.

  3. 삭제를 클릭한 후 메시지가 표시되면 확인합니다.

gcloud

gcloud

데이터 품질 스캔을 삭제하려면 gcloud dataplex datascans delete 명령어를 사용합니다.

gcloud dataplex datascans delete DATASCAN \
--location=LOCATION \
--async

다음 변수를 바꿉니다.

  • DATASCAN: 삭제할 데이터 품질 스캔의 이름입니다.
  • LOCATION: 데이터 품질 스캔이 생성된 Google Cloud 리전

C#

C#

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

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

using Google.Cloud.Dataplex.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDataScanServiceClientSnippets
{
    /// <summary>Snippet for DeleteDataScan</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 DeleteDataScanRequestObject()
    {
        // Create client
        DataScanServiceClient dataScanServiceClient = DataScanServiceClient.Create();
        // Initialize request argument(s)
        DeleteDataScanRequest request = new DeleteDataScanRequest
        {
            DataScanName = DataScanName.FromProjectLocationDataScan("[PROJECT]", "[LOCATION]", "[DATASCAN]"),
            Force = false,
        };
        // Make the request
        Operation<Empty, OperationMetadata> response = dataScanServiceClient.DeleteDataScan(request);

        // Poll until the returned long-running operation is complete
        Operation<Empty, OperationMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        Empty 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<Empty, OperationMetadata> retrievedResponse = dataScanServiceClient.PollOnceDeleteDataScan(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            Empty retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Go

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

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


//go:build examples

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.DeleteDataScanRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#DeleteDataScanRequest.
	}
	op, err := c.DeleteDataScan(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	err = op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
}

자바

Java

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

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

import com.google.cloud.dataplex.v1.DataScanName;
import com.google.cloud.dataplex.v1.DataScanServiceClient;
import com.google.cloud.dataplex.v1.DeleteDataScanRequest;
import com.google.protobuf.Empty;

public class SyncDeleteDataScan {

  public static void main(String[] args) throws Exception {
    syncDeleteDataScan();
  }

  public static void syncDeleteDataScan() 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()) {
      DeleteDataScanRequest request =
          DeleteDataScanRequest.newBuilder()
              .setName(DataScanName.of("[PROJECT]", "[LOCATION]", "[DATASCAN]").toString())
              .setForce(true)
              .build();
      dataScanServiceClient.deleteDataScanAsync(request).get();
    }
  }
}

Python

Python

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

Knowledge 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_delete_data_scan():
    # Create a client
    client = dataplex_v1.DataScanServiceClient()

    # Initialize request argument(s)
    request = dataplex_v1.DeleteDataScanRequest(
        name="name_value",
    )

    # Make the request
    operation = client.delete_data_scan(request=request)

    print("Waiting for operation to complete...")

    response = operation.result()

    # Handle the response
    print(response)

Ruby

Ruby

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

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

require "google/cloud/dataplex/v1"

##
# Snippet for the delete_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#delete_data_scan.
#
def delete_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::DeleteDataScanRequest.new

  # Call the delete_data_scan method.
  result = client.delete_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

REST

데이터 품질 스캔을 삭제하려면 dataScans.delete 메서드를 사용합니다.

다음 단계