이 문서에서는 종속 항목을 선언하여 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
블록의 종속 항목을 선언하여 종속으로 설정할 수 있습니다.
다음과 같은 방법으로 종속 관계를 정의할 수 있습니다.
- Dataform Core
ref
함수를 사용하여 종속 항목을 선언하고SELECT
문에서 종속 항목을 참조합니다. - SQLX 정의 파일의
config
블록에서 종속 항목 목록을 선언합니다.
시작하기 전에
- 저장소에서 개발 작업공간을 만들고 초기화합니다.
- 선택사항: 데이터 소스를 선언합니다.
- 최소 두 개 이상의 워크플로 작업을 만듭니다. 테이블, 어설션, 데이터 소스 선언 또는 작업
필요한 역할
테이블, 어설션, 데이터 소스 선언, 커스텀 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 작업 전에 실행해야 하는 종속 항목을 선언하려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/
디렉터리를 펼칩니다. - 수정하려는 테이블, 어설션 또는 커스텀 SQL 작업 SQLX 파일을 선택합니다.
파일의
config
블록에 다음 코드 스니펫을 입력합니다.dependencies: [ "DEPENDENCY", ]
DEPENDENCY을 문자열 타겟으로 바꿉니다. 예를 들어 종속 항목으로 추가하려는 작업의 파일 이름입니다. 쉼표로 구분하여 여러 타겟을 입력할 수 있습니다.
(선택사항): 형식을 클릭합니다.
다음 코드 샘플은 테이블 정의 파일의 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의 선택된 어설션에만 종속되도록 하려면 선택한 어설션을 작업 B의
config
블록에 추가하면 됩니다.데이터 소스 선언을 제외한 모든 작업 유형에 대해 선택한 어설션을 종속 항목으로 수동으로 설정할 수 있습니다.
- 선택한 종속 항목 작업의 어설션을 종속 항목으로 설정
includeDependentAssertions
매개변수를 설정하여 선택한 종속 항목 워크플로 작업의 모든 직접 어설션을 수정된 작업의 종속 항목으로 자동 설정할 수 있습니다. Dataform은 종속 항목 액션의 어설션이 변경되는 경우 종속 항목이 최신 상태인지 확인하기 위해 액션을 컴파일할 때마다 이러한 어설션을 종속 항목으로 추가합니다.예를 들어 작업 C가 작업 A 및 B에 종속되는데 작업 C가 작업 A의 어설션에만 종속되기를 원한다면 작업 C를 수정하고
includeDependentAssertions
매개변수를 설정하여 작업 A의 모든 어설션을 작업 C의 종속 항목으로 자동 설정하면 됩니다.다음 유형의 작업에 대해
includeDependentAssertions
매개변수를 설정할 수 있습니다.table
view
operations
- 모든 종속 항목 작업의 어설션을 종속 항목으로 설정
dependOnDependencyAssertions
매개변수를 설정하여 수정된 작업의 모든 종속 항목 작업의 모든 직접 어설션을 수정된 작업의 추가 종속 항목으로 자동 설정할 수 있습니다. Dataform은 종속 항목 작업의 어설션이 변경되는 경우 종속 항목이 최신 상태인지 확인하기 위해 작업의 각 컴파일 중에 이러한 어설션을 종속 항목으로 추가합니다.예를 들어 작업 C가 작업 A 및 B에 종속되는 경우 작업 C를 수정하고
dependOnDependencyAssertions
매개변수를 설정하여 작업 A 및 B의 모든 어설션을 작업 C의 종속 항목으로 자동 설정하면 됩니다.다음 유형의 작업에 대해
dependOnDependencyAssertions
매개변수를 설정할 수 있습니다.table
view
operations
단일 파일에서 dependOnDependencyAssertions
매개변수와 includeDependentAssertions
매개변수를 설정하면 includeDependentAssertions
매개변수가 우선 적용됩니다. 예를 들어 dependOnDependencyAssertions
를 true
로 설정했지만 선택한 종속 항목 작업에 대해 includeDependentAssertions
를 false
로 설정하면 Dataform은 해당 작업의 어설션을 종속 항목에 추가하지 않습니다.
다음 코드 샘플은 동일한 테이블 정의 파일에 설정된 dependOnDependencyAssertions
및 includeDependentAssertions
매개변수를 보여줍니다.
// filename is tableName.sqlx
config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "actionA", {name: "actionB", includeDependentAssertions: false} ]
}
SELECT * FROM ${ref("actionC")}
위 코드 샘플에서 Dataform은 컴파일 중에 actionA
및 actionC
의 모든 직접 어설션을 tableName
의 종속 항목에 추가합니다.
선택한 어설션을 종속 항목으로 설정
선택한 어설션에 통과한 경우에만 워크플로 작업을 실행하려면 수정된 작업의 config
블록에서 dependencies: [ "" ]
줄에 선택한 어설션을 추가하면 됩니다.
선택한 어설션을 선택한 워크플로 작업의 종속 항목으로 설정하려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/
를 펼칩니다. - 워크플로 작업 SQLX 파일을 선택합니다.
- 작업 파일의
config
블록에dependencies: [ "" ]
을 입력합니다. 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: 수동 어설션의 이름
- ACTION_TYPE: 워크플로 작업의 유형(
수정된 표에 다른 어설션을 종속 항목으로 추가하려면 4단계를 반복합니다.
(선택사항): 형식을 클릭합니다.
다음 코드 샘플은 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
입니다.
선택한 종속 항목 작업의 모든 어설션을 종속 항목으로 설정하려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/
를 펼칩니다. - 워크플로 작업 SQLX 파일을 선택합니다.
파일에서 다음 방법 중 하나로
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: 어설션을 수정된 작업의 종속 항목으로 설정하려는 종속 항목 작업의 이름
- ACTION_TYPE: 워크플로 작업의 유형(
(선택사항): 형식을 클릭합니다.
다음 코드 샘플은 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
매개변수가 설정된 종속 항목 작업에 우선 적용됩니다.
선택한 종속 항목 작업의 모든 어설션을 종속 항목으로 설정하려면 다음 단계를 따르세요.
- 개발 작업공간의 파일 창에서
definitions/
를 펼칩니다. - 워크플로 작업 SQLX 파일을 선택합니다.
파일에서
dependOnDependencyAssertions
매개변수를 다음 형식으로true
로 설정합니다.config { type: "ACTION_TYPE", dependOnDependencyAssertions: true, dependencies: [ "dependency1", "dependency2" ] }
ACTION_TYPE: 워크플로 작업의 유형입니다. 지원되는 값은
table
,view
,operations
입니다.(선택사항): 형식을 클릭합니다.
다음 코드 샘플은 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")}
테이블 이름 재정의에 관한 자세한 내용은 테이블 설정 재정의를 참고하세요.
다음 단계
- 어설션을 종속 항목으로 설정하는 방법은 데이터 품질 테스트를 참고하세요.
- 데이터 소스를 선언하는 방법을 알아보려면 데이터 소스 선언을 참고하세요.
- 커스텀 SQL 작업을 정의하는 방법은 작업 만들기를 참고하세요.
- include를 사용하여 워크플로에서 코드를 재사용하는 방법은 include를 사용하여 단일 저장소에서 코드 재사용을 참고하세요.