종속 항목 설정

이 문서에서는 종속 항목을 선언하여 Dataform에서 워크플로의 객체 간 관계를 정의하는 방법을 보여줍니다.

워크플로의 객체 간 종속 항목 관계를 정의할 수 있습니다. 종속 항목 관계에서 종속 객체의 실행은 종속 항목 객체의 실행에 따라 달라집니다. 즉, Dataform은 종속 항목 객체 다음에 종속 객체를 실행합니다. 종속 객체의 SQLX 정의 파일 내에서 종속 항목을 선언하여 관계를 정의합니다.

종속 항목 선언은 Dataform이 워크플로 작업을 실행하는 순서를 결정하는 워크플로의 종속 항목 트리를 구성합니다.

다음 워크플로 작업 간의 종속 항목 관계를 정의할 수 있습니다.

데이터 소스 선언
Dataform 테이블 정의 및 SQL 작업에서 이러한 데이터 소스를 참조할 수 있는 BigQuery 데이터 소스 선언 데이터 소스 선언을 종속 항목으로 설정할 수 있지만 종속 객체로 설정할 수는 없습니다.
Tables
선언된 데이터 소스 또는 워크플로의 다른 테이블을 기반으로 Dataform에서 만드는 테이블입니다. Dataform은 테이블, 증분 테이블, 뷰, 구체화된 뷰와 같은 테이블 유형을 지원합니다. 테이블을 종속 항목과 종속으로 설정할 수 있습니다.
커스텀 SQL 작업
Dataform이 수정하지 않고 그대로 BigQuery에서 실행하는 SQL 문입니다. type: operations 파일에서 정의된 커스텀 SQL 작업을 종속 항목 및 종속으로 설정할 수 있습니다. 커스텀 SQL 작업을 ref 함수에서 종속 항목으로 선언하려면 커스텀 SQL 작업 SQLX 정의 파일에서 hasOutput 속성을 true로 설정해야 합니다.
어설션
테이블 데이터를 테스트하는 데 사용할 수 있는 데이터 품질 테스트 쿼리 Dataform은 워크플로를 업데이트할 때마다 어설션을 실행하고 어설션이 실패할 경우 알림을 제공합니다. type: assertion 파일에 정의된 어설션을 종속 항목으로, config 블록의 종속 항목을 선언하여 종속으로 설정할 수 있습니다.

다음과 같은 방법으로 종속 관계를 정의할 수 있습니다.

시작하기 전에

  1. 저장소에서 개발 작업공간을 만들고 초기화합니다.
  2. 선택사항: 데이터 소스를 선언합니다.
  3. 최소 두 개 이상의 워크플로 작업을 만듭니다. 테이블, 어설션, 데이터 소스 선언 또는 작업

필요한 역할

테이블, 어설션, 데이터 소스 선언, 커스텀 SQL 작업의 종속 항목을 선언하는 데 필요한 권한을 얻으려면 관리자에게 작업공간의 Dataform 편집자 (roles/dataform.editor) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

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

종속 항목을 ref 함수의 인수로 선언

SELECT 문에서 종속 항목을 참조하고 자동으로 선언하려면 종속 항목을 ref 함수의 인수로 추가합니다.

ref 함수는 워크플로에서 true로 설정된 hasOutput 속성을 사용하여 모든 테이블, 데이터 소스 선언 또는 커스텀 SQL 작업을 참조하고 자동으로 종속되도록 하는 Dataform Core 기본 제공 함수입니다.

ref 함수에 대한 자세한 내용은 Dataform Core 컨텍스트 메서드 참조를 확인하세요.

테이블 정의에서 ref 함수를 사용하는 방법에 대한 자세한 내용은 테이블 정의 정보를 참고하세요.

다음 코드 샘플은 증분 테이블의 incremental_table.sqlx SQLX 정의 파일에서 ref 함수의 인수로 추가된 source_data 데이터 소스 선언을 보여줍니다.

// filename is incremental_table.sqlx

config { type: "incremental" }

SELECT * FROM ${ref("source_data")}

앞의 코드 샘플에서 source_data은 자동으로 incremental_table의 종속 항목을 선언합니다.

다음 코드 샘플은 어설션의 custom_assertion.sqlx SQLX 정의 파일에서 ref 함수의 인수로 추가된 some_table 테이블 정의 SQLX 파일을 보여줍니다.

// filename is custom_assertion.sqlx

config { type: "assertion" }

SELECT
  *
FROM
  ${ref("some_table")}
WHERE
  a is null
  or b is null
  or c is null

