Dataform에서 테이블은 워크플로를 구성하는 객체 유형 중 하나입니다. 워크플로에 선언된 데이터 소스의 데이터 또는 워크플로의 다른 테이블을 참조하는 테이블을 만들 수 있습니다. Dataform은 테이블 정의를 실시간으로 SQL로 컴파일합니다. 실행을 트리거하면 Dataform이 SQL 코드를 실행하고 BigQuery에서 정의된 테이블을 만듭니다.
type: "table" SQLX 파일에서 다음 테이블 유형을 만들 수 있습니다.
table: 일반 테이블incremental: 증분 테이블입니다.view: 테이블 뷰 자세한 내용은 뷰 소개를 참고하세요.materialized: 구체화된 테이블 뷰입니다. 자세한 내용은 구체화된 뷰 소개를 참고하세요.
테이블 파티션 및 클러스터를 정의할 수도 있습니다.
워크플로에서 표의 목적이나 다른 표와의 관계를 기록하려면 표 또는 선택한 열에 문서를 추가하면 됩니다.
특정 조건에 대해 테이블의 데이터를 테스트하려면 어설션이라는 데이터 품질 테스트 쿼리를 만들면 됩니다. Dataform은 워크플로를 업데이트할 때마다 어설션을 실행하고 어설션이 실패할 경우 알림을 제공합니다.
선택한 테이블의 기본 스키마, 데이터베이스, 이름을 재정의하려면 테이블 설정 재정의를 사용하면 됩니다.
테이블 만들기를 사용 중지하거나 테이블 만들기 전후에 SQL 문을 실행하려면 추가 작업을 구성하면 됩니다.
실행 후 BigQuery에서 테이블을 정리하려면 BigQuery 라벨을 추가하면 됩니다. 자세한 내용은 라벨 소개를 참고하세요.
테이블 열 수준에서 데이터 액세스를 제한하려면 BigQuery 정책 태그를 추가하면 됩니다. 자세한 내용은 열 수준 액세스 제어 소개를 참고하세요.
type: "table" SQLX 파일에 테이블을 정의하는 것 외에 type: "operations" SQLX 파일에 빈 SQLX 파일에 커스텀 SQL 쿼리를 정의하여 빈 테이블을 생성할 수 있습니다.
다른 서비스에서 데이터로 채울 수 있도록 빈 테이블을 만들 수 있습니다.
시작하기 전에
Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.
선택사항: 데이터 소스를 선언합니다.
필요한 역할
이 문서의 태스크를 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음의 IAM 역할을 부여해 달라고 요청하세요.
- 작업공간에 대한 Dataform 편집자 (
roles/dataform.editor) -
메타데이터를 Knowledge Catalog에 동기화:
프로젝트 또는
@bigquery항목 그룹에 대한 Dataplex 카탈로그 편집자 (roles/dataplex.catalogEditor)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
테이블 만들기
이 섹션에서는 Dataform에서 Dataform Core를 사용하여 테이블을 만드는 방법을 보여줍니다.
테이블 정의에 대한 정보
테이블을 정의하려면 type: "table" SQLX 파일에서 테이블 유형을 정의하고 SELECT 문을 작성합니다. 그러면 Dataform이 Dataform Core 코드를 SQL로 컴파일하고 SQL 코드를 실행하며 BigQuery에서 정의된 테이블을 만듭니다.
Dataform Core SELECT 문에서 테이블 구조를 정의하고 워크플로의 다른 객체를 참조합니다.
type: "table" SQLX 파일에 테이블을 정의하는 것 외에 type: "operations" SQLX 파일에 커스텀 SQL 쿼리를 정의하여 빈 테이블을 생성할 수 있습니다.
자세한 내용은 빈 테이블 만들기를 참고하세요.
ref로 종속 항목 참조
SELECT 문에서 워크플로 작업을 참조하고 종속 항목으로 자동 추가하려면 ref 함수를 사용하세요. Dataform은 올바른 파이프라인 순서 지정 보장을 위해 종속 항목에 영향을 받는 테이블보다 종속 항목을 먼저 실행합니다.
ref 함수는 Dataform의 종속성 관리에 중요한 기본 제공 Dataform Core 함수입니다. ref 함수를 사용하면 스키마 및 테이블 이름을 하드 코딩하는 대신 Dataform 워크플로에 정의된 다음 객체를 참조하고 자동으로 종속시킬 수 있습니다.
- 지원되는 모든 테이블 유형의 테이블
- 데이터 소스 선언
hasOutput속성이true로 설정된 커스텀 SQL 작업
Dataform은 ref 함수를 사용하여 만들거나 업데이트할 모든 테이블의 종속 항목 트리를 빌드합니다.
컴파일 후 Dataform은 CREATE, REPLACE, INSERT, MERGE와 같은 상용구 문을 SQL 문에 추가합니다.
다음 코드 샘플은 ref 함수를 사용하는 테이블 정의를 보여줍니다.
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2
ref 함수에서 사용하려는 테이블 또는 데이터 소스 선언의 이름을 제공합니다. 일반적으로 테이블 또는 데이터 소스 선언이 정의된 SQLX 파일의 파일 이름입니다.
테이블 이름이 재정의된 경우 ref 함수에서 재정의된 이름을 사용합니다.
예를 들어 config { name: "overridden_name" }이 있는 테이블을 ref("overridden_name")으로 참조합니다. 자세한 내용은 테이블 설정 재정의 및 재정의된 테이블 이름으로 테이블 참조를 참고하세요.
스키마가 서로 다른데 이름이 같은 테이블이 여러 개 있는 경우 ref 함수에 스키마 이름과 테이블 이름이라는 두 인수를 제공하여 특정 테이블을 참조할 수 있습니다.
다음 코드 샘플은 특정 스키마 내의 테이블을 지정하는 두 개의 인수가 있는 ref 함수를 보여줍니다.
config { type: "table" }
SELECT * FROM ${ref("schema", "store_clean")}
또한 SELECT 문의 ref 함수에서 참조되지 않는 테이블, 어설션, 데이터 소스 선언 또는 커스텀 SQL 작업의 config 블록에 테이블 종속 항목을 추가할 수도 있습니다. Dataform은 종속 테이블 전에 이러한 종속 항목을 실행합니다.
다음 코드 샘플은 config 블록의 테이블 종속 항목을 보여줍니다.
config { dependencies: [ "unreferenced_table" ] }
SELECT * FROM ...
워크플로의 종속 항목 관리에 대한 자세한 내용은 종속 항목 설정을 참고하세요.
resolve로 다른 테이블 참조
resolve 함수를 사용하면 ref 함수와 같은 SELECT 문에서 테이블 또는 데이터 소스 선언을 참조할 수 있지만 참조를 종속 항목으로 추가할 수는 없습니다. 즉, resolve 함수를 사용하여 참조된 객체는 resolve 함수를 사용하는 테이블 실행에 영향을 미치지 않습니다.
기본 제공 Dataform Core 함수에 대한 자세한 내용은 Dataform Core 참조를 확인하세요.
테이블 정의를 위한 SQLX 파일 만들기
테이블 정의 SQLX 파일을 definitions/ 디렉터리에 저장합니다. definitions/ 디렉터리에 새 SQLX 파일을 만들려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.
저장소를 열려면 저장소 이름을 클릭합니다.
개발 작업공간을 열려면 작업공간 이름을 클릭합니다.
파일 창에서
definitions/옆에 있는 더보기를 클릭합니다.파일 만들기를 클릭합니다.
파일 경로 추가 필드에
definitions/를 입력하고 파일 이름 다음에.sqlx를 입력합니다. 예를 들면definitions/my-table.sqlx입니다.파일 이름에는 숫자, 문자, 하이픈, 밑줄만 포함할 수 있습니다.
파일 만들기를 클릭합니다.
표 유형 정의
새 테이블 유형 정의를 만들려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/디렉터리를 확장합니다. - 수정할 테이블 정의 SQLX 파일을 선택합니다.
파일에 다음 코드 스니펫을 입력합니다.
config { type: "TABLE_TYPE" }TABLE_TYPE을 다음 표 유형 중 하나로 바꿉니다.
tableincrementalview
(선택사항): 구체화된 뷰를 정의하려면
type: "view"아래에materialized속성을 다음 형식으로 입력합니다.config { type: "view", materialized: true }자세한 내용은 ITableConfig를 참고하세요.
(선택사항): 형식을 클릭합니다.
테이블 구조 및 종속 항목 정의
테이블 정의 SELECT 문을 작성하고 테이블 구조와 종속 항목을 정의하려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/디렉터리를 펼칩니다. - 수정할 테이블 정의 SQLX 파일을 선택합니다.
config블록 아래에SELECT문을 작성합니다.- (선택사항): 형식을 클릭합니다.
다음 코드 샘플은 SELECT 문과 ref 함수가 있는 테이블 정의를 보여줍니다.
config { type: "table" }
SELECT
customers.id AS id,
customers.first_name AS first_name,
customers.last_name AS last_name,
customers.email AS email,
customers.country AS country,
COUNT(orders.id) AS order_count,
SUM(orders.amount) AS total_spent
FROM
dataform-samples.dataform_sample.crm_customers AS customers
LEFT JOIN ${ref('order_stats')} orders
ON customers.id = orders.customer_id
WHERE
customers.id IS NOT NULL
AND customers.first_name <> 'Internal account'
AND country IN ('UK', 'US', 'FR', 'ES', 'NG', 'JP')
GROUP BY 1, 2, 3, 4, 5
수동 테이블 종속 항목 추가
SELECT 문에서 참조되지 않지만 현재 테이블 전에 실행해야 하는 테이블 종속 항목을 추가하려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/디렉터리를 펼칩니다. - 수정할 테이블 정의 SQLX 파일을 선택합니다.
표의
config블록에 다음 코드 스니펫을 입력합니다.dependencies: [ "DEPENDENCY_TABLE", ]DEPENDENCY_TABLE을 종속 항목으로 추가하려는 테이블의 파일 이름으로 바꿉니다. 여러 파일 이름을 입력할 수 있습니다.
(선택사항): 형식을 클릭합니다.
다음 코드 샘플은 테이블 정의 파일의 config 블록에 수동 테이블 종속 항목으로 추가된 두 개의 테이블을 보여줍니다.
config { dependencies: [ "some_table", "some_other_table" ] }
표 설정 재정의
선택한 테이블의 기본 스키마, 데이터베이스, 이름을 재정의할 수 있습니다.
기본적으로 테이블은 workflow_settings.yaml에서 설정한 스키마 및 데이터베이스 구성을 따릅니다. 테이블 이름은 테이블 정의 SQLX 파일의 이름과 동일합니다.
선택한 테이블의 스키마와 이름을 재정의하려면 다음 단계를 따르세요.
개발 작업공간으로 이동합니다.
파일 창에서
definitions/를 펼칩니다.SQLX 테이블 정의 파일을 엽니다.
config블록에 다음 코드 스니펫을 입력합니다.{ schema: "OVERRIDDEN_SCHEMA", database: "OVERRIDDEN_DATABASE", name: "OVERRIDDEN_NAME" }다음을 바꿉니다.
OVERRIDDEN_SCHEMA: 테이블을 만들 BigQuery 데이터 세트입니다.OVERRIDDEN_DATABASE: 테이블을 만들려는 BigQuery 프로젝트의 ID입니다.OVERRIDDEN_NAME: 테이블의 이름으로, SQLX 테이블 정의 파일 이름과 다릅니다.
(선택사항): 형식을 클릭합니다.
자세한 내용은 재정의된 테이블 이름으로 테이블 참조를 참고하세요.
Apache Iceberg 관리 테이블 만들기
Dataform을 사용하여 Iceberg 테이블 형식으로 BigQuery 테이블을 만듭니다. 이러한 테이블을 Iceberg 관리형 테이블이라고 합니다. 필수 역할 및 기타 설정 작업에 대한 자세한 내용은 Iceberg 관리 테이블 워크플로의 시작하기 전에 단계를 참고하세요.
Iceberg 테이블 정의 만들기
테이블을 만들려면 테이블 정의 파일의 bigquery 블록에서 Iceberg 구성을 정의합니다.
테이블을 정의하려면 다음 단계를 따르세요.
- 개발 작업공간으로 이동합니다.
- 파일 창에서
definitions/를 펼칩니다. - 테이블 정의 SQLX 파일을 엽니다.
config블록에 다음 형식으로iceberg블록이 포함된bigquery블록을 추가합니다.config { type: "table", name: "my_table", uniqueKey: ["uniquekey"], bigquery: { iceberg: { bucket_name: "BUCKET_NAME" } } }BUCKET_NAME을 테이블 데이터가 저장된 Cloud Storage 버킷의 이름으로 바꿉니다.다른 속성은 선택사항이며 지정하지 않으면 기본값이 있습니다. 자세한 내용은
iceberg속성을 참고하세요.각 표의 값을 제공하거나
workflow_settings.yaml에서 워크플로 수준 기본값을 설정할 수 있습니다.iceberg블록에서 속성을 명시적으로 설정하여 워크플로 수준 기본값을 재정의할 수 있습니다.
테이블 파티션 및 클러스터 만들기
이 섹션에서는 Dataform Core를 사용하여 테이블 파티션 및 클러스터를 만드는 방법을 보여줍니다. BigQuery는 파티션을 나눈 테이블과 테이블 클러스터링을 지원합니다. 자세한 내용은 파티션을 나눈 테이블 소개 및 클러스터링된 테이블 만들기 및 사용을 참고하세요.
테이블 파티션 만들기
테이블 파티션을 만들려면 다음 단계를 따르세요.
- 개발 작업공간으로 이동합니다.
- 파일 창에서
definitions/를 펼칩니다. - 테이블 정의 SQLX 파일을 엽니다.
config블록에서 테이블 유형 선언 아래에 다음 형식으로bigquery블록을 추가합니다.