테이블 만들기

이 문서에서는 Dataform에서 Dataform Core를 사용하여 테이블을 정의하는 방법을 설명합니다.

테이블 정의 정보

테이블을 정의하려면 테이블 유형을 정의하고 type: "table" SQLX 파일에 SELECT 문을 작성합니다. 그러면 Dataform이 Dataform Core 코드를 SQL로 컴파일하고 SQL 코드를 실행하며 BigQuery에서 정의된 테이블을 만듭니다.

Dataform Core SELECT 문에서 테이블 구조를 정의하고 SQL 워크플로의 다른 객체를 참조합니다.

type: "table" SLQX 파일에 테이블을 정의하는 것 외에도 type: "operations" SQLX 파일에 커스텀 SQL 쿼리를 정의하여 빈 테이블을 만들 수 있습니다. 자세한 내용은 빈 테이블 만들기를 참조하세요.

ref로 종속 항목 참조

SELECT 문에서 SQL 워크플로 객체를 참조하고 이를 종속 항목으로 자동 추가하려면 ref 함수를 사용합니다. Dataform은 올바른 파이프라인 순서를 보장하기 위해 종속된 테이블 전에 종속 항목을 실행합니다.

ref 함수는 Dataform의 종속성 관리에 중요한 Dataform Core 기본 제공 함수입니다. ref 함수를 사용하면 스키마 및 테이블 이름을 하드 코딩하는 대신 Dataform 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 ...

SQL 워크플로의 종속 항목 관리에 대한 자세한 내용은 종속 항목 선언을 참조하세요.

resolve로 다른 테이블 참조

resolve 함수를 사용하면 ref 함수와 같은 SELECT 문에서 테이블 또는 데이터 소스 선언을 참조할 수 있지만 참조를 종속 항목으로 추가할 수는 없습니다. 즉, resolve를 사용하여 참조된 객체는 resolve를 사용하는 테이블 실행에 영향을 미치지 않습니다.

기본 제공 Dataform Core 함수에 대한 자세한 내용은 Dataform Core 참조를 확인하세요.

시작하기 전에

  1. 저장소에서 개발 작업공간을 만들고 초기화합니다.
  2. 선택사항: 데이터 소스를 선언합니다.

필요한 역할

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

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

테이블 정의에 대해 SQLX 파일 만들기

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

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

    Dataform 페이지로 이동

  2. 저장소를 열려면 저장소 이름을 클릭합니다.

  3. 개발 작업공간을 열려면 작업공간 이름을 클릭합니다.

  4. 파일 창에서 definitions/ 옆에 있는 더보기 메뉴를 클릭합니다.

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

  6. 파일 경로 추가 필드에 definitions/를 입력하고 파일 이름 다음에 .sqlx를 입력합니다. 예를 들면 definitions/my-table.sqlx입니다.

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

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

테이블 유형 정의

새 테이블 유형 정의를 만들려면 다음 단계를 따르세요.

  1. 개발 작업공간의 파일 창에서 definitions/ 디렉터리를 확장합니다.
  2. 수정할 테이블 정의 SQLX 파일을 선택합니다.
  3. 파일에 다음 코드 스니펫을 입력합니다.

    config { type: "TABLE_TYPE" }
    

    TABLE_TYPE을 다음 테이블 유형 중 하나로 바꿉니다.

    • table
    • incremental
    • view
  4. (선택사항): 구체화된 뷰를 정의하려면 type: "view" 아래에 materialized 속성을 다음 형식으로 입력합니다.

    config {
      type: "view",
      materialized: true
    }
    

    자세한 내용은 ITableConfig Dataform Core 참조를 확인하세요.

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

테이블 구조 및 종속 항목 정의

테이블 정의 SELECT 문을 작성하고 테이블 구조 및 종속 항목을 정의하려면 다음 단계를 수행합니다.

  1. 개발 작업공간의 파일 창에서 definitions/ 디렉터리를 확장합니다.
  2. 수정할 테이블 정의 SQLX 파일을 선택합니다.
  3. config 블록 아래에 SELECT 문을 작성합니다.
  4. (선택사항): 형식을 클릭합니다.

다음 코드 샘플은 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 문에서 참조되지 않지만 현재 테이블 전에 실행되어야 하는 테이블 종속 항목을 추가하려면 다음 단계를 따릅니다.

  1. 개발 작업공간의 파일 창에서 definitions/ 디렉터리를 확장합니다.
  2. 수정할 테이블 정의 SQLX 파일을 선택합니다.
  3. 테이블의 config 블록에 다음 코드 스니펫을 입력합니다.

    dependencies: [ "DEPENDENCY_TABLE", ]
    

    DEPENDENCY_TABLE을 종속 항목으로 추가하려는 테이블의 파일 이름으로 바꿉니다. 여러 파일 이름을 입력할 수 있습니다.

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

다음 코드 샘플은 테이블 정의 파일의 config 블록에 수동 테이블 종속 항목으로 추가된 두 테이블을 보여줍니다.

config { dependencies: [ "some_table", "some_other_table" ] }

다음 단계