앞의 코드 샘플에서 some_table은 자동으로 custom_assertion의 종속 항목을 선언합니다. 실행 중에 Dataform은 먼저 some_table을 실행한 다음 some_table이 생성되면 custom_assertion을 실행합니다.

config 블록에서 종속 항목 선언

종속의 SQL 문 정의에서 참조되지 않지만 테이블, 어설션 또는 커스텀 SQL 작업 전에 실행해야 하는 종속 항목을 선언하려면 다음 단계를 따르세요.

  1. 개발 작업공간의 파일 창에서 definitions/ 디렉터리를 펼칩니다.
  2. 수정하려는 테이블, 어설션 또는 커스텀 SQL 작업 SQLX 파일을 선택합니다.
  3. 파일의 config 블록에 다음 코드 스니펫을 입력합니다.

    dependencies: [ "DEPENDENCY", ]
    

    DEPENDENCY을 문자열 타겟으로 바꿉니다. 예를 들어 종속 항목으로 추가하려는 작업의 파일 이름입니다. 쉼표로 구분하여 여러 타겟을 입력할 수 있습니다.

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

다음 코드 샘플은 테이블 정의 파일의 config 블록에 종속 항목으로 추가된 some_table 테이블과 some_assertion 어설션을 보여줍니다.

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

어설션을 종속 항목으로 설정

워크플로 작업 B가 어설션이 있는 워크플로 작업 A에 종속되면 작업 A의 어설션 실패로 인해 Dataform의 작업 B 실행이 차단되지 않습니다. 작업 A의 어설션에 통과한 경우에만 작업 B를 실행하려면 작업 A의 어설션을 작업 B의 종속 항목으로 설정해야 합니다.

다음과 같은 방법으로 선택한 작업의 종속 항목으로 어설션을 설정할 수 있습니다.

선택한 어설션을 종속 항목으로 설정

수정된 작업의 config 블록에서 dependencies: [ "" ] 줄에 추가하여 선택한 어설션을 종속 항목으로 수동으로 설정할 수 있습니다.

예를 들어 작업 B가 작업 A에 종속되는데 작업 B가 작업 A의 선택된 어설션에만 종속되도록 하려면 선택한 어설션을 작업 Bconfig 블록에 추가하면 됩니다.

데이터 소스 선언을 제외한 모든 작업 유형에 대해 선택한 어설션을 종속 항목으로 수동으로 설정할 수 있습니다.

선택한 종속 항목 작업의 어설션을 종속 항목으로 설정

includeDependentAssertions 매개변수를 설정하여 선택한 종속 항목 워크플로 작업의 모든 직접 어설션을 수정된 작업의 종속 항목으로 자동 설정할 수 있습니다. Dataform은 종속 항목 액션의 어설션이 변경되는 경우 종속 항목이 최신 상태인지 확인하기 위해 액션을 컴파일할 때마다 이러한 어설션을 종속 항목으로 추가합니다.

예를 들어 작업 C가 작업 AB에 종속되는데 작업 C가 작업 A의 어설션에만 종속되기를 원한다면 작업 C를 수정하고 includeDependentAssertions 매개변수를 설정하여 작업 A의 모든 어설션을 작업 C의 종속 항목으로 자동 설정하면 됩니다.

다음 유형의 작업에 대해 includeDependentAssertions 매개변수를 설정할 수 있습니다.

  • table
  • view
  • operations
모든 종속 항목 작업의 어설션을 종속 항목으로 설정

dependOnDependencyAssertions 매개변수를 설정하여 수정된 작업의 모든 종속 항목 작업의 모든 직접 어설션을 수정된 작업의 추가 종속 항목으로 자동 설정할 수 있습니다. Dataform은 종속 항목 작업의 어설션이 변경되는 경우 종속 항목이 최신 상태인지 확인하기 위해 작업의 각 컴파일 중에 이러한 어설션을 종속 항목으로 추가합니다.

예를 들어 작업 C가 작업 AB에 종속되는 경우 작업 C를 수정하고 dependOnDependencyAssertions 매개변수를 설정하여 작업 AB의 모든 어설션을 작업 C의 종속 항목으로 자동 설정하면 됩니다.

다음 유형의 작업에 대해 dependOnDependencyAssertions 매개변수를 설정할 수 있습니다.

  • table
  • view
  • operations

단일 파일에서 dependOnDependencyAssertions 매개변수와 includeDependentAssertions 매개변수를 설정하면 includeDependentAssertions 매개변수가 우선 적용됩니다. 예를 들어 dependOnDependencyAssertionstrue로 설정했지만 선택한 종속 항목 작업에 대해 includeDependentAssertionsfalse로 설정하면 Dataform은 해당 작업의 어설션을 종속 항목에 추가하지 않습니다.

