Membuat alur kerja SQL Dataform dengan JavaScript

Dokumen ini menunjukkan cara menggunakan JavaScript untuk membuat elemen alur kerja SQL di Dataform. Anda mungkin ingin menggunakan JavaScript daripada inti Dataform untuk membuat elemen serupa berulang kali dalam alur kerja Anda.

Tentang mengembangkan alur kerja di Dataform dengan JavaScript

Dataform core memungkinkan Anda membuat tindakan alur kerja SQL dengan SQLX dan JavaScript. Dengan JavaScript, Anda dapat membuat tindakan serupa berulang kali dalam alur kerja. Misalnya, Anda dapat membuat tampilan setiap tabel dalam alur kerja dengan menghapus ID pengguna tertentu.

Contoh kode JavaScript berikut memungkinkan Anda membuat tampilan setiap tabel dengan nilai kolom user_id yang tidak sesuai dengan salah satu nilai dalam daftar blocked_user_ids:

  const tableNames = ["user_events", "user_settings", "user_logs"];

  tableNames.forEach(tableName => {
    publish(tableName + "_blocked_removed").query(
      ctx => `
        SELECT * FROM ${ctx.ref(tableName)}
        WHERE user_id NOT IN (
          SELECT user_id
          FROM ${ctx.ref("blocked_user_ids")}
        )`
    );
  });

Contoh kode ini membuat tiga tampilan bernama user_events_blocked_removed, user_settings_blocked_removed, dan user_logs_blocked_removed yang tidak berisi ID pengguna yang diblokir.

Anda dapat membuat beberapa tindakan dalam satu file JavaScript dengan metode global Dataform dan kode JavaScript ES5 arbitrer, seperti loop dan konstanta.

Anda dapat menentukan tindakan berikut dengan JavaScript di Dataform:

