sql (untuk tabel turunan)

Halaman ini mengacu pada parameter sql yang merupakan bagian dari tabel turunan.

Anda juga dapat menggunakan sql sebagai bagian dari kolom, seperti yang dijelaskan di halaman dokumentasi parameter sql (untuk kolom).

Penggunaan

view: my_derived_table {
  derived_table: {
    sql: 
      SELECT *
      FROM events
      WHERE type NOT IN ('test', 'staff')
 ;;
    ...
  }
}
Hierarki
sql
Nilai Default
Tidak ada

Menerima
Blok SQL

Definisi

sql memungkinkan Anda menentukan SQL yang akan digunakan untuk membuat tabel turunan. Anda dapat menggunakan kueri SQL yang valid dalam parameter sql, selama kueri SQL ditulis dalam SQL mentah dan tidak mereferensikan kolom Looker. Untuk pemahaman yang lebih lengkap tentang tabel turunan, lihat halaman dokumentasi Tabel turunan di Looker.

Selain mereferensikan tabel database normal, Anda juga dapat mereferensikan tampilan LookML atau tabel turunan di sql. Untuk melakukannya, gunakan:

${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name

SQL_TABLE_NAME dalam referensi ini adalah string literal; Anda tidak perlu menggantinya dengan apa pun. Misalnya, jika Anda ingin mereferensikan tabel turunan bernama key_customer di tabel turunan key_customer_order_facts, Anda mungkin memiliki kode seperti ini:

view: key_customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      INNER JOIN
        ${key_customer.SQL_TABLE_NAME} AS key_customer
      ON
        order.customer_id = key_customer.id
      GROUP BY 1
      ;;
  }
}

Variabel Liquid dengan sql

Anda juga dapat menggunakan variabel Liquid dengan parameter sql. Variabel Liquid memungkinkan Anda mengakses data seperti nilai dalam kolom, data tentang kolom, dan filter yang diterapkan ke kolom.

Variabel Liquid date_start dan date_end sangat berguna untuk dialek database yang memartisi data ke dalam beberapa tabel menurut tanggal, seperti BigQuery. Lihat halaman Praktik Terbaik Menggunakan date_start dan date_end dengan filter tanggal untuk penjelasan mendalam.

Khususnya, variabel Liquid _in_query, _is_selected, dan _is_filtered dapat menambahkan beberapa fungsi menarik ke tabel turunan. Fungsi ini menampilkan nilai benar atau salah berdasarkan apakah kolom atau filter telah disertakan dalam kueri. Ada beberapa kerumitan yang harus dipertimbangkan untuk menggunakan nilai benar/salah ini dengan benar; lihat halaman variabel Liquid untuk mengetahui informasi selengkapnya.

Misalnya, tabel turunan ini mengubah tabel database yang dikuerinya berdasarkan kolom yang telah dipilih pengguna:

view: dynamic_order_counts {
  derived_table: {
    sql:
      SELECT
        period, number_of_orders
      FROM
        {% if dates.reporting_date._in_query %}
          daily_orders
        {% elsif dates.reporting_week._in_query %}
          weekly_orders
        {% else %}
          monthly_orders
        {% endif %}
      GROUP BY 1
      ;;
  }
}

Contoh

Buat tabel turunan customer_order_facts:

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      GROUP BY 1
      ;;
  }
}

Hal-hal yang perlu dipertimbangkan

Tabel yang dirujuk oleh sql harus dapat diakses dari koneksi saat ini

views yang berisi tabel turunan dirujuk oleh parameter explore atau join, yang pada gilirannya dirujuk oleh model. Model menentukan koneksi database mana yang digunakan (lihat halaman dokumentasi parameter connection). Koneksi database itu sendiri ditentukan di bagian Admin Looker. Saat Anda mereferensikan tabel dalam parameter sql, tabel tersebut harus dapat diakses dalam koneksi terkait.

Gunakan SQL mentah dengan sql, bukan referensi kolom Looker

SQL yang Anda tulis ke parameter sql tabel turunan harus berupa SQL mentah, yang mereferensikan kolom dan tabel dasar dari database Anda. Tidak boleh mereferensikan nama kolom atau nama tampilan Looker.

Penggunaan _filters['view_name.field_name'] dalam tabel turunan memerlukan sql_quote

Saat menentukan tabel turunan berbasis SQL, jika Anda menggunakan variabel Liquid _filters['view_name.field_name'] yang nilainya dirender di SQL dan filter menampilkan nilai string, Anda perlu menambahkan tanda petik tunggal di sekitar output. Anda dapat melakukannya dengan menyertakan filter Liquid sql_quote.

Jika tidak, Anda akan mendapatkan peringatan LookML berikut jika Anda tidak menambahkan variabel Liquid dengan | sql_quote:

Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.

Lihat halaman dokumentasi Referensi variabel Liquid untuk mengetahui informasi selengkapnya.