다음 코드 샘플은 동일한 테이블 정의 파일에 설정된 dependOnDependencyAssertionsincludeDependentAssertions 매개변수를 보여줍니다.

// filename is tableName.sqlx

config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "actionA", {name: "actionB", includeDependentAssertions: false} ]
}

SELECT * FROM ${ref("actionC")}

위 코드 샘플에서 Dataform은 컴파일 중에 actionAactionC의 모든 직접 어설션을 tableName의 종속 항목에 추가합니다.

선택한 어설션을 종속 항목으로 설정

선택한 어설션에 통과한 경우에만 워크플로 작업을 실행하려면 수정된 작업의 config 블록에서 dependencies: [ "" ] 줄에 선택한 어설션을 추가하면 됩니다.

선택한 어설션을 선택한 워크플로 작업의 종속 항목으로 설정하려면 다음 단계를 따르세요.

  1. 개발 작업공간의 파일 창에서 definitions/를 펼칩니다.
  2. 워크플로 작업 SQLX 파일을 선택합니다.
  3. 작업 파일의 config 블록에 dependencies: [ "" ]을 입력합니다.
  4. dependencies: [ "" ] 내에서 작업 어설션의 이름 또는 종속 항목으로 설정하려는 수동 어설션의 파일 이름을 다음 형식 중 하나로 입력합니다.

    nonNull

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_nonNull"]
    }
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • ACTION_DATASET_NAME: 작업이 정의된 데이터 세트의 이름. 기본 데이터 세트는 워크플로 설정 파일에 정의되어 있습니다.
    • ACTION_NAME: 어설션이 정의된 작업의 이름

    rowConditions

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_rowConditions"]
    }
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • DATASET_NAME: 작업이 정의된 데이터 세트의 이름. 기본 데이터 세트는 워크플로 설정 파일에 정의되어 있습니다.
    • ACTION_NAME: 어설션이 정의된 작업의 이름

    uniqueKey

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_uniqueKey_INDEX"]
    }
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • DATASET_NAME: 테이블이 정의된 데이터 세트의 이름. 기본 데이터 세트는 워크플로 설정 파일에 정의되어 있습니다.
    • ACTION_NAME: 어설션이 정의된 테이블의 이름
    • INDEX: 종속 항목으로 추가하려는 uniqueKey 어설션에 정의된 키 배열의 색인(예: 0 또는 1). 어설션에 키 배열이 하나만 정의된 경우 색인은 0입니다.

    uniqueKeys

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_uniqueKeys_INDEX"]
    }
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • DATASET_NAME: 테이블이 정의된 데이터 세트의 이름. 기본 데이터 세트는 워크플로 설정 파일에 정의되어 있습니다.
    • ACTION_NAME: 어설션이 정의된 테이블의 이름
    • INDEX: 종속 항목으로 추가하려는 uniqueKeys 어설션에 정의된 키 배열의 색인(예: 0 또는 1). 어설션에 키 배열이 하나만 정의된 경우 색인은 0입니다.

    수동 어설션

    config {
      type: "ACTION_TYPE",
      dependencies: [ "MANUAL_ASSERTION_NAME"]
    }
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • MANUAL_ASSERTION_NAME: 수동 어설션의 이름
  5. 수정된 표에 다른 어설션을 종속 항목으로 추가하려면 4단계를 반복합니다.

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

다음 코드 샘플은 dataform 데이터 세트에 정의된 A 테이블에 추가된 어설션을 보여줍니다.

config {
  type: "table",
  assertions: {
    uniqueKey: ["user_id"],
    nonNull: ["user_id", "customer_id"],
  }
}

다음 코드 샘플은 B 테이블에 종속 항목으로 추가된 A 테이블 어설션을 보여줍니다.

config {
  type: "table",
  dependencies: [ "dataform_A_assertions_uniqueKey_0",  "dataform_A_assertions_nonNull"]
}

다음 코드 샘플은 manualAssertion.sqlx 파일에 정의되고 뷰에 종속 항목으로 추가된 수동 어설션을 보여줍니다.

config {
  type: "view",
  dependencies: [ "manualAssertion"]
}

다음 코드 샘플은 테이블에 종속 항목으로 추가된 manual_assertion 파일과 sometable 테이블의 어설션을 보여줍니다.

config {
  type: "table",
  dependencies: [ "manual_assertion",  "dataform_sometable_assertions_nonNull" ,  "dataform_sometable_assertions_rowConditions"]
}

SELECT * FROM ${ref("referenced_table")} LEFT JOIN ...

