Menggunakan kembali variabel dan fungsi dengan menyertakan di Dataform

Dokumen ini menunjukkan cara membuat include JavaScript untuk menggunakan kembali kode di Dataform.

Di folder includes/ repositori, Anda dapat menentukan menyertakan JavaScript. Mencakup konstanta atau fungsi global yang dapat Anda gunakan kembali di seluruh repositori.

Sebelum memulai

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka Dataform

  2. Pilih atau buat repositori Dataform.

  3. Pilih atau buat ruang kerja pengembangan Dataform.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna menggunakan kembali kode dengan menyertakan 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 untuk menyertakan di Dataform

Untuk membuat file JavaScript baru di direktori includes/, ikuti langkah-langkah berikut:

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

  2. Klik Create file.

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

    1. Di kolom Add a file path, setelah includes/, masukkan nama file diikuti dengan .js. Contohnya, includes/constants.js

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

    2. Klik Create file.

Membuat konstanta JavaScript

Untuk membuat konstanta yang dapat digunakan kembali di seluruh project, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.

  2. Di panel Files, luaskan includes/.

  3. Buat atau pilih file JavaScript dengan ekstensi .js.

  4. Di file tersebut, masukkan cuplikan kode berikut:

     const CONSTANT_NAME = CONSTANT_VALUE;
     module.exports = { CONSTANT_NAME };
    

    Ganti kode berikut:

    • CONSTANT_NAME: nama konstanta Anda
    • CONSTANT_VALUE: nilai konstanta Anda
  5. Opsional: Klik Format.

Contoh kode berikut menentukan konstanta PROJECT_ID dalam file includes/constants.js:

  // filename is includes/constants.js
  const PROJECT_ID = "my_project_name";
  module.exports = { PROJECT_ID };

Contoh kode berikut mereferensikan konstanta PROJECT_ID dalam kueri definisi tabel dalam file SQLX:

  config { type: "table" }
  SELECT * FROM ${constants.PROJECT_ID}.my_schema_name.my_table_name

Contoh kode berikut menunjukkan kueri definisi tabel inti Dataform di atas yang dikompilasi ke dalam SQL:

  SELECT * FROM my_project_name.my_schema_name.my_table_name

Membuat fungsi JavaScript kustom

Untuk membuat fungsi JavaScript kustom yang dapat digunakan kembali di seluruh project, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.

  2. Di panel Files, luaskan includes/.

  3. Buat atau pilih file JavaScript dengan ekstensi .js.

  4. Dalam file, tulis fungsi JavaScript kustom Anda.

  5. Di file tersebut, masukkan cuplikan kode berikut:

     module.exports = { FUNCTION_NAME }
    

    Ganti FUNCTION_NAME dengan nama fungsi Anda.

  6. Opsional: Klik Format.

Contoh kode berikut menunjukkan fungsi JavaScript kustom, yang disebut renderScript, dalam file includes/functions.js, yang menghasilkan skrip SQL:

  function renderScript(table, dimensions, metrics) {
    return `
        select
        ${dimensions.map(field => `${field} as ${field}`).join(",")},
        ${metrics.map(field => `sum(${field}) as ${field}`).join(",\n")}
        from ${table}
        group by ${dimensions.map((field, i) => `${i + 1}`).join(", ")}
      `;
  }

  module.exports = { renderScript };

Contoh kode berikut menunjukkan penggunaan fungsi JavaScript renderScript kustom dalam kueri definisi tabel inti Dataform:

  config {
      type: "table",
      tags: ["advanced", "hourly"],
      disabled: true
  }

  ${functions.renderScript(ref("source_table"),
                                ["country", "device_type"],
                                ["revenue", "pageviews", "sessions"]
                                )}

Contoh kode berikut menunjukkan kueri definisi tabel inti Dataform di atas yang dikompilasi menjadi SQL:

  select
    country as country,
    device_type as device_type,
    sum(revenue) as revenue,
    sum(pageviews) as pageviews,
    sum(sessions) as sessions

  from "dataform"."source_table"

  group by 1, 2

