커스텀 SQL 작업 추가

이 문서에서는 전용 SQLX 파일에서 커스텀 SQL 작업을 정의하는 방법을 보여줍니다.

Dataform은 테이블 게시 또는 어설션 작성의 Dataform 모델에 적합하지 않은 커스텀 SQL 작업을 실행할 수 있습니다. Dataform이 BigQuery에서 실행할 커스텀 SQL 명령어를 정의할 수 있습니다.

시작하기 전에

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

    Dataform 페이지로 이동

  2. 저장소를 선택하거나 만듭니다.

  3. 개발 작업공간을 선택하거나 만듭니다.

필요한 역할

커스텀 SQL 작업을 정의하는 데 필요한 권한을 얻으려면 관리자에게 작업공간의 Dataform 편집자(roles/dataform.editor) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

커스텀 작업 정의를 위한 파일 만들기

커스텀 작업 정의 SQLX 파일을 definitions/ 디렉터리에 저장합니다. definitions/ 디렉터리에 새 SQLX 파일을 만들려면 다음 단계를 따르세요.

  1. 개발 작업공간으로 이동합니다.
  2. 파일 창에서 definitions/ 옆에 있는 더보기 메뉴를 클릭합니다.
  3. 파일 만들기를 클릭합니다.
  4. 파일 경로 추가 필드에 definitions/를 입력하고 파일 이름 다음에 .sqlx를 입력합니다. 예를 들면 definitions/sample-operation.sqlx입니다.

    파일 이름에는 숫자, 문자, 하이픈, 밑줄만 포함할 수 있습니다.

  5. 파일 만들기를 클릭합니다.

커스텀 SQL 작업 정의

type: operations의 SQLX 파일에서 커스텀 SQL 작업을 정의할 수 있습니다. operations 파일에 BigQuery SQL 문을 작성할 수 있습니다. Dataform은 BigQuery에서 수정하지 않고 커스텀 SQL 작업을 실행합니다.

하나의 SQLX 파일에서 여러 커스텀 SQL 작업을 정의할 수 있습니다. BigQuery는 동일한 컨텍스트에서 파일의 모든 작업을 실행하고 모든 작업을 세미콜론 ;으로 연결해서 실행 SQL을 만듭니다.

BigQuery 이외의 데이터 웨어하우스에서 오픈소스 Dataform 프레임워크를 사용할 때 여러 커스텀 SQL 작업을 정의하려면 작업을 ---로 구분합니다.

전용 SQLX 파일에서 커스텀 SQL 작업을 정의하려면 다음 단계를 수행합니다.

  1. 개발 작업공간에서 커스텀 작업 정의를 위한 SQLX 파일을 선택합니다.
  2. 파일에 다음 코드 스니펫을 입력합니다.

    config { type: "operations" }
    
  3. config 블록 외부에서 SQL 작업을 작성합니다.

  4. (선택사항): 형식을 클릭합니다.

다음 코드 샘플에서는 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 함수를 사용하면 됩니다.

커스텀 작업에서 테이블을 만들고 다른 스크립트에 사용하려면 다음 단계를 따르세요.

  1. 개발 작업공간에서 커스텀 작업 정의를 위한 SQLX 파일을 선택합니다.
  2. SQLX 파일에 다음 코드 스니펫을 입력합니다.

    config {
     type: "operations",
     hasOutput: true
     }
    
  3. 선택사항: 출력 테이블 이름을 파일 이름과 일치시키려면 다음 형식으로 self 함수를 사용하여 SQL CREATE 작업을 작성합니다.

    CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
    

    CUSTOM_SQL_QUERY를 테이블 정의 SQL SELECT 문으로 바꿉니다.

  4. (선택사항): 형식을 클릭합니다.

커스텀 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
)

다음 단계