선택한 작업의 어설션을 종속 항목으로 설정

선택한 종속 항목 작업의 모든 직접 어설션에 통과한 경우에만 워크플로 작업을 실행하려면 수정된 작업에서 includeDependentAssertions 매개변수를 true로 설정합니다. Dataform은 컴파일 중에 선택한 종속 항목 작업의 직접 어설션을 종속 항목에 자동으로 추가합니다. 기본값은 false입니다.

선택한 종속 항목 작업의 모든 어설션을 종속 항목으로 설정하려면 다음 단계를 따르세요.

  1. 개발 작업공간의 파일 창에서 definitions/를 펼칩니다.
  2. 워크플로 작업 SQLX 파일을 선택합니다.
  3. 파일에서 다음 방법 중 하나로 includeDependentAssertions 매개변수를 true로 설정합니다.

    config 블록

    config {
    type: "ACTION_TYPE",
    dependencies: [{name: "dEPENDENCY_ACTION_NAME", includeDependentAssertions: true}]
    }
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • DEPENDENCY_ACTION_NAME: 어설션을 수정된 작업의 종속 항목으로 설정하려는 종속 항목 작업의 이름

    SELECT

      config { type: "ACTION_TYPE" }
    
      SELECT * FROM ${ref({name: "DEPENDENCY_ACTION_NAME", includeDependentAssertions: true})}
    

    다음을 바꿉니다.

    • ACTION_TYPE: 워크플로 작업의 유형(table, view, operations)
    • DEPENDENCY_ACTION_NAME: 어설션을 수정된 작업의 종속 항목으로 설정하려는 종속 항목 작업의 이름
  4. (선택사항): 형식을 클릭합니다.

다음 코드 샘플은 viewA, tableB, tableB의 모든 어설션에 종속되는 tableC을 보여줍니다.

// filename is tableC.sqlx

config {
type: "table",
dependencies: ["viewA", {name: "tableB", includeDependentAssertions: true}]
}

SELECT * FROM ...

앞의 코드 샘플에서 Dataform은 컴파일 중에 tableB의 모든 직접 어설션을 tableC의 종속 항목으로 자동 추가합니다.

모든 종속 항목 작업의 어설션을 종속 항목으로 설정

모든 종속 항목 작업의 모든 직접 어설션에 통과한 경우에만 워크플로 작업을 실행하려면 수정된 작업에서 dependOnDependencyAssertions 매개변수를 true로 설정합니다. Dataform은 컴파일 중에 종속 항목 작업의 직접 어설션을 종속 항목으로 자동 추가합니다. 기본값은 false입니다.

단일 파일에서 dependOnDependencyAssertions 매개변수와 includeDependentAssertions 매개변수를 설정하면 includeDependentAssertions 매개변수가 설정된 종속 항목 작업에 우선 적용됩니다.

선택한 종속 항목 작업의 모든 어설션을 종속 항목으로 설정하려면 다음 단계를 따르세요.

  1. 개발 작업공간의 파일 창에서 definitions/를 펼칩니다.
  2. 워크플로 작업 SQLX 파일을 선택합니다.
  3. 파일에서 dependOnDependencyAssertions 매개변수를 다음 형식으로 true로 설정합니다.

    config {
    type: "ACTION_TYPE",
    dependOnDependencyAssertions: true,
    dependencies: [ "dependency1", "dependency2" ]
    }
    

    ACTION_TYPE: 워크플로 작업의 유형입니다. 지원되는 값은 table, view, operations입니다.

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

다음 코드 샘플은 sometableA, sometabletableB, sometableC, sometableD, 종속 항목 테이블의 모든 직접 어설션에 종속되는 sometableE을 보여줍니다.

// filename is sometableE.sqlx

config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "sometableA", "sometableB" ]
}

SELECT * FROM ${ref("sometableC")}
SELECT * FROM ${ref("sometableD")}

위 코드 샘플에서 Dataform은 컴파일 중에 sometableA, sometableB, sometableC, sometableD의 모든 직접 어설션을 sometableE의 종속 항목으로 자동 추가합니다.

재정의된 테이블 이름으로 테이블 참조

  • 재정의된 테이블 이름으로 테이블을 참조하려면 ref 함수에서 name: ""에 설정된 재정의된 테이블 이름을 입력합니다.

다음 코드 샘플은 이름이 overridden_name으로 재정의된 테이블을 참조합니다.

  SELECT * FROM ${ref("overridden_name")}

테이블 이름 재정의에 관한 자세한 내용은 테이블 설정 재정의를 참고하세요.

다음 단계