Mereferensikan include dalam file SQLX

Anda dapat mereferensikan fungsi atau konstanta penyertaan apa pun di dalam file SQLX. Sintaksis untuk mereferensikan include bergantung pada lokasi file include. File yang disertakan tingkat atas terletak langsung di direktori includes/. File include bertingkat terletak di subdirektori includes/.

Mereferensikan penyertaan tingkat teratas dalam file SQLX

  • Untuk mereferensikan fungsi atau konstanta include tingkat atas dalam kueri inti Dataform, masukkan nama file definisi include tanpa ekstensi .js, diikuti dengan nama objek yang diekspor.

Contoh kode berikut mereferensikan konstanta firstDate, yang ditentukan dalam file includes/constants.js, dalam file SQLX definisi tabel:

  config {type: "table"}
  select * from source_table where date > ${constants.firstDate}

Mereferensikan penyertaan bertingkat dalam file SQLX

Untuk mereferensikan include yang terletak di subdirektori definitions, impor include menggunakan fungsi require JavaScript dan blok js {}.

Untuk mereferensikan penyertaan bertingkat dengan fungsi JavaScript require, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.

  2. Di panel Files, luaskan definitions/.

  3. Pilih file SQLX.

  4. Di blok config, masukkan cuplikan kode berikut:

     js {
       var { VARIABLE_NAME } = require("SUBDIRECTORY_INCLUDE");
     }
    

    Ganti kode berikut:

    • VARIABLE_NAME: nama konstanta atau fungsi yang ingin Anda impor
    • SUBDIRECTORY_INCLUDE: jalur file includes bertingkat
  5. Opsional: Klik Format.

Contoh kode berikut mereferensikan konstanta firstDate, yang ditentukan dalam file includes/allConstants/constants.js bertingkat, dalam file SQLX definisi tabel:

  config {type: "table"}
  js {
    var { firstDate } = require("includes/allConstants/constants");
  }
  select * from source_table where date > ${firstDate}

Menggunakan fungsi include JavaScript dengan fungsi ref inti Dataform

Untuk menggunakan fungsi include JavaScript dengan fungsi ref inti Dataform, Anda harus meneruskan ref sebagai argumen fungsi include JavaScript di dalam file SQLX.

Contoh kode berikut menunjukkan file includes/script_builder.js dengan fungsi JavaScript renderScript yang menggabungkan metrik menggunakan SUM, lalu mengelompokkan berdasarkan dimensi:

function renderScript(table, dimensions, metrics) {
  return `
      SELECT
      ${dimensions.map((field) => `${field} AS ${field}`).join(",\\n")},
      ${metrics.map((field) => `SUM(${field}) AS ${field}`).join(",\\n")}
      FROM ${table}
      GROUP BY ${dimensions.map((field, i) => `${i + 1}`).join(", ")}
    `;
}
module.exports = { renderScript };

Contoh kode berikut menunjukkan fungsi JavaScript renderScript yang digunakan dalam file definitions/stats_per_country_and_device.sqlx dengan fungsi ref inti Dataform yang diteruskan sebagai argumen:

${script_builder.renderScript(
  ref("source_table"),
  ["country", "device_type"],
  ["revenue", "pageviews", "sessions"])}

Contoh kode berikut menunjukkan kueri definitions/stats_per_country_and_device.sqlx yang dikompilasi ke SQL:

SELECT country AS country,
       device_type AS device_type,
       SUM(revenue) AS revenue,
       SUM(pageviews) AS pageviews,
       SUM(sessions) AS sessions
FROM my_schema.source_table
GROUP BY 1, 2

Untuk informasi selengkapnya tentang fungsi ref inti Dataform, lihat Ringkasan inti Dataform.

Langkah selanjutnya