create_process

Penggunaan

derived_table: {
  create_process: {
    sql_step:
      CREATE TABLE ${SQL_TABLE_NAME}
      (customer_id int(11),
      lifetime_orders int(11)) ;;
    sql_step:
      INSERT INTO ${SQL_TABLE_NAME}
      (customer_id,
      lifetime_orders)
      SELECT customer_id, COUNT(*)
      AS lifetime_orders
      FROM order
      GROUP BY customer_id ;;
  }
}
Hierarki
create_process
Nilai Default
Tidak ada

Menerima
Satu atau beberapa subparameter sql_step

Definisi

Jika dialek database Anda menggunakan perintah Bahasa Definisi Data (DDL) kustom, Anda dapat menggunakan create_process untuk membuat tabel turunan persisten (PDT). create_process menentukan daftar pernyataan SQL yang akan dieksekusi dalam urutan yang tercantum. Setiap pernyataan SQL ditentukan menggunakan subparameter sql_step. Setiap subparameter sql_step dapat menyertakan kueri SQL yang valid. Anda dapat menentukan beberapa subparameter sql_step, dan subparameter tersebut akan dieksekusi satu per satu, dalam urutan yang ditentukan. Looker mengeluarkan pernyataan dalam subparameter sql_step apa adanya, tanpa koreksi error Looker yang biasa.

Misalnya, beberapa dialek database tidak mendukung CREATE TABLE as SELECT yang dikeluarkan sebagai satu pernyataan SQL; mereka memerlukan pernyataan SQL terpisah. Akibatnya, tabel turunan persisten berbasis SQL tradisional tidak dapat dibuat pada dialek ini. Parameter create_process menyediakan cara alternatif untuk membuat PDT, dengan membuat daftar pernyataan SQL terpisah yang dikeluarkan secara berurutan.

Anda juga dapat menggunakan create_process untuk mendukung dialek seperti model machine learning BigQuery ML prediktif Google.

Parameter create_process menunjukkan bahwa Anda menulis pernyataan CREATE lengkap untuk tabel turunan, termasuk indeks apa pun. Untuk menambahkan indeks untuk tabel turunan dengan create_process, gunakan parameter sql_step untuk menentukan SQL untuk indeks.

Untuk PDT yang ditentukan menggunakan create_process, Anda tidak dapat menggunakan salah satu parameter berikut:

  • indexes
  • cluster_keys
  • distribution
  • distribution_style
  • partition_keys
  • sortkeys
  • Contoh

    Buat tabel turunan persisten ctasless_customer_order_facts di database MySQL dalam dua langkah. Pertama, keluarkan pernyataan SQL CREATE TABLE, yang ditentukan oleh subparameter sql_step pertama. Kedua, keluarkan pernyataan SQL INSERT INTO dengan pernyataan SELECT, yang ditentukan oleh subparameter sql_step kedua:

    view: ctasless_customer_order_facts {
      derived_table: {
        datagroup_trigger: some_datagroup
        create_process: {
          sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
                             customer_id int(11),
                             lifetime_orders int(11)
                           ) ;;
          sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
                            SELECT customer_id, COUNT(*) AS lifetime_orders
                             FROM order
                             GROUP BY customer_id ;;
        }
      }
    }
    

    Hal-hal yang perlu dipertimbangkan

    Operator substitusi ${SQL_TABLE_NAME}

    Anda dapat menggunakan operator penggantian ${SQL_TABLE_NAME} untuk mengganti nama PDT yang sedang dibuat. Hal ini memastikan pernyataan SQL akan menyertakan nama PDT yang diberikan dalam parameter LookML view dengan benar.

    create_process harus membuat tabel dengan nama yang ditunjukkan oleh operator penggantian ${SQL_TABLE_NAME}, atau tabel akan dibangun ulang dari awal pada setiap interval pemeriksaan pemicu yang ditentukan dalam setelan Jadwal Pemeliharaan PDT dan Grup Data koneksi (defaultnya adalah lima menit). Hal ini dapat menyebabkan traffic kueri yang tidak terduga pada database atau data warehouse Anda.

    Gunakan sql_create untuk membuat PDT dalam satu langkah

    Jika dialek database Anda memerlukan perintah DDL kustom, dan Anda ingin membuat PDT dalam satu langkah, Anda dapat menggunakan sql_create untuk menentukan pernyataan SQL CREATE lengkap yang akan dieksekusi dan membuat PDT dalam satu langkah.

    Tabel yang ditentukan dengan create_process tidak dapat digunakan untuk PDT inkremental

    Agar dapat digunakan sebagai PDT inkremental, PDT berbasis SQL harus memiliki kueri yang ditentukan menggunakan parameter sql. PDT berbasis SQL yang ditentukan dengan parameter sql_create atau parameter create_process tidak dapat dibuat secara inkremental.

    Hal ini karena Looker menggunakan perintah INSERT atau MERGE untuk membuat inkremen untuk PDT inkremental. Tabel turunan tidak dapat ditentukan menggunakan pernyataan Bahasa Definisi Data (DDL) kustom, karena Looker tidak akan dapat menentukan pernyataan DDL mana yang diperlukan untuk membuat inkrement yang akurat.