
+저장소 만들기 버튼을 누르고 저장소 이름과 리전(Region)을 선택하면 생성이 가능합니다.quickstart-repository 라는 이름으로 저장소를 생성하였습니다.
roles/bigquery.user 역할 추가가 필요합니다.
+개발 작업공간 만들기 버튼을 눌러 생성이 가능합니다.quickstart-workspace라는 이름으로 작업 공간을 생성하였습니다.
quickstart-workspace에 들어가 작업공간 초기화 버튼을 누르게 되면 Dataform 작업에 필요한 초기 파일들이 생성되게 됩니다.definitions/ : Dataform 프로젝트의 SQLX 파일과 JavaScript 파일을 저장하는 디렉토리로, 본격적인 데이터 ETL 파이프라인 코드가 작성되는 디렉토리입니다.includes/ : 재사용 가능한 JavaScript 함수나 공통 SQL 로직을 저장하는 디렉토리로, 프로젝트 전반에서 참조되는 파일들이 위치하는 디렉토리입니다.workflow_settings.yaml : Dataform 워크플로의 실행 설정(예: 스케줄, BigQuery 위치, 기본 스키마 등)을 정의하는 구성 파일입니다.
defaultDataset으로, Dataform에서 작성한 .sqlx 파일내의 쿼리의 결과물이 빅쿼리의 어떤 Dataset에 저장될지를 명시하는 키입니다.defaultProject: codeit-hyunsoo
defaultLocation: asia-northeast3
defaultDataset: dataform
defaultAssertionDataset: dataform_assertions
dataformCoreVersion: 3.0.0.sqlx 파일 구성.sqlx 파일은 상단의 config 설정 부분과 하단의 SQL 쿼리 작성 부분으로 나뉩니다..sqlx 파일의 최상단에 위치하며, 중괄호 {} 안에 작성됩니다.workflow_settings.yaml 내용 오버라이딩컬럼이 2개(fruit, count)있는 샘플 테이블을 생성하는 쿼리를 작성합니다.
definitions/ 디렉토리 아래에 source.sqlx 파일 생성 후 아래 내용을 작성하면 됩니다.
아래 파일은 빅쿼리의 dataform 데이터셋에 source라는 테이블로 쿼리의 내용을 저장합니다. config상에 별도로 명시가 되어있지 않다면, .sqlx 파일의 이름과 동일하게 테이블의 이름이 정해집니다.
config {
type: "table", // SQL을 통해 생성될 테이블의 종류 (table/view)
description: "Description of the table", // 쿼리에 대한 설명
}
SELECT
"apples" AS fruit,
3 AS count
UNION ALL
SELECT
"oranges" AS fruit,
5 AS count
UNION ALL
SELECT
"pears" AS fruit,
1 AS count
UNION ALL
SELECT
"bananas" AS fruit,
0 AS count
쿼리 작성이 완료되면 자동으로 해당 .sqlx 파일의 문법을 체크하여 틀린 부분이 없는지 보여줍니다. config나 SQL 문법상 오류가 없다면 아래 사진과 같이 초록색 체크 표시가 나옵니다.

해당 쿼리를 실행하려면 실행 시작 > 작업 실행 버튼을 누른 후 실행할 작업을 선택하여 시작할 수 있습니다.

Compiled graph 탭으로 가면 작성한 .sqlx 파일의 워크플로우를 시각적으로 확인할 수 있습니다.

실행이 정상적으로 완료되면 기본 설정과 같이 dataform.source 테이블이 생성되어 빅쿼리에서 확인할 수 있습니다.

source.sqlx 파일로 생성된 테이블을 대상으로 집계를 하는 aggregation.sqlx 파일을 추가로 생성하여 2개의 .sqlx 파일이 연동되어 작업되는 파이프라인을 구성해볼 것입니다.source 테이블의 count 컬럼 값을 SUM 하는 쿼리입니다.
dataform 데이터셋에 파일명과 동일한 aggregation이라는 이름의 VIEW로 저장되도록 config를 구성하였습니다.
${ref("source")} 코드를 통해 같은 디렉토리 내에서 생성되는 테이블을 참조할 수 있습니다. 참조 정의가 되면 파일의 실행 순서가 자연스럽게 정해집니다.
config {
type: "view", // SQL을 통해 생성될 테이블의 종류 (table/view)
description: "Aggregation of source table", // 쿼리에 대한 설명
}
SELECT
SUM(count) AS fruit_cnt
FROM ${ref("source")}
Compiled graph 탭을 확인하면 작업 순서에 맞게 UI로 표시가 되는 것을 확인할 수 있습니다.

실행 시작 > 작업 실행 버튼을 누른 후 실행할 작업(2개)을 선택하여 작업을 실행합니다.

.sqlx 파일을 통한 빅쿼리 엔진 사용에 대한 비용만 발생합니다. Github와의 호환성, 시각적인 워크플로우 관리 기능 등도 지원되어, BigQuery를 데이터 웨어하우스로 사용 중이라면 충분히 활용해볼 만한 자동화 도구라고 생각됩니다.