Dataform은 테이블 게시 또는 어설션 작성의 Dataform 모델에 적합하지 않은 커스텀 SQL 작업을 실행할 수 있습니다. Dataform이 BigQuery에서 실행할 커스텀 SQL 명령어를 정의할 수 있습니다.
시작하기 전에
필요한 역할
커스텀 SQL 작업을 정의하는 데 필요한 권한을 얻으려면 관리자에게 작업공간에 대한 Dataform 편집자(roles/dataform.editor
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
맞춤 작업 정의 파일 만들기
커스텀 작업 정의 SQLX 파일을 definitions/
디렉터리에 저장합니다.
definitions/
디렉터리에 새 SQLX 파일을 만들려면 다음 단계를 따르세요.
- 개발 작업공간으로 이동합니다.
- 파일 창에서
definitions/
옆에 있는 더보기 메뉴를 클릭합니다. - 파일 만들기를 클릭합니다.
파일 경로 추가 필드에
definitions/
를 입력하고 파일 이름 다음에.sqlx
를 입력합니다. 예를 들면definitions/sample-operation.sqlx
입니다.파일 이름에는 숫자, 문자, 하이픈, 밑줄만 포함할 수 있습니다.
파일 만들기를 클릭합니다.
커스텀 SQL 작업 정의
type: operations
의 SQLX 파일에서 커스텀 SQL 작업을 정의할 수 있습니다.
모든 BigQuery SQL 문을 operations
파일에 작성할 수 있습니다.
Dataform은 커스텀 SQL 작업을 수정하지 않고 BigQuery에서 실행합니다.
SQLX 파일 하나에 여러 커스텀 SQL 작업을 정의할 수 있습니다.
BigQuery는 동일한 컨텍스트에서 파일의 모든 작업을 실행하고 모든 작업을 세미콜론 ;
으로 연결해서 실행 SQL을 만듭니다.
BigQuery 이외의 데이터 웨어하우스에서 오픈소스 Dataform 프레임워크를 사용할 때 여러 커스텀 SQL 작업을 정의하려면 작업을 ---
로 구분합니다.
전용 SQLX 파일에서 커스텀 SQL 작업을 정의하려면 다음 단계를 수행합니다.
- 개발 작업공간에서 커스텀 작업 정의를 위한 SQLX 파일을 선택합니다.
파일에 다음 코드 스니펫을 입력합니다.
config { type: "operations" }
config
블록 외부에서 SQL 작업을 작성합니다.(선택사항): 형식을 클릭합니다.
다음 코드 샘플은 operations
파일에 정의된 여러 커스텀 SQL 작업을 보여줍니다.
config { type: "operations" }
DELETE FROM dataset.table WHERE country = 'GB';
DELETE FROM dataset.table WHERE country = 'FR';
다음 코드 샘플은 뷰를 수동으로 만드는 커스텀 SQL 작업을 보여줍니다.
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
참조 가능한 출력 테이블 만들기
커스텀 SQL 작업에서 테이블을 수동으로 만들어 다른 스크립트에서 참조할 수 있습니다. 다른 스크립트에서 사용할 수 있는 테이블을 만들려면 작업에 출력이 있음을 선언해야 합니다.
출력 테이블 이름을 operations
파일 이름과 일치시키려면 CREATE
작업에 self
함수를 사용하면 됩니다.
커스텀 작업에서 테이블을 만들고 다른 스크립트에서 사용할 수 있도록 하려면 다음 단계를 따르세요.
- 개발 작업공간에서 커스텀 작업 정의를 위한 SQLX 파일을 선택합니다.
SQLX 파일에 다음 코드 스니펫을 입력합니다.
config { type: "operations", hasOutput: true }
선택사항: 출력 테이블 이름을 파일 이름과 일치시키려면 다음 형식으로
self
함수를 사용하여 SQLCREATE
작업을 작성합니다.CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
CUSTOM_SQL_QUERY를 테이블 정의 SQL
SELECT
문으로 바꿉니다.(선택사항): 형식을 클릭합니다.
커스텀 SQL 작업 출력 테이블 참조
- 다른 테이블의 SQLX 정의에서 커스텀 SQL 작업 출력 테이블을 참조하려면
ref
함수에 출력 테이블 파일 이름을 입력합니다.
다음 코드 샘플은 custom_SQL_operation_table
라는 참조 가능한 테이블을 만드는 custom_SQL_operation_table.sqlx
파일의 커스텀 SQL 작업을 보여줍니다.
// filename is custom_SQL_operation_table.sqlx
config {
type: "operations",
hasOutput: true
}
CREATE OR REPLACE VIEW ${self()} AS (SELECT 1 AS TEST)
다음 코드 샘플은 테이블 정의 SQLX 파일에서 custom\_SQL\_operation\_table table
을 참조하는 방법을 보여줍니다.
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
빈 테이블 만들기
다른 서비스에서 데이터로 채울 수 있도록 빈 테이블을 만들 수 있습니다. CREATE TABLE
함수를 사용하여 커스텀 SQL 작업에서 빈 테이블을 만들 수 있습니다. 다른 SQL 워크플로 객체 정의(예: 테이블 및 뷰)에서 빈 테이블을 참조할 수 있으려면 빈 테이블 작업의 config
블록에 hasOutput:true
속성을 추가하면 됩니다.
- 빈 테이블을 만들려면 다음과 같은 형식으로
type: "operations"
파일의CREATE TABLE
함수를 사용합니다.
config {
type: "operations",
hasOutput: true // optional, lets you reference the empty table
}
CREATE TABLE ${self()} (
)
다음 코드 샘플은 정수와 문자열 열이 있는 빈 테이블을 만드는 커스텀 SQL 작업을 보여줍니다. 생성된 빈 테이블은 다른 SQL 워크플로 객체에서 참조할 수 없습니다.
config {
type: "operations"
}
CREATE TABLE ${self()} (
x INT64,
y STRING
)
다음 단계
- JavaScript로 커스텀 SQL 작업을 만드는 방법은 JavaScript로 SQL 워크플로 만들기 참조하기
- 실행을 수동으로 트리거하는 방법은 실행 트리거 참조하기
- BigQuery DML 사용 방법은 DML 사용 참조하기
self
함수와 기타 Dataform 기본 제공 함수에 대한 자세한 내용은 Dataform API 참조하기