Sebelum memulai

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka Dataform

  2. Pilih atau buat repositori.

  3. Pilih atau buat ruang kerja pengembangan.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengembangkan alur kerja SQL dengan JavaScript, minta administrator untuk memberi Anda peran IAM Dataform Editor (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.

Membuat file JavaScript di Dataform

Simpan file JavaScript untuk definisi dan deklarasi sumber data di direktori definitions/. Untuk membuat file JavaScript baru di direktori definitions/, ikuti langkah-langkah berikut:

  1. Di panel Files, di samping definitions/, klik menu More.

  2. Klik Create file.

  3. Di panel Create new file, lakukan hal berikut:

    1. Di kolom Add a file path, setelah definitions/, masukkan nama file diikuti dengan .js. Contoh, definitions/definitions.js.

      Nama file hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.

    2. Klik Create file.

Menetapkan properti objek alur kerja SQL Dataform dengan JavaScript

Anda dapat menggunakan metode global Dataform berikut untuk membuat objek alur kerja SQL dengan Dataform:

  • declare. Digunakan untuk mendeklarasikan sumber data.
  • publish. Digunakan untuk menentukan tabel.
  • assert. Digunakan untuk membuat pernyataan.
  • operate. Digunakan untuk menentukan operasi SQL kustom.

Setiap metode global berisi properti yang dapat Anda gunakan untuk mengonfigurasi objek yang dibuat. Untuk mengetahui informasi selengkapnya tentang metode global dan propertinya, lihat referensi inti Dataform.

Dalam metode publish() yang membuat tabel, Anda dapat menetapkan properti tabel dengan meneruskannya sebagai argumen metode kedua.

Untuk meneruskan properti tabel sebagai argumen kedua publish(), ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan, di panel Files, luaskan definitions/.

  2. Pilih file JavaScript.

  3. Dalam file, tambahkan properti tabel ke metode publish() dalam format berikut:

     method("first_method_argument", {
       property1: "property1_value",
       property2: "property2_value",
       property3: "property3_value",
     });
    
  4. Opsional: Klik Format.

Contoh kode berikut menunjukkan cara menetapkan properti ke metode publish() dengan meneruskan properti sebagai argumen kedua metode:

  publish("table1", {
    type: "table",
    dependencies: ["other_table"],
    description: {
      "Value is 1"
    }
  }).query(ctx => "SELECT 1 AS test");

Referensi yang disertakan dalam file JavaScript

Anda dapat mereferensikan fungsi, makro, atau konstanta yang disertakan di dalam file JavaScript. Untuk mengetahui informasi selengkapnya tentang penyertaan di Dataform, lihat Menggunakan kembali variabel dan fungsi dengan penyertaan JavaScript.

Sintaksis untuk mereferensikan include di dalam file JavaScript bergantung pada lokasi file include. Dataform menyimpan file tersebut di direktori include.

Referensi tingkat teratas mencakup

  • Untuk mereferensikan file yang disertakan tingkat atas, referensikan nama file saat mendeklarasikan variabel.

Contoh kode berikut mereferensikan variabel serviceName dan serviceId dari file includes/service.js:

  const {serviceName, serviceId} = service;

Referensi bertingkat mencakup

Untuk mereferensikan file include bertingkat, masukkan nama file dalam fungsi require JavaScript.

Contoh kode berikut mereferensikan variabel serviceName dan serviceId dari file includes/allServices/service.js:

  const {serviceName, serviceId} = require("includes/allServices/service.js");

Menggunakan fungsi kueri Dataform dalam metode JavaScript

Dataform menyediakan sejumlah fungsi bawaan yang dapat Anda gunakan di dalam kueri, seperti ref dan self. Untuk informasi selengkapnya tentang fungsi bawaan Dataform, lihat referensi API Dataform.

Untuk menggunakan fungsi kueri bawaan dalam metode JavaScript, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan, di panel Files, luaskan definitions/.

  2. Pilih file JavaScript.

  3. Dalam file, masukkan metode JavaScript Dataform global.

  4. Dalam metode, masukkan argumen ctx yang dapat dikontekstualisasikan.

  5. Opsional: Jika Anda menggunakan string template JavaScript, gabungkan argumen yang dapat dikontekstualisasikan dalam tanda petik terbalik ``.

  6. Dalam argumen contextable, masukkan fungsi kueri dengan parameternya sebagai objek konteks.

  7. Opsional: Klik Format.

Contoh kode berikut menunjukkan fungsi kueri ref yang digabungkan di dalam argumen yang dapat dikontekstualisasikan dari metode publikasi:

  publish("example").query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`);

Mendeklarasikan sumber data alur kerja SQL dengan JavaScript

Anda dapat mendeklarasikan beberapa sumber data dalam satu file deklarasi JavaScript dengan metode JavaScript deklarasi Dataform. Untuk informasi selengkapnya tentang metode deklarasi, lihat Referensi inti Dataform. Untuk informasi selengkapnya tentang sumber data di Dataform, lihat Mendeklarasikan sumber data.

Untuk mendeklarasikan sumber data dalam file JavaScript, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan, di panel Files, luaskan definitions/.

  2. Pilih file JavaScript.

  3. Di file tersebut, masukkan cuplikan kode berikut:

     declare({
       database: "DATABASE_PROJECT_ID",
       schema: "BIGQUERY_SCHEMA",
       name: "RELATION_NAME",
     });
    

    Ganti kode berikut:

    • DATABASE_PROJECT_ID: project ID project yang berisi sumber data
    • BIGQUERY_SCHEMA: set data BigQuery tempat adanya hubungan eksternal
    • RELATION_NAME: nama hubungan yang nantinya dapat Anda gunakan untuk mereferensikan sumber data di Dataform
  4. Untuk mendeklarasikan sumber data lain dalam file yang sama, tambahkan blok declare tambahan ke file.

  5. Opsional: Klik Format.

Menentukan tabel dengan JavaScript

Anda dapat membuat tabel dengan metode publish JavaScript Dataform. Untuk informasi selengkapnya tentang metode publikasi, lihat referensi inti Dataform.

Anda dapat menentukan jenis tabel berikut: tabel, tabel inkremental, dan tampilan. Untuk informasi selengkapnya tentang cara menentukan tabel di Dataform, lihat Membuat tabel.

Untuk menentukan tabel dalam file JavaScript, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan, di panel Files, luaskan definitions/.

  2. Pilih file JavaScript.

  3. Di file tersebut, masukkan cuplikan kode berikut:

     publish("TABLE_NAME").query(ctx => "SELECT_QUERY");
    
    1. Ganti TABLE_NAME dengan nama tabel.

    2. Ganti SELECT_QUERY dengan pernyataan SQL SELECT yang menentukan tabel.

  4. Untuk menetapkan jenis tabel, menambahkan dependensi tabel, dan menambahkan deskripsi tabel, tetapkan properti objek dari metode publish.

  5. Untuk menentukan tabel lain dalam file yang sama, ulangi langkah 3 dan langkah 4.

  6. Opsional: Klik Format.

Menentukan pernyataan Dataform manual dengan JavaScript

Anda dapat membuat pernyataan SQL manual dalam file JavaScript dengan metode JavaScript pernyataan Dataform. Untuk informasi selengkapnya tentang metode pernyataan, lihat referensi inti Dataform.

Kueri SQL pernyataan manual harus menampilkan nol baris. Jika kueri menampilkan baris saat dijalankan, pernyataan akan gagal. Anda dapat membuat beberapa pernyataan dalam satu file JavaScript.

Untuk informasi selengkapnya tentang pernyataan di Dataform, lihat Menguji tabel dengan pernyataan.

Untuk membuat pernyataan manual dalam file JavaScript, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan, di panel Files, luaskan definitions/.

  2. Pilih file JavaScript.

  3. Di file tersebut, masukkan cuplikan kode berikut:

     assert("ASSERTION_NAME").query(ctx => "CUSTOM_ASSERTION_QUERY");
    
    1. Ganti ASSERTION_NAME dengan nama untuk pernyataan kustom Anda.

    2. Ganti CUSTOM_ASSERTION_QUERY dengan kueri pernyataan SQL Anda.

  4. Untuk membuat pernyataan lain dalam file yang sama, ulangi langkah 3.

  5. Opsional: Klik Format.

Contoh kode berikut menunjukkan pernyataan JavaScript yang menyatakan bahwa tidak ada nilai di source_table yang merupakan NULL:

  assert("assertion1").query(ctx => "SELECT * FROM source_table WHERE value IS NULL");

Menentukan operasi SQL kustom dengan JavaScript

Anda dapat menentukan operasi SQL kustom dalam file JavaScript dengan metode JavaScript operasi Dataform. Untuk mengetahui informasi selengkapnya tentang operasi SQL kustom di Dataform, lihat Menambahkan operasi SQL kustom.

Untuk menentukan operasi SQL kustom dengan JavaScript, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan, di panel Files, luaskan definitions/.

  2. Pilih file JavaScript.

  3. Di file tersebut, masukkan cuplikan kode berikut:

     operate("OPERATION_NAME").queries(ctx => "CUSTOM_SQL_QUERY");
    
    1. Ganti OPERATION_NAME dengan nama untuk operasi kustom.

    2. Ganti CUSTOM_SQL_QUERY dengan kueri SQL kustom Anda.

  4. Untuk menentukan operasi SQL kustom lainnya dalam file yang sama, ulangi langkah 3.

  5. Opsional: Klik Format.

Contoh kode berikut menunjukkan operasi SQL kustom dalam file JavaScript yang menyisipkan satu baris baru ke dalam some_table dan menetapkan test_column dari baris baru ke 2:

  operate("operation1").queries("INSERT INTO some_table (test_column) VALUES (2)");

Langkah selanjutnya