자동 데이터 품질 사용

이 페이지에서는 Dataplex 데이터 품질 스캔을 만드는 방법을 설명합니다.

데이터 품질 스캔에 대한 자세한 내용은 자동 데이터 품질 정보를 참조하세요.

시작하기 전에

Dataplex API를 사용 설정합니다.

API 사용 설정하기

권한

  • BigQuery 테이블에서 데이터 품질 스캔을 실행하려면 BigQuery 테이블을 읽을 수 있는 권한과 테이블을 스캔하는 데 사용된 프로젝트에서 BigQuery 작업을 만들 수 있는 권한이 있어야 합니다.

  • BigQuery 테이블과 데이터 품질 스캔이 서로 다른 프로젝트에 있는 경우 데이터 품질 스캔이 포함된 프로젝트의 Dataplex 서비스 계정에 해당 BigQuery 테이블에 대한 읽기 권한을 부여해야 합니다.

  • 데이터 품질 규칙이 추가 테이블을 참조하는 경우 스캔 프로젝트의 서비스 계정에 동일한 테이블에 대한 읽기 권한이 있어야 합니다.

  • 스캔 결과를 BigQuery 테이블로 내보내는 데 필요한 권한을 얻으려면 관리자에게 Dataplex 서비스 계정에 결과 데이터 세트 및 테이블에 대한 BigQuery 데이터 편집자(roles/bigquery.dataEditor) IAM 역할을 부여해달라고 요청하세요. 그러면 다음 권한을 부여합니다.

    • bigquery.datasets.get
    • bigquery.tables.create
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.update
    • bigquery.tables.updateData
  • BigQuery 데이터가 Dataplex 레이크에 구성되어 있으면 Dataplex 서비스 계정에 roles/dataplex.metadataReaderroles/dataplex.viewer 역할을 부여합니다. 또는 다음 권한이 모두 필요합니다.

    • dataplex.lakes.list
    • dataplex.lakes.get
    • dataplex.zones.list
    • dataplex.zones.get
    • dataplex.entities.list
    • dataplex.entities.get
    • dataplex.operations.get
  • Cloud Storage에서 BigQuery 외부 테이블을 스캔하는 경우 Dataplex 서비스 계정에 버킷에 대한 Cloud Storage roles/storage.objectViewer 역할을 부여합니다. 또는 Dataplex 서비스 계정에 다음 권한을 할당합니다.

    • storage.buckets.get
    • storage.objects.get
  • 소스 테이블의 Google Cloud 콘솔에서 BigQuery 및 Data Catalog 페이지에 데이터 품질 스캔 결과를 게시하려면 테이블에 대한 BigQuery 데이터 편집자(roles/bigquery.dataEditor) IAM 역할 또는 bigquery.tables.update 권한을 부여받아야 합니다.

  • BigQuery 열 수준 액세스 정책으로 보호되는 열에 액세스해야 하는 경우 해당 열에 Dataplex 서비스 계정 권한을 할당합니다. 데이터 스캔을 만들거나 업데이트하는 사용자는 열에 대한 권한도 필요합니다.

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

데이터 스캔 권한 및 역할

자동 데이터 품질을 사용하려면 데이터 스캔을 실행할 권한이나 데이터 스캔을 실행할 수 있는 사전 정의된 권한이 있는 역할이 필요합니다.

다음 표에는 DataScan 권한이 나와 있습니다.

권한 이름 다음 작업을 수행할 수 있는 권한을 부여합니다.
dataplex.datascans.create DataScan 만들기
dataplex.datascans.delete DataScan 삭제
dataplex.datascans.get ID 또는 일정(결과 및 규칙 제외)과 같은 작업 메타데이터 보기
dataplex.datascans.getData 규칙 및 결과를 포함한 DataScan 세부정보 보기
dataplex.datascans.list DataScan 나열
dataplex.datascans.run DataScan 실행
dataplex.datascans.update DataScan의 설명 업데이트
dataplex.datascans.getIamPolicy 스캔에서 현재 IAM 권한 보기
dataplex.datascans.setIamPolicy 스캔에서 IAM 권한 설정

사용자에게 다음 역할 중 하나 이상을 부여합니다.

  • roles/dataplex.dataScanAdmin: DataScan 리소스에 대한 전체 액세스 권한입니다.
  • roles/dataplex.dataScanEditor: DataScan 리소스에 대한 쓰기 액세스 권한입니다.
  • roles/dataplex.dataScanViewer: 규칙 및 결과를 제외한 DataScan 리소스에 대한 읽기 액세스 권한입니다.
  • roles/dataplex.dataScanDataViewer: 규칙 및 결과를 포함한 DataScan 리소스에 대한 읽기 액세스 권한입니다.

데이터 품질 규칙 정의

기본 제공 규칙 또는 커스텀 SQL 검사를 사용하여 데이터 품질 규칙을 정의할 수 있습니다. Google Cloud CLI를 사용하는 경우 JSON 또는 YAML 파일에서 이러한 규칙을 정의할 수 있습니다.

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

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

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

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

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

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

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

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

  • 여러 행에서 평가하거나 집계 SQL 검사를 사용하는 규칙을 만드는 경우 Dataplex가 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)
집계 SQL 표현식 평균 discount_pct가 30%~50% 사이인지 확인합니다. 30<avg(discount) AND avg(discount) <50
행 조건 미래 날짜가 아닌지 확인합니다. TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
집계 SQL 표현식 BigQuery 사용자 정의 함수(UDF)를 통해 평균 트랜잭션 금액이 국가별 사전 정의된 값보다 작은지 확인합니다. 다음 명령어를 실행하여 (자바스크립트) 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'
        ))
      
집계 SQL 표현식 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 명령어의 입력으로 사용할 수 있습니다.

rules:
- uniquenessExpectation: {}
  column: transaction_id
  dimension: UNIQUENESS
- nonNullExpectation: {}
  column: amount
  dimension: COMPLETENESS
  threshold: 1
- regexExpectation:
  regex: '^[0-9]{8}[a-zA-Z]{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
- 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

데이터 품질 스캔 만들기

콘솔

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

    데이터 품질로 이동

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

  3. 스캔 정의 창에서 다음 필드를 채웁니다.

    1. 표시 이름을 입력합니다.

    2. 자체 ID를 제공하지 않으면 스캔 ID가 자동으로 생성됩니다. 리소스 이름 지정 규칙을 참조합니다.

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

    4. 테이블 필드에서 찾아보기를 클릭하고 테이블을 선택한 후 선택을 클릭합니다. Dataplex는 표준 BigQuery 테이블만 지원합니다.

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

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

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

      • 증분을 선택한 경우: 타임스탬프 열 필드에서 단조롭게 증가하며 새 레코드를 식별하는 데 사용할 수 있는 BigQuery 테이블의 DATE 또는 TIMESTAMP 유형 열을 선택합니다. 테이블의 파티션을 나누는 열일 수 있습니다.
    6. 선택사항: 라벨을 추가합니다. 라벨은 관련 객체를 함께 그룹화하거나 다른 Google Cloud 리소스와 그룹화할 수 있게 해주는 key:value 쌍입니다.

    7. 데이터를 필터링하려면 필터를 클릭합니다. 행 필터링 체크박스를 선택합니다. 행 필터의 입력 값은 BigQuery 표준 SQL 구문에서 WHERE 절의 일부로 사용될 수 있는 유효한 SQL 표현식이어야 합니다. 예를 들면 col1 >= 0입니다. 필터는 여러 열 조건의 조합일 수 있습니다. 예를 들면 col1 >= 0 AND col2 < 10입니다.

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

    9. Google Cloud 콘솔에서 소스 테이블의 BigQuery 및 Data Catalog 페이지에 데이터 품질 스캔 결과를 게시하려면 BigQuery 및 Dataplex 카탈로그 UI에 결과 게시 체크박스를 클릭합니다. 소스 테이블의 BigQuery 및 Data Catalog 페이지에 있는 데이터 품질 탭에서 최신 스캔 결과를 확인할 수 있습니다. 사용자가 게시된 스캔 결과에 액세스할 수 있도록 하려면 게시된 결과 공유를 참조하세요. 다음과 같은 경우 게시 옵션을 사용하지 못할 수 있습니다.

      • 테이블에 필요한 권한이 없습니다.
      • 결과를 게시하도록 또 다른 데이터 품질 스캔이 설정되었습니다.

      게시된 결과를 보는 데 필요한 권한에 대한 자세한 내용은 권한을 참조하세요.

    10. 계속을 클릭합니다.

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

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

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

    계속을 클릭합니다.

  5. 데이터 품질 규칙 창에서 이 데이터 품질 스캔 구성을 위한 규칙을 정의합니다. 규칙 추가를 클릭한 후 다음 옵션 중 하나를 선택합니다.

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

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

      2. 스캔 프로젝트: 기존 데이터 프로파일링 스캔을 기반으로 한 권장사항입니다. 기본적으로 Dataplex는 데이터 품질 스캔을 만드는 동일한 프로젝트에서 프로파일링 스캔을 선택합니다. 다른 프로젝트에서 스캔을 만든 경우 프로필 스캔을 가져올 프로젝트를 지정해야 합니다.

      3. 프로필 결과 선택: 선택한 열 및 프로젝트에 따라 여러 프로필 결과가 표시됩니다.

      4. 프로필 결과를 한 개 이상 선택한 후 확인을 클릭합니다. 그러면 선택할 수 있는 규칙 목록이 채워집니다.

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

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

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

      2. 규칙 유형 선택: 선택한 열에 따라 여러 규칙 유형이 표시됩니다.

      3. 규칙 유형을 하나 이상 선택한 후 확인을 클릭합니다. 그러면 선택할 수 있는 규칙 목록이 채워집니다.

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

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

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

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

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

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

      5. 추가를 클릭합니다.

    • SQL 집계 확인 규칙: 커스텀 SQL 집계 확인 규칙을 만듭니다.

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

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

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

      4. 추가를 클릭합니다.

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

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

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

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

      4. 추가를 클릭합니다.

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

    • 규칙 이름: 최대 63자의 커스텀 규칙 이름을 입력합니다. 규칙 이름에는 문자(a~z, A~Z), 숫자(0~9), 하이픈(-)이 포함될 수 있으며 문자로 시작하고 숫자 또는 문자로 끝나야 합니다.
    • 설명: 최대 길이가 1,024자인 규칙 설명을 입력합니다.

    계속을 클릭합니다.

  6. 선택사항: 스캔 결과를 BigQuery 표준 테이블로 내보냅니다. 찾아보기를 클릭하여 데이터 품질 스캔 결과를 저장할 기존 BigQuery 데이터 세트를 선택합니다.

    지정된 테이블이 없으면 Dataplex에서 자동으로 만듭니다. 기존 테이블을 사용 중이면 내보내기 테이블 스키마와 호환되는지 확인합니다.

  7. 만들기를 클릭합니다.

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

gcloud

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

소스 데이터가 Dataplex 레이크에 구성된 경우 --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

소스 데이터가 Dataplex 레이크에 구성되지 않은 경우 --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 경로일 수 있습니다. 이 파일에서 rules, rowFilter 또는 samplingPercent와 같은 추가 필드를 지정할 수 있습니다. JSON 표현 문서를 참조하세요.
  • DATA_SOURCE_ENTITY: 데이터 품질 스캔의 데이터가 포함된 Dataplex 항목입니다. 예를 들면 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입니다.

REST

데이터 품질 스캔을 만들려면 API 탐색기를 사용합니다.

테이블 스키마 내보내기

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

열 이름 열 데이터 유형 하위 필드 이름
(해당하는 경우)
하위 필드 데이터 유형 모드 예시
data_quality_scan struct/record resource_name string null 허용 //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan
project_id string null 허용 dataplex-back-end-dev-project
location string null 허용 us-central1
data_scan_id string null 허용 test-datascan
data_source struct/record resource_name string null 허용 항목 케이스:
//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 null 허용 dataplex-back-end-dev-project
dataplex_entity_project_number integer null 허용 123456789
dataplex_lake_id string null 허용 (소스가 항목인 경우에만 유효)
test-lake
dataplex_zone_id string null 허용 (소스가 항목인 경우에만 유효)
test-zone
dataplex_entity_id string null 허용 (소스가 항목인 경우에만 유효)
test-entity
table_project_id string null 허용 test-project
table_project_number integer null 허용 987654321
dataset_id string null 허용 (소스가 테이블인 경우에만 유효)
test-dataset
table_id string null 허용 (소스가 테이블인 경우에만 유효)
test-table
data_quality_job_id string null 허용 caeba234-cfde-4fca-9e5b-fe02a9812e38
data_quality_job_configuration json trigger string null 허용 ondemand/schedule
incremental boolean null 허용 true/false
sampling_percent float null 허용 (0-100)
20.0(20%를 나타냄)
row_filter string null 허용 col1 >= 0 AND col2 < 10
job_labels json null 허용 {"key1":value1}
job_start_time timestamp null 허용 2023-01-01 00:00:00 UTC
job_end_time timestamp null 허용 2023-01-01 00:00:00 UTC
job_rows_scanned integer null 허용 7500
rule_name string null 허용 test-rule
rule_type string null 허용 Range Check
rule_evaluation_type string null 허용 Per row
rule_column string null 허용 Rule only attached to a certain column
rule_dimension string null 허용 Uniqueness
job_quality_result struct/record passed boolean null 허용 true/false
score float null 허용 90.8
job_dimension_result json null 허용 {
"accuracy":{
"passed":true
},
"consistency":{
"passed":false
}
}
rule_threshold_percent float null 허용 (0.0-100.0)
Rule-threshold-pct in API * 100
rule_parameters json null 허용 {min: 24, max:5345}
rule_pass boolean null 허용 True
rule_rows_evaluated integer null 허용 7400
rule_rows_passed integer null 허용 3
rule_rows_null integer null 허용 4
rule_failed_records_query string null 허용 "SELECT * FROM `test-project.test-dataset.test-table` WHERE (NOT((`cTime` >= '15:31:38.776361' and `cTime` <= '19:23:53.754823') IS TRUE));"

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

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

