Menetapkan dependensi

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 fungsi ref, Anda harus menetapkan properti hasOutput ke true 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 blok config.

Anda dapat menentukan hubungan dependensi dengan cara berikut:

Sebelum memulai

  1. Buat dan lakukan inisialisasi ruang kerja pengembangan di repositori Anda.
  2. Opsional: Deklarasikan sumber data.
  3. 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:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan direktori definitions/.
  2. Pilih file SQLX tabel, pernyataan, atau operasi SQL kustom yang ingin Anda edit.
  3. 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.

  4. 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 blok config 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:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan definitions/.
  2. Pilih file SQLX tindakan alur kerja.
  3. Di blok config dari file tindakan, masukkan dependencies: [ "" ].
  4. 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, atau operations.
    • 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, atau operations.
    • 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, atau operations.
    • 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 atau 1. Jika hanya satu array kunci yang ditentukan dalam pernyataan, indeksnya adalah 0.

    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, atau operations.
    • 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 atau 1. Jika hanya satu array kunci yang ditentukan dalam pernyataan, indeksnya adalah 0.

    pernyataan manual

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

    Ganti kode berikut:

    • ACTION_TYPE: jenis tindakan alur kerja: table, view, atau operations.
    • MANUAL_ASSERTION_NAME nama pernyataan manual.
  5. Untuk menambahkan pernyataan lain sebagai dependensi ke tabel yang diedit, ulangi Langkah 4.

  6. 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:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan definitions/.
  2. Pilih file SQLX tindakan alur kerja.
  3. Dalam file, tetapkan parameter includeDependentAssertions ke true 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, atau operations.
    • 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, atau operations.
    • DEPENDENCY_ACTION_NAME: nama tindakan dependensi dengan pernyataan yang ingin Anda tetapkan sebagai dependensi dari tindakan yang diedit.
  4. 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:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan definitions/.
  2. Pilih file SQLX tindakan alur kerja.
  3. Dalam file, tetapkan parameter dependOnDependencyAssertions ke true 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, dan operations.

  4. 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 di name: "".

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