이 페이지에서는 Dataplex 데이터 품질 스캔을 만드는 방법을 설명합니다.
데이터 품질 스캔에 대한 자세한 내용은 자동 데이터 품질 정보를 참조하세요.
시작하기 전에
Dataplex API를 사용 설정합니다.
선택사항: Dataplex에서 데이터 프로파일링 스캔 결과를 기반으로 데이터 품질 규칙 권장사항을 생성하게 하려면 데이터 프로파일링 스캔을 만들고 실행합니다.
필요한 역할
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 서비스 계정에 Dataplex 메타데이터 리더 (
roles/dataplex.metadataReader
) 및 Dataplex 뷰어 (roles/dataplex.viewer
) IAM 역할을 부여합니다. 또는 다음 권한이 모두 필요합니다.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 권한 설정 |
사용자에게 다음 역할 중 하나 이상을 부여합니다.
DataScan
리소스에 대한 전체 액세스 권한: Dataplex DataScan 관리자 (roles/dataplex.dataScanAdmin
)DataScan
리소스에 대한 쓰기 액세스 권한: Dataplex DataScan 편집자 (roles/dataplex.dataScanEditor
)- 규칙 및 결과를 제외한
DataScan
리소스에 대한 읽기 액세스 권한: Dataplex DataScan 뷰어 (roles/dataplex.dataScanViewer
) - 규칙 및 결과를 비롯한
DataScan
리소스에 대한 읽기 액세스 권한: Dataplex DataScan DataViewer (roles/dataplex.dataScanDataViewer
)
데이터 품질 규칙 정의
기본 제공 규칙 또는 커스텀 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는 임곗값에 대해 성공한 행 수를 확인합니다.여러 행에서 평가되거나 테이블 조건을 사용하는 규칙을 만드는 경우 Dataplex에서
SELECT IF(CUSTOM_SQL_EXPRESSION) FROM TABLE
쿼리를 평가할 때 성공이나 실패를 반환하는 표현식을 만듭니다.데이터 세트의 잘못된 상태를 평가하는 규칙을 만드는 경우 잘못된 행을 반환하는 문을 제공합니다. 반환되는 행이 있으면 규칙이 실패합니다. SQL 문에서 후행 세미콜론을 생략합니다.
소스 테이블과 해당 필터를 명시적으로 언급하는 대신 규칙에서 데이터 참조 매개변수
${data()}
를 사용하여 데이터 소스 테이블과 모든 전제조건 필터를 참조할 수 있습니다. 전제조건 필터의 예로는 행 필터, 샘플링 비율, 증분 필터가 있습니다.${data()}
매개변수는 대소문자를 구분합니다.
다음 예시 규칙은 커스텀 SQL 규칙을 기반으로 합니다.
규칙 유형 | 규칙 설명 | SQL 표현식 |
---|---|---|
행 조건 | discount_pct 값이 0~100 사이인지 확인합니다.
|
0 <discount_pct 및 discount_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)를 통해 평균 트랜잭션 금액이 국가별 사전 정의된 값보다 작은지 확인합니다. 다음 명령어를 실행하여 (자바스크립트) 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 어설션(데이터 참조 매개변수 포함) |
날짜 필터 데이터 참조 매개변수 |
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
- 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
데이터 품질 스캔 만들기
콘솔
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
데이터 품질 스캔 만들기를 클릭합니다.
스캔 정의 창에서 다음 필드를 작성합니다.
표시 이름을 입력합니다.
자체 ID를 제공하지 않으면 스캔 ID가 자동으로 생성됩니다. 리소스 이름 지정 규칙을 참조합니다.
선택사항: 설명을 입력합니다.
테이블 필드에서 찾아보기를 클릭하고 테이블을 선택한 후 선택을 클릭합니다. Dataplex는 표준 BigQuery 테이블만 지원합니다.
멀티 리전 데이터 세트의 테이블에서 데이터 스캔을 생성할 리전을 선택합니다.
Dataplex 레이크 내에 구성된 테이블을 찾아보려면 Dataplex 레이크 내에서 찾아보기를 클릭합니다.
범위 필드에서 증분 또는 전체 데이터를 선택합니다.
- 증분을 선택한 경우: 타임스탬프 열 필드에서 단조롭게 증가하며 새 레코드를 식별하는 데 사용할 수 있는 BigQuery 테이블의
DATE
또는TIMESTAMP
유형 열을 선택합니다. 테이블의 파티션을 나누는 열일 수 있습니다.
- 증분을 선택한 경우: 타임스탬프 열 필드에서 단조롭게 증가하며 새 레코드를 식별하는 데 사용할 수 있는 BigQuery 테이블의
선택사항: 라벨을 추가합니다. 라벨은 관련 객체를 함께 그룹화하거나 다른 Google Cloud 리소스와 그룹화할 수 있게 해주는
key:value
쌍입니다.데이터를 필터링하려면 필터를 클릭합니다. 행 필터링 체크박스를 선택합니다. 행 필터의 입력 값은 BigQuery 표준 SQL 구문에서
WHERE
절의 일부로 사용될 수 있는 유효한 SQL 표현식이어야 합니다. 예를 들면col1 >= 0
입니다. 필터는 여러 열 조건의 조합일 수 있습니다. 예를 들면col1 >= 0 AND col2 < 10
입니다.데이터를 샘플링하려면 샘플링 크기 목록에서 샘플링 비율을 선택합니다. 소수점 이하 3자리까지 0.0%에서 100.0% 사이의 백분율 값을 선택합니다. 데이터 세트가 클수록 낮은 샘플링 비율을 선택합니다. 예를 들어 최대 1PB의 테이블의 경우 0.1%에서 1.0% 사이의 값을 입력하면 Dataplex는 1~10TB의 데이터를 샘플링합니다. 증분 데이터 스캔의 경우 Dataplex는 최신 증분에 샘플링을 적용합니다.
Google Cloud 콘솔에서 소스 테이블의 BigQuery 및 Data Catalog 페이지에 데이터 품질 스캔 결과를 게시하려면 BigQuery 및 Dataplex 카탈로그 UI에 결과 게시 체크박스를 클릭합니다. 소스 테이블의 BigQuery 및 Data Catalog 페이지에 있는 데이터 품질 탭에서 최신 스캔 결과를 확인할 수 있습니다. 사용자가 게시된 스캔 결과에 액세스할 수 있도록 하려면 게시된 결과 공유를 참조하세요. 다음과 같은 경우 게시 옵션을 사용하지 못할 수 있습니다.
- 테이블에 필요한 권한이 없습니다.
- 결과를 게시하도록 또 다른 데이터 품질 스캔이 설정되었습니다.
게시된 결과를 보는 데 필요한 권한에 대한 자세한 내용은 권한을 참조하세요.
계속을 클릭합니다.
일정 창에서 다음 옵션 중 하나를 선택합니다.
반복: 매일, 매주, 매월 또는 커스텀 일정으로 데이터 품질 스캔 작업을 실행합니다. 스캔 실행 빈도와 시간을 지정합니다. 커스텀을 선택하는 경우 크론 형식을 사용하여 일정을 지정합니다.
주문형: 주문형 데이터 품질 스캔 작업을 실행합니다.
계속을 클릭합니다.
데이터 품질 규칙 창에서 이 데이터 품질 스캔 구성을 위한 규칙을 정의합니다. 규칙 추가를 클릭한 후 다음 옵션 중 하나를 선택합니다.
프로필 기반 추천: 기존 데이터 프로파일링 스캔에 기반을 둔 추천으로 규칙을 빌드합니다.
열 선택: 권장 규칙을 가져올 열을 선택합니다.
스캔 프로젝트: 기존 데이터 프로파일링 스캔을 기반으로 한 권장사항입니다. 기본적으로 Dataplex는 데이터 품질 스캔을 만드는 동일한 프로젝트에서 프로파일링 스캔을 선택합니다. 다른 프로젝트에서 스캔을 만든 경우 프로필 스캔을 가져올 프로젝트를 지정해야 합니다.
프로필 결과 선택: 선택한 열 및 프로젝트에 따라 여러 프로필 결과가 표시됩니다.
프로필 결과를 하나 이상 선택한 후 확인을 클릭합니다. 그러면 선택할 규칙 목록이 채워집니다.
체크박스를 선택하고 선택을 클릭하여 수정할 규칙을 선택합니다. 선택하면 규칙이 현재 규칙 목록에 추가됩니다. 그런 다음 규칙을 수정할 수 있습니다.
기본 제공 규칙 유형: 사전 정의된 규칙에서 규칙을 빌드합니다. 사전 정의된 규칙 목록을 참조하세요.
열 선택: 규칙을 선택할 열을 선택합니다.
규칙 유형 선택: 선택한 열에 따라 선택할 수 있는 규칙 유형 여러 개가 표시됩니다.
규칙 유형을 하나 이상 선택한 후 확인을 클릭합니다. 그러면 선택할 규칙 목록이 채워집니다.
체크박스를 선택하고 선택을 클릭하여 수정할 규칙을 선택합니다. 선택하면 규칙이 현재 규칙 목록에 추가됩니다. 그런 다음 규칙을 수정할 수 있습니다.
SQL 행 확인 규칙: 각 행에 적용할 커스텀 SQL 규칙을 만듭니다(커스텀 SQL 행 확인 규칙).
측정기준에서 측정기준 1개를 선택합니다.
통과 기준에서 검사를 통과해야 하는 레코드의 백분율을 선택합니다.
열 이름에서 열을 선택합니다.
SQL 표현식 제공 필드에 불리언
true
(통과) 또는false
(실패)로 평가되는 SQL 표현식을 입력합니다. 자세한 내용은 지원되는 커스텀 SQL 규칙 유형 및 이 문서의 데이터 품질 규칙 정의 섹션에 있는 예시를 참조하세요.추가를 클릭합니다.
SQL 집계 확인 규칙: 커스텀 SQL 테이블 조건 규칙을 만듭니다.
측정기준에서 측정기준 1개를 선택합니다.
열 이름에서 열을 선택합니다.
SQL 표현식 제공 필드에 불리언
true
(통과) 또는false
(실패)로 평가되는 SQL 표현식을 입력합니다. 자세한 내용은 지원되는 커스텀 SQL 규칙 유형 및 이 문서의 데이터 품질 규칙 정의 섹션에 있는 예시를 참조하세요.추가를 클릭합니다.
SQL 어설션 규칙: 데이터의 잘못된 상태를 확인하는 커스텀 SQL 어설션 규칙을 만듭니다.
측정기준에서 측정기준 1개를 선택합니다.
선택사항: 열 이름에서 열을 선택합니다.
SQL 문 제공 필드에 잘못된 상태와 일치하는 행을 반환하는 SQL 문을 입력합니다. 반환되는 행이 있으면 이 규칙이 실패합니다. SQL 문에서 후행 세미콜론을 생략합니다. 자세한 내용은 지원되는 커스텀 SQL 규칙 유형 및 이 문서의 데이터 품질 규칙 정의 섹션에 있는 예시를 참조하세요.
추가를 클릭합니다.
Dataplex는 모니터링 및 알림을 위해 데이터 품질 규칙에 커스텀 이름을 허용합니다. 데이터 품질 규칙의 경우 커스텀 규칙 이름과 설명을 선택적으로 할당할 수 있습니다. 이렇게 하려면 규칙을 수정하고 다음 세부정보를 지정합니다.
- 규칙 이름: 최대 63자의 커스텀 규칙 이름을 입력합니다. 규칙 이름에는 문자(a~z, A~Z), 숫자(0~9), 하이픈(-)이 포함될 수 있으며 문자로 시작하고 숫자 또는 문자로 끝나야 합니다.
- 설명: 최대 길이가 1,024자인 규칙 설명을 입력합니다.
계속을 클릭합니다.
선택사항: 스캔 결과를 BigQuery 표준 테이블로 내보냅니다. BigQuery 테이블로 스캔 결과 내보내기 섹션에서 찾아보기를 클릭하여 데이터 품질 스캔 결과를 저장할 기존 BigQuery 데이터 세트를 선택합니다.
지정된 테이블이 없으면 Dataplex에서 자동으로 만듭니다. 기존 테이블을 사용 중이면 내보내기 테이블 스키마와 호환되는지 확인합니다.
선택사항: 이메일 알림 보고서를 설정하여 데이터 품질 스캔 작업의 상태와 결과를 사용자에게 알립니다. 알림 보고서 섹션에서
이메일 ID 추가를 클릭하고 최대 5개의 이메일 주소를 입력합니다. 그런 다음 보고서를 전송할 시나리오를 선택합니다.- 품질 점수 (<=): 지정된 타겟 점수보다 낮은 데이터 품질 점수로 작업이 성공하면 보고서를 전송합니다. 0에서 100 사이의 타겟 품질 점수를 입력합니다.
- 작업 실패: 데이터 품질 결과와 관계없이 작업 자체가 실패하면 보고서를 전송합니다.
- 작업 완료 (성공 또는 실패): 데이터 품질 결과와 관계없이 작업이 종료되면 보고서를 전송합니다.
만들기를 클릭합니다.
스캔이 생성된 후 지금 실행을 클릭하여 언제든지 실행할 수 있습니다.
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 경로일 수 있습니다. 이 파일을 사용하여 스캔 데이터 품질 규칙을 지정합니다. 이 파일에서 필터, 샘플링 비율, 스캔 후 작업(예: BigQuery로 내보내기 또는 이메일 알림 보고서 전송)과 같은 추가 세부정보를 지정할 수도 있습니다. 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 탐색기를 사용합니다.
데이터 프로파일링 스캔의 결과를 기반으로 하는 규칙 권장사항을 사용하여 데이터 품질 스캔 규칙을 빌드하려면 데이터 프로파일링 스캔에서 dataScans.jobs.generateDataQualityRules
메서드를 호출하여 권장사항을 가져옵니다.
테이블 스키마 내보내기
데이터 품질 스캔 결과를 기존 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,"score":100},"CONSISTENCY":{"passed":false,"score":60}}
|
||
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 경계에 있어야 합니다.
- 스캔 실행 단계 중에 테이블이 수정되면 현재 실행 중인 작업이 이전 결과 테이블로 내보내지고 테이블 변경사항이 다음 스캔 작업에서 적용됩니다.
- 테이블 스키마를 수정하지 마세요. 맞춤설정된 열이 필요하면 테이블에 뷰를 만듭니다.
- 비용을 줄이려면 사용 사례에 따라 파티션에 만료 시간을 설정합니다. 자세한 내용은 파티션 만료 시간 설정 방법을 참조하세요.
데이터 품질 스캔 실행
콘솔
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
실행할 데이터 품질 스캔을 클릭합니다.
지금 실행을 클릭합니다.
gcloud
데이터 품질 스캔을 실행하려면 gcloud dataplex datascans run
명령어를 사용합니다.
gcloud dataplex datascans run DATASCAN \ --location=LOCATION \
다음 변수를 바꿉니다.
LOCATION
: 데이터 품질 스캔이 생성된 Google Cloud 리전입니다.DATASCAN
: 데이터 품질 스캔의 이름입니다.
REST
API 탐색기를 사용하여 데이터 품질 스캔을 실행합니다.
데이터 품질 스캔 결과 보기
Console
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
스캔의 자세한 결과를 보려면 스캔 이름을 클릭합니다.
개요 섹션에는 스캔이 실행된 시기, 각 작업에서 스캔한 레코드 수, 모든 데이터 품질 검사 통과 여부, 실패한 경우 실패한 데이터 품질 검사 수, 실패한 측정기준을 포함하여 마지막 작업 7개에 대한 정보가 표시됩니다.
데이터 품질 스캔 구성 섹션에 스캔 세부정보가 표시됩니다.
통과한 규칙 비율을 나타내는 데이터 품질 점수를 확인하려면 작업 기록 탭을 클릭합니다. 그런 다음 작업 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
을 지정합니다.
REST
데이터 품질스캔 결과를 보려면 API 탐색기를 사용합니다.
이전 스캔 결과 보기
Dataplex는 지난 300개 작업 또는 지난 1년 동안의 데이터 품질 스캔 기록 중 먼저 발생하는 작업을 저장합니다.
Console
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
스캔 이름을 클릭합니다.
작업 기록 탭을 클릭합니다.
작업 기록 탭에서는 이전 작업에 대한 정보를 제공합니다. 여기에는 모든 작업, 각 작업에서 스캔된 레코드 수, 작업 상태, 작업이 실행된 시간, 각 규칙이 통과했는지 여부 등이 표시됩니다.
작업에 대한 자세한 정보를 보려면 작업 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 페이지에 스캔 결과를 게시하도록 선택한 경우 해당 페이지의 데이터 품질 탭에서 최신 스캔 결과를 사용할 수 있습니다.
조직의 사용자가 게시된 스캔 결과에 액세스하도록 설정할 수 있습니다. 스캔 결과에 대한 액세스 권한을 부여하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
결과를 공유할 데이터 품질 스캔을 클릭합니다.
권한 탭으로 이동합니다.
액세스 권한 부여를 클릭합니다.
새 주 구성원 필드에 액세스 권한을 부여할 주 구성원을 추가합니다.
역할 선택 필드에서 Dataplex DataScan DataViewer를 선택합니다.
저장을 클릭합니다.
주 구성원의 게시된 스캔 결과에 대한 액세스 권한을 삭제하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
결과를 공유할 데이터 품질 스캔을 클릭합니다.
권한 탭으로 이동합니다.
Dataplex DataScan DataViewer 역할을 삭제할 주 구성원을 선택합니다.
액세스 권한 삭제를 클릭합니다.
확인을 클릭합니다.
Cloud Logging에서 알림 설정
Cloud Logging의 로그를 사용하여 데이터 품질 오류에 대한 알림을 설정하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 Cloud Logging 로그 탐색기로 이동합니다.
쿼리 창에 쿼리를 입력합니다. 샘플 쿼리를 참조합니다.
쿼리 실행을 클릭합니다.
알림 만들기를 클릭합니다. 그러면 측면 패널이 열립니다.
알림 정책 이름을 입력하고 다음을 클릭합니다.
쿼리를 검토합니다.
로그 미리보기 버튼을 클릭하여 쿼리를 테스트합니다. 그러면 일치하는 조건이 있는 로그가 표시됩니다.
다음을 클릭합니다.
알림 시간 간격을 설정하고 다음을 클릭합니다.
알림을 받을 사용자를 정의하고 저장을 클릭하여 알림 정책을 만듭니다.
또는 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는 실패한 레코드를 가져오는 쿼리를 제공합니다. 이 쿼리를 실행하여 규칙과 일치하지 않는 레코드를 확인합니다.
Console
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
문제를 해결하려는 레코드의 스캔 이름을 클릭합니다.
작업 기록 탭을 클릭합니다.
데이터 품질 오류를 식별한 작업의 작업 ID를 클릭합니다.
작업 결과 창이 열리면 규칙 섹션에서 쿼리하여 실패한 레코드 가져오기 열을 찾습니다. 실패한 규칙의 쿼리를 클립보드에 복사를 클릭합니다.
BigQuery에서 쿼리를 실행하여 작업 실패 원인인 레코드를 확인합니다.
gcloud
지원되지 않음
REST
API 탐색기를 사용하여 실패한 작업의 실패한 레코드를 가져오는 쿼리를 확인합니다.
데이터 품질 스캔 업데이트
콘솔
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
수정하려는 스캔이 있는 행에서 세로로 나열된 3개의 점 > 수정을 클릭합니다.
값을 수정합니다.
저장을 클릭합니다.
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 탐색기를 사용하여 데이터 품질 스캔을 수정합니다.
데이터 품질 스캔 삭제
콘솔
Google Cloud 콘솔에서 데이터 품질 페이지로 이동합니다.
삭제하려는 스캔을 클릭합니다.
삭제를 클릭합니다.
gcloud
데이터 품질 스캔을 삭제하려면 gcloud dataplex datascans delete
명령어를 사용합니다.
gcloud dataplex datascans delete DATASCAN \ --location=LOCATION \ --async
다음 변수를 바꿉니다.
DATASCAN
: 삭제할 데이터 품질 스캔의 이름입니다.LOCATION
: 데이터 품질 스캔이 생성된 Google Cloud 리전입니다.
REST
API 탐색기를 사용하여 데이터 품질 스캔을 삭제합니다.
다음 단계
- 데이터 프로파일링 알아보기
- 데이터 프로파일링 사용 방법 알아보기
- 튜토리얼에 따라 Terraform을 사용하여 데이터 품질 규칙을 코드로 관리하기