데이터 품질 스캔 실행

콘솔

  1. Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다. Dataplex 데이터 품질로 이동합니다.
  2. 실행할 데이터 품질 스캔을 클릭합니다.
  3. 지금 실행을 클릭합니다.

gcloud

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

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

다음 변수를 바꿉니다.

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

REST

API 탐색기를 사용하여 데이터 품질 스캔을 실행합니다.

데이터 품질 스캔 작업 결과 보기

콘솔

생성된 데이터 품질 스캔이 데이터 품질 페이지에 표시됩니다.

스캔의 자세한 결과를 보려면 스캔 이름을 클릭합니다.

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

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

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을 지정합니다.

REST

데이터 품질스캔 결과를 보려면 API 탐색기를 사용합니다.

모든 데이터 품질 스캔 작업 보기

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

콘솔

작업 기록 탭에서는 이전 작업에 대한 정보를 제공합니다. 여기에는 모든 작업, 각 작업에서 스캔된 레코드 수, 작업 상태, 작업이 실행된 시간, 각 규칙이 통과했는지 여부 등이 표시됩니다.

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

gcloud

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

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

다음 변수를 바꿉니다.

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

REST

모든 스캔 작업을 보려면 API 탐색기를 사용합니다.

게시된 결과 공유

데이터 품질 스캔을 만들 때 Google Cloud 콘솔의 BigQuery 및 Data Catalog 페이지에 스캔 결과를 게시하도록 선택한 경우 해당 페이지의 데이터 품질 탭에서 최신 스캔 결과를 사용할 수 있습니다.

조직의 사용자가 게시된 스캔 결과에 액세스하도록 설정할 수 있습니다. 스캔 결과에 대한 액세스 권한을 부여하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 프로필 페이지로 이동합니다.

    Dataplex 프로필로 이동

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

  3. 권한 탭으로 이동합니다.

  4. 액세스 권한 부여를 클릭합니다.

  5. 새 주 구성원 필드에 액세스 권한을 부여할 주 구성원을 추가합니다.

  6. 역할 선택 필드에서 Dataplex DataScan DataViewer를 선택합니다.

  7. 저장을 클릭합니다.

주 구성원의 게시된 스캔 결과에 대한 액세스 권한을 삭제하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 프로필 페이지로 이동합니다.

    Dataplex 프로필로 이동

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

  3. 권한 탭으로 이동합니다.

  4. Dataplex DataScan DataViewer 역할을 삭제할 주 구성원을 선택합니다.

  5. 액세스 권한 삭제를 클릭합니다.

  6. 확인을 클릭합니다.

데이터 품질 스캔 업데이트

콘솔

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

    데이터 품질로 이동

  2. 수정하려는 스캔이 있는 행에서 세로로 나열된 3개의 점 > 수정을 클릭합니다.

  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: 데이터 품질 스캔에 대한 새로운 설명입니다.

REST

API 탐색기를 사용하여 데이터 품질 스캔을 수정합니다.

데이터 품질 스캔 삭제

콘솔

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

    데이터 품질로 이동

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

  3. 삭제를 클릭합니다.

gcloud

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

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

다음 변수를 바꿉니다.

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

REST

API 탐색기를 사용하여 데이터 품질 스캔을 삭제합니다.

Cloud Logging에서 알림 설정

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

콘솔

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

    로그 탐색기로 이동

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

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

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

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

  6. 쿼리를 검토합니다.

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

    2. 다음을 클릭합니다.

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

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

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

gcloud

지원되지 않음.

REST

API 탐색기를 사용하여 Cloud 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
    
  • 테이블의 데이터 품질 장애에 대한 알림을 설정하는 샘플 쿼리입니다.

    • Dataplex 레이크에 구성되지 않은 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
      
    • Dataplex 레이크에 구성된 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"
    

데이터 품질 오류 문제 해결

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

콘솔

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

    데이터 품질로 이동

  2. 표시 이름을 클릭하여 문제를 해결할 스캔을 선택합니다.

  3. 작업 기록 탭에서 실패한 스캔 실행을 찾고 실패 링크를 클릭합니다.

  4. 작업 창이 열리면 규칙 섹션에서 실패한 레코드를 가져오기 위한 쿼리 열을 찾습니다.

  5. BigQuery에서 실행할 쿼리를 복사하여 작업이 실패하게 만든 레코드를 확인합니다.

gcloud

지원되지 않음.

REST

API 탐색기를 사용하여 실패한 작업의 실패한 레코드 가져오기 쿼리를 확인합니다.

다음 단계