Dokumen ini menunjukkan cara menentukan hubungan antar-objek dalam alur kerja di Dataform dengan mendeklarasikan dependensi.
Anda dapat menentukan hubungan dependensi antar-objek alur kerja. Dalam hubungan dependensi, eksekusi objek dependen bergantung pada eksekusi objek dependensi. Artinya, Dataform menjalankan yang dependen setelah yang menjadi dependensi. Anda menentukan hubungan dengan mendeklarasikan dependensi di dalam file definisi SQLX objek dependen.
Deklarasi dependensi membentuk pohon dependensi alur kerja Anda yang menentukan urutan Dataform menjalankan tindakan alur kerja Anda.
Anda dapat menentukan hubungan dependensi antara tindakan alur kerja berikut:
- Deklarasi sumber data
- Deklarasi sumber data BigQuery yang memungkinkan Anda mereferensikan sumber data ini dalam definisi tabel Dataform dan operasi SQL. Anda dapat menetapkan deklarasi sumber data sebagai dependensi, tetapi bukan sebagai dependen.
- Tables
- Tabel yang Anda buat di Dataform berdasarkan sumber data yang dideklarasikan atau tabel lain dalam alur kerja Anda. Dataform mendukung jenis tabel berikut: tabel, tabel inkremental, tampilan, dan tampilan terwujud. Anda dapat menetapkan tabel sebagai dependensi dan sebagai tabel dependen.
- Operasi SQL kustom
- Pernyataan SQL yang dijalankan Dataform di BigQuery apa adanya,
tanpa modifikasi. Anda dapat menetapkan operasi SQL kustom yang ditentukan dalam file
type: operations
sebagai dependensi dan sebagai yang bergantung. Untuk mendeklarasikan operasi SQL kustom sebagai dependensi dalam fungsiref
, Anda harus menetapkan propertihasOutput
ketrue
dalam file definisi SQLX operasi SQL kustom. - Pernyataan
- Kueri pengujian kualitas data yang dapat Anda gunakan untuk menguji data tabel.
Dataform menjalankan pernyataan setiap kali memperbarui alur kerja Anda dan
memberi tahu Anda jika ada pernyataan yang gagal. Anda dapat menetapkan pernyataan yang ditentukan dalam file
type: assertion
sebagai dependensi dan sebagai yang bergantung dengan mendeklarasikan dependensi dalam blokconfig
.
Anda dapat menentukan hubungan dependensi dengan cara berikut:
- Deklarasikan dependensi dengan menggunakan fungsi inti Dataform
ref
untuk mereferensikan dependensi dalam pernyataanSELECT
. - Deklarasikan daftar dependensi dalam blok
config
file definisi SQLX.
Sebelum memulai
- Buat dan lakukan inisialisasi ruang kerja pengembangan di repositori Anda.
- Opsional: Deklarasikan sumber data.
- Buat minimal dua tindakan alur kerja: tabel, pernyataan, deklarasi sumber data, atau operasi.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna mendeklarasikan dependensi untuk tabel, pernyataan, deklarasi sumber data, dan operasi SQL kustom,
minta administrator untuk memberi Anda
peran IAM Editor Dataform (roles/dataform.editor
)
di ruang kerja.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Mendeklarasikan dependensi sebagai argumen fungsi ref
Untuk mereferensikan dan mendeklarasikan dependensi secara otomatis dalam pernyataan SELECT
,
tambahkan dependensi sebagai argumen fungsi ref
.
Fungsi ref
adalah fungsi bawaan inti Dataform yang memungkinkan Anda mereferensikan dan secara otomatis bergantung pada tabel, deklarasi sumber data, atau operasi SQL kustom dengan properti hasOutput
yang ditetapkan ke true
dalam alur kerja Anda.
Untuk mengetahui informasi selengkapnya tentang fungsi ref
, lihat
Referensi metode konteks inti Dataform.
Untuk mengetahui informasi selengkapnya tentang penggunaan fungsi ref
dalam definisi tabel, lihat
Tentang definisi tabel.
Contoh kode berikut menunjukkan deklarasi sumber data source_data
yang ditambahkan sebagai argumen fungsi ref
dalam file definisi SQLX incremental_table.sqlx
dari tabel inkremental:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
Dalam contoh kode sebelumnya, source_data
otomatis dinyatakan sebagai
dependensi incremental_table
.
Contoh kode berikut menunjukkan file SQLX definisi tabel some_table
yang ditambahkan
sebagai argumen fungsi ref
dalam file definisi SQLX
custom_assertion.sqlx
pernyataan:
// 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
Dalam contoh kode sebelumnya, some_table
otomatis dinyatakan sebagai
dependensi custom_assertion
. Selama eksekusi, Dataform menjalankan
some_table
terlebih dahulu, lalu menjalankan custom_assertion
setelah some_table
dibuat.
Mendeklarasikan dependensi di blok config
Untuk mendeklarasikan dependensi yang tidak dirujuk dalam definisi pernyataan SQL dependen, tetapi perlu dijalankan sebelum operasi SQL kustom, pernyataan, atau tabel, ikuti langkah-langkah berikut:
- Di ruang kerja pengembangan Anda, di panel Files, luaskan
direktori
definitions/
. - Pilih file SQLX tabel, pernyataan, atau operasi SQL kustom yang ingin Anda edit.
Di blok
config
file, masukkan cuplikan kode berikut:dependencies: [ "DEPENDENCY", ]
Ganti DEPENDENCY dengan target string—misalnya, nama file tindakan yang ingin Anda tambahkan sebagai dependensi. Anda dapat memasukkan beberapa target, yang dipisahkan dengan koma.
Opsional: Klik Format.
Contoh kode berikut menunjukkan tabel some_table
dan pernyataan some_assertion
yang ditambahkan sebagai dependensi ke blok config
file definisi tabel:
config { dependencies: [ "some_table", "some_assertion" ] }
Menetapkan pernyataan sebagai dependensi
Jika tindakan alur kerja B bergantung pada tindakan alur kerja A, yang memiliki pernyataan, kegagalan pernyataan tindakan A tidak akan menghalangi Dataform mengeksekusi tindakan B. Untuk menjalankan tindakan B hanya jika pernyataan tindakan A lulus, Anda harus menetapkan pernyataan tindakan A sebagai dependensi tindakan B.
Anda dapat menetapkan pernyataan sebagai dependensi tindakan yang dipilih dengan cara berikut:
- Menetapkan pernyataan yang dipilih sebagai dependensi
Anda dapat menetapkan pernyataan yang dipilih secara manual sebagai dependensi dengan menambahkannya ke baris
dependencies: [ "" ]
dalam blokconfig
dari tindakan yang diedit.Misalnya, jika tindakan B bergantung pada tindakan A, dan Anda ingin tindakan B hanya bergantung pada pernyataan yang dipilih dari tindakan A, Anda dapat menambahkan pernyataan yang dipilih tersebut ke blok
config
dari tindakan B.Anda dapat menetapkan pernyataan yang dipilih secara manual sebagai dependensi untuk semua jenis tindakan, kecuali deklarasi sumber data.
- Menetapkan pernyataan tindakan dependensi yang dipilih sebagai dependensi
Anda dapat menyetel parameter
includeDependentAssertions
untuk otomatis menetapkan semua pernyataan langsung dari tindakan alur kerja dependensi yang dipilih sebagai dependensi dari tindakan yang diedit. Dataform menambahkan pernyataan ini sebagai dependensi selama setiap kompilasi tindakan untuk memverifikasi bahwa dependensi sudah terbaru jika pernyataan tindakan dependensi berubah.Misalnya, jika tindakan C bergantung pada tindakan A dan B, tetapi Anda hanya ingin tindakan C bergantung pada pernyataan tindakan A, Anda dapat mengedit tindakan C dan menyetel parameter
includeDependentAssertions
untuk otomatis menyetel semua pernyataan tindakan A sebagai dependensi tindakan C.Anda dapat menetapkan parameter
includeDependentAssertions
untuk tindakan dari jenis berikut:table
view
operations
- Menetapkan pernyataan semua tindakan dependensi sebagai dependensi
Anda dapat menetapkan parameter
dependOnDependencyAssertions
untuk menetapkan semua pernyataan langsung dari semua tindakan dependensi tindakan yang diedit sebagai dependensi tambahan dari tindakan yang diedit secara otomatis. Dataform menambahkan pernyataan ini sebagai dependensi selama setiap kompilasi tindakan untuk memverifikasi bahwa dependensi sudah terbaru jika pernyataan tindakan dependensi berubah.Misalnya, jika tindakan C bergantung pada tindakan A dan B, Anda dapat mengedit tindakan C dan menetapkan parameter
dependOnDependencyAssertions
untuk secara otomatis menetapkan semua pernyataan tindakan A dan B sebagai dependensi tindakan C.Anda dapat menetapkan parameter
dependOnDependencyAssertions
untuk tindakan dari jenis berikut:table
view
operations
Saat Anda menetapkan parameter dependOnDependencyAssertions
dan
parameter includeDependentAssertions
dalam satu file, parameter
includeDependentAssertions
akan diprioritaskan. Misalnya, jika Anda menyetel
dependOnDependencyAssertions
ke true
, tetapi Anda juga menyetel
includeDependentAssertions
ke false
untuk tindakan dependensi yang dipilih,
Dataform tidak akan menambahkan pernyataan tindakan tersebut ke dependensi.
Contoh kode berikut menunjukkan parameter dependOnDependencyAssertions
dan includeDependentAssertions
yang ditetapkan dalam file definisi tabel yang sama:
// filename is tableName.sqlx
config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "actionA", {name: "actionB", includeDependentAssertions: false} ]
}
SELECT * FROM ${ref("actionC")}
Dalam contoh kode sebelumnya, Dataform menambahkan semua pernyataan langsung
actionA
dan actionC
ke dependensi tableName
selama
kompilasi.
Menetapkan pernyataan yang dipilih sebagai dependensi
Untuk menjalankan tindakan alur kerja hanya saat pernyataan yang dipilih lulus, Anda dapat menambahkan pernyataan yang dipilih ke baris dependencies: [ "" ]
dalam blok config
dari tindakan yang diedit.
Untuk menetapkan pernyataan yang dipilih sebagai dependensi tindakan alur kerja yang dipilih, ikuti langkah-langkah berikut:
- Di ruang kerja pengembangan Anda, di panel Files, luaskan
definitions/
. - Pilih file SQLX tindakan alur kerja.
- Di blok
config
dari file tindakan, masukkandependencies: [ "" ]
. Di dalam
dependencies: [ "" ]
, masukkan nama pernyataan tindakan atau nama file pernyataan manual yang ingin Anda tetapkan sebagai dependensi dalam salah satu format berikut:nonNull
config { type: "ACTION_TYPE", dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_nonNull"] }
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - ACTION_DATASET_NAME: nama set data tempat tindakan ditentukan. Set data default ditentukan dalam file setelan alur kerja.
- ACTION_NAME: nama tindakan tempat pernyataan ditentukan.
rowConditions
config { type: "ACTION_TYPE", dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_rowConditions"] }
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - DATASET_NAME: nama set data tempat tindakan ditentukan. Set data default ditentukan dalam file setelan alur kerja.
- ACTION_NAME: nama tindakan tempat pernyataan ditentukan.
uniqueKey
config { type: "ACTION_TYPE", dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_uniqueKey_INDEX"] }
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - DATASET_NAME: nama set data tempat tabel didefinisikan. Set data default ditentukan dalam file setelan alur kerja.
- ACTION_NAME: nama tabel tempat pernyataan ditentukan.
- INDEX: indeks array kunci yang ditentukan dalam
pernyataan
uniqueKey
yang ingin Anda tambahkan sebagai dependensi—misalnya,0
atau1
. Jika hanya satu array kunci yang ditentukan dalam pernyataan, indeksnya adalah0
.
uniqueKeys
config { type: "ACTION_TYPE", dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_uniqueKeys_INDEX"] }
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - DATASET_NAME: nama set data tempat tabel didefinisikan. Set data default ditentukan dalam file setelan alur kerja.
- ACTION_NAME: nama tabel tempat pernyataan ditentukan.
- INDEX: indeks array kunci yang ditentukan dalam
pernyataan
uniqueKeys
yang ingin Anda tambahkan sebagai dependensi—misalnya,0
atau1
. Jika hanya satu array kunci yang ditentukan dalam pernyataan, indeksnya adalah0
.
pernyataan manual
config { type: "ACTION_TYPE", dependencies: [ "MANUAL_ASSERTION_NAME"] }
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - MANUAL_ASSERTION_NAME nama pernyataan manual.
- ACTION_TYPE: jenis tindakan alur kerja:
Untuk menambahkan pernyataan lain sebagai dependensi ke tabel yang diedit, ulangi Langkah 4.
Opsional: Klik Format.
Contoh kode berikut menunjukkan pernyataan yang ditambahkan ke tabel A, yang
ditentukan dalam set data dataform
:
config {
type: "table",
assertions: {
uniqueKey: ["user_id"],
nonNull: ["user_id", "customer_id"],
}
}
Contoh kode berikut menunjukkan pernyataan tabel A yang ditambahkan sebagai dependensi ke tabel B:
config {
type: "table",
dependencies: [ "dataform_A_assertions_uniqueKey_0", "dataform_A_assertions_nonNull"]
}
Contoh kode berikut menunjukkan pernyataan manual yang ditentukan dalam
file manualAssertion.sqlx
dan ditambahkan sebagai dependensi ke tampilan:
config {
type: "view",
dependencies: [ "manualAssertion"]
}
Contoh kode berikut menunjukkan file manual_assertion
dan
pernyataan tabel sometable
yang ditambahkan sebagai dependensi ke tabel:
config {
type: "table",
dependencies: [ "manual_assertion", "dataform_sometable_assertions_nonNull" , "dataform_sometable_assertions_rowConditions"]
}
SELECT * FROM ${ref("referenced_table")} LEFT JOIN ...
Menetapkan pernyataan tindakan yang dipilih sebagai dependensi
Untuk menjalankan tindakan alur kerja hanya saat semua pernyataan langsung dari tindakan
dependensi yang dipilih berhasil, tetapkan parameter includeDependentAssertions
ke
true
dalam tindakan yang diedit. Dataform otomatis menambahkan pernyataan langsung
dari tindakan dependensi yang dipilih ke dependensi selama
kompilasi. Nilai defaultnya adalah false
.
Untuk menetapkan semua pernyataan tindakan dependensi yang dipilih sebagai dependensi, ikuti langkah-langkah berikut:
- Di ruang kerja pengembangan Anda, di panel Files, luaskan
definitions/
. - Pilih file SQLX tindakan alur kerja.
Dalam file, tetapkan parameter
includeDependentAssertions
ketrue
dengan salah satu cara berikut:Di blok
config
config { type: "ACTION_TYPE", dependencies: [{name: "dEPENDENCY_ACTION_NAME", includeDependentAssertions: true}] }
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - DEPENDENCY_ACTION_NAME: nama tindakan dependensi dengan pernyataan yang ingin Anda tetapkan sebagai dependensi dari tindakan yang diedit.
Dalam pernyataan
SELECT
config { type: "ACTION_TYPE" } SELECT * FROM ${ref({name: "DEPENDENCY_ACTION_NAME", includeDependentAssertions: true})}
Ganti kode berikut:
- ACTION_TYPE: jenis tindakan alur kerja:
table
,view
, atauoperations
. - DEPENDENCY_ACTION_NAME: nama tindakan dependensi dengan pernyataan yang ingin Anda tetapkan sebagai dependensi dari tindakan yang diedit.
- ACTION_TYPE: jenis tindakan alur kerja:
Opsional: Klik Format.
Contoh kode berikut menunjukkan tableC
, yang bergantung pada viewA
, tableB
,
dan semua pernyataan tableB
:
// filename is tableC.sqlx
config {
type: "table",
dependencies: ["viewA", {name: "tableB", includeDependentAssertions: true}]
}
SELECT * FROM ...
Dalam contoh kode sebelumnya, Dataform otomatis menambahkan semua
pernyataan langsung tableB
sebagai dependensi ke tableC
selama kompilasi.
Tetapkan pernyataan semua tindakan dependensi sebagai dependensi
Untuk menjalankan tindakan alur kerja hanya jika semua pernyataan langsung dari semua
tindakan dependensi berhasil, tetapkan parameter dependOnDependencyAssertions
ke true
dalam tindakan yang diedit. Dataform otomatis menambahkan pernyataan langsung tindakan dependensi sebagai dependensi selama kompilasi. Nilai defaultnya adalah false
.
Jika Anda menetapkan parameter dependOnDependencyAssertions
dan
parameter includeDependentAssertions
dalam satu file, parameter
includeDependentAssertions
akan diprioritaskan untuk tindakan
ketergantungan yang ditetapkan.
Untuk menetapkan semua pernyataan tindakan dependensi yang dipilih sebagai dependensi, ikuti langkah-langkah berikut:
- Di ruang kerja pengembangan Anda, di panel Files, luaskan
definitions/
. - Pilih file SQLX tindakan alur kerja.
Dalam file, tetapkan parameter
dependOnDependencyAssertions
ketrue
dalam format berikut:config { type: "ACTION_TYPE", dependOnDependencyAssertions: true, dependencies: [ "dependency1", "dependency2" ] }
Ganti ACTION_TYPE: jenis tindakan alur kerja. Nilai yang didukung mencakup
table
,view
, danoperations
.Opsional: Klik Format.
Contoh kode berikut menunjukkan sometableE
, yang bergantung pada sometableA
,
sometabletableB
, sometableC
, sometableD
, dan semua pernyataan langsung dari
tabel dependensi:
// filename is sometableE.sqlx
config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "sometableA", "sometableB" ]
}
SELECT * FROM ${ref("sometableC")}
SELECT * FROM ${ref("sometableD")}
Dalam contoh kode sebelumnya, Dataform otomatis menambahkan semua
pernyataan langsung sometableA
, sometableB
, sometableC
, dan sometableD
sebagai dependensi ke sometableE
selama kompilasi.
Mereferensikan tabel dengan nama tabel yang diganti
- Untuk mereferensikan tabel dengan nama tabel yang diganti, di fungsi
ref
, masukkan nama tabel yang diganti yang ditetapkan diname: ""
.
Contoh kode berikut mereferensikan tabel dengan nama yang diganti menjadi
overridden_name
:
SELECT * FROM ${ref("overridden_name")}
Untuk mengetahui informasi selengkapnya tentang mengganti nama tabel, lihat Mengganti setelan tabel.
Langkah berikutnya
- Untuk mempelajari cara menetapkan pernyataan sebagai dependensi, lihat Menguji kualitas data.
- Untuk mempelajari cara mendeklarasikan sumber data, lihat Mendeklarasikan sumber data.
- Untuk mempelajari cara menentukan operasi SQL kustom, lihat Membuat operasi.
- Untuk mempelajari cara menggunakan kembali kode di seluruh alur kerja dengan include, lihat Menggunakan kembali kode di seluruh repositori tunggal dengan include.