explore_source

Halaman ini mengacu pada parameter explore_source yang merupakan subparameter dari derived_table.

explore_source juga dapat menjadi subparameter dari test, yang dijelaskan di halaman dokumentasi parameter test.

Penggunaan

derived_table: customer_order_facts {
  explore_source:  orders {
    column:  customer_id {
      field:  orders.customer_id
    }
    column:  order_amount {
      field:  orders.sale_price
    }
    column:  item_qty {
      field:  orders.number_items
    }
    derived_column:  average_item_price {
      sql:  order_amount / item_qty  ;;
    }
    timezone:  "America/Los_Angeles"
  }
}
Hierarki
explore_source
Nilai Default
Tidak ada

Menerima
ID Explore tempat tabel turunan native berasal, ditambah subparameter yang menentukan tabel turunan native.

Definisi

Ada dua cara untuk membuat tabel turunan, yang dapat Anda gunakan seolah-olah tabel tersebut adalah tabel normal di database Anda — tabel turunan native, yang ditentukan menggunakan parameter LookML, dan tabel turunan berbasis SQL, yang ditentukan menggunakan pernyataan kueri SQL.

Parameter explore_source digunakan untuk tabel turunan native. Dalam parameter ini, Anda menentukan kolom mana yang akan disertakan dalam tabel turunan native, filter apa pun yang akan diterapkan ke tabel turunan native, apakah akan membatasi atau mengurutkan baris tabel turunan native, dan apakah akan mengonversi kolom berbasis waktu tabel turunan native ke zona waktu yang berbeda.

Menentukan tabel turunan native

Anda dapat menggunakan berbagai parameter dalam tabel turunan native, yang sebagian besar bersifat opsional. Sintaksis untuk menentukan tabel turunan native adalah sebagai berikut:

explore_source: identifier {
  bind_all_filters: yes
  column: identifier {
    field: field_name
  }
  derived_column: identifier {
    sql: SQL expression ;;
  }
  expression_custom_filter: [custom filter expression]
  filters: [field_name_1: "string", field_name_2: "string", ...]
  limit: number
  sorts: [field_name_1: asc | desc, field_name_2: asc | desc, ...]
  timezone: "string"
}

Tabel berikut memberikan informasi tentang setiap parameter yang dapat Anda gunakan untuk menentukan tabel turunan native:

Nama Parameter Deskripsi Contoh
bind_filters Meneruskan filter dari kueri Explore ke subkueri tabel turunan native. Untuk menyiapkan parameter ini, gunakan subparameter from_field untuk menentukan kolom yang ditentukan dalam tampilan tabel turunan native atau dapat diakses di Explore tempat tabel turunan native digabungkan. Saat runtime, filter apa pun di from_field di Explore akan diteruskan ke to_field di subkueri tabel turunan native. Lihat bagian Menggunakan bind_filters untuk mengetahui contohnya.

Dengan bind_filters, perhatikan hal berikut:
  • Filter runtime harus berada dalam tampilan yang digabungkan ke Explore yang sama dengan tabel turunan native.
  • Tabel turunan native tidak dapat dijadikan tabel turunan persisten (PDT).

Parameter explore_source dapat memiliki subparameter bind_all_filters atau subparameter bind_filters, tetapi tidak keduanya.
bind_filters: {
  to_field: users.created_date
  from_field: user_dt.filter_date
}
bind_all_filters Meneruskan semua filter dari kueri Explore ke subkueri tabel turunan native. Untuk menyiapkan parameter ini, tentukan bind_all_filters: yes di explore_source tabel turunan native. Lihat bagian Menggunakan bind_filters untuk mengetahui contohnya.

Dengan bind_all_filters: yes, perhatikan hal berikut:
  • Filter runtime harus berada dalam tampilan yang digabungkan ke Explore yang sama dengan tabel turunan native.
  • Tabel turunan native tidak dapat dijadikan PDT.
  • Tabel turunan native hanya dapat digabungkan ke Explore yang ditentukan dalam parameter explore_source tabel turunan native. Hal ini karena bind_all_filters perlu memetakan kolom yang difilter Explore ke kolom dalam tabel turunan native.
  • Parameter explore_source dapat memiliki subparameter bind_all_filters atau subparameter bind_filters, tetapi tidak keduanya.
bind_all_filters: yes
column Menentukan kolom yang akan disertakan dalam explore_source. Memiliki subparameter field.
column: cust_id {
  field: orders.customer_id
}
derived_column Menentukan kolom di explore_source dengan ekspresi di namespace kolom dalam. Ekspresi SQL gabungan tidak akan berfungsi di sini, karena tidak ada pengelompokan SQL pada langkah ini. Fungsi jendela SQL dapat sangat berguna dalam parameter ini. Memiliki subparameter sql.
derived_column: average_order {
  sql: order_amount / item_qty ;;
}
dev_filters Ditambahkan pada 21.12 Menentukan filter yang hanya diterapkan Looker ke versi pengembangan tabel turunan. Hal ini berguna bagi developer LookML saat mereka menguji tabel turunan dalam Mode Pengembangan. Parameter dev_filters memungkinkan Looker membuat versi tabel yang lebih kecil dan difilter sehingga developer LookML dapat melakukan iterasi dan menguji tabel tanpa menunggu tabel lengkap dibuat setelah setiap perubahan. Looker hanya menerapkan dev_filters ke versi pengembangan tabel turunan, bukan ke versi produksi tabel yang dikueri oleh pengguna Anda. Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui informasi selengkapnya tentang cara menggunakan tabel turunan dalam Mode Pengembangan dan bagian Membuat filter untuk Mode Pengembangan di halaman ini untuk mengetahui contohnya. dev_filters: [orders.created_date: "90 days", orders.products: "sweaters"]
expression_custom_filter Secara opsional menentukan ekspresi filter kustom pada kueri explore_source. expression_custom_filter: ${orders.status} = "pending" ;;
filters Secara opsional menambahkan filter ke kueri explore_source. Sertakan dalam tanda kurung siku; sertakan nama kolom yang akan difilter, menggunakan format view_name.field_name, diikuti dengan : dan nilai tempat kolom harus difilter. Filter ditambahkan ke klausa WHERE SQL yang dihasilkan oleh tabel turunan native. filters: [products.department: "sweaters"]
limit Secara opsional, menentukan batas baris kueri. limit: 10
sorts Secara opsional, menentukan pengurutan untuk explore_source ini. Sertakan dalam tanda kurung siku; sertakan nama kolom yang akan diurutkan, menggunakan format view_name.field_name, diikuti dengan : dan asc atau desc untuk menunjukkan apakah kolom harus diurutkan dalam urutan menaik atau menurun. Anda dapat mengurutkan beberapa kolom dengan menambahkan beberapa pasangan nama kolom dan kata kunci yang dipisahkan dengan koma. sorts: [products.brand: asc, products.name: asc]
timezone Menetapkan zona waktu untuk kueri explore_source. Untuk tabel turunan non-persisten, tetapkan zona waktu ke "query_timezone" untuk otomatis menggunakan zona waktu kueri yang sedang berjalan. Jika zona waktu tidak ditentukan, kueri explore_source tidak akan melakukan konversi zona waktu, tetapi akan menggunakan zona waktu database sebagai gantinya. Lihat halaman nilai timezone untuk mengetahui daftar zona waktu yang didukung.

IDE secara otomatis menyarankan nilai zona waktu saat Anda mengetik parameter timezone di IDE. IDE juga menampilkan daftar nilai zona waktu yang didukung di panel Bantuan Cepat.
timezone: "America/Los_Angeles"

Contoh

Definisi berikut memberikan contoh dasar tabel turunan native.

Membuat tabel turunan native user_order_facts:

view: user_order_facts {
  derived_table: {
    explore_source: order_items {
      column: user_id {
        field: order_items.user_id
      }
      column: lifetime_number_of_orders {
        field: order_items.order_count
      }
      column: lifetime_customer_value {
        field: order_items.total_revenue
      }
    }
  }
  # Define the view's fields as desired
  dimension: user_id {
    hidden: yes
  }
  dimension: lifetime_number_of_orders {
    type: number
  }
  dimension: lifetime_customer_value {
    type: number
  }
}

Anda dapat menambahkan filter untuk membuat tabel turunan native user_90_day_facts:

view: user_90_day_facts {
  derived_table: {
    explore_source: order_items {
      column: user_id {
        field: order_items.user_id
      }
      column: number_of_orders_90_day {
        field: order_items.order_count
      }
      column: customer_value_90_day {
        field: order_items.total_revenue
      }
      filters: [order_items.created_date: "90 days"]
    }
  }
  # Add define view's fields as desired
  dimension: user_id {
    hidden: yes
  }
  dimension: number_of_orders_90_day {
    type: number
  }
  dimension: customer_value_90_day {
    type: number
  }
}

Membuat filter untuk Mode Pengembangan

Ada situasi ketika tabel turunan native yang Anda buat memerlukan waktu lama untuk dibuat, yang dapat menghabiskan waktu jika Anda menguji banyak perubahan dalam Mode Pengembangan. Untuk kasus ini, Anda dapat menggunakan dev_filters untuk membuat versi pengembangan tabel turunan native yang lebih kecil:

view: e_faa_pdt {
  derived_table: {
  ...
    datagroup_trigger: e_faa_shared_datagroup
    explore_source: flights {
      dev_filters: [flights.event_date: "90 days"]
      filters: [flights.event_date: "2 years", flights.airport_name: "Yucca Valley Airport"]
      column: id {}
      column: airport_name {}
      column: event_date {}
    }
  }
...
}

Contoh ini mencakup parameter dev_filters yang memfilter data ke 90 hari terakhir dan parameter filters yang memfilter data ke 2 tahun terakhir dan ke Bandara Yucca Valley. Parameter dev_filters berfungsi bersama dengan parameter filters sehingga semua filter diterapkan ke versi pengembangan tabel. Jika dev_filters dan filters menentukan filter untuk kolom yang sama, dev_filters akan diprioritaskan untuk versi pengembangan tabel. Dalam contoh ini, versi pengembangan tabel akan memfilter data ke 90 hari terakhir untuk Bandara Yucca Valley.

Jika tabel turunan native memiliki parameter dev_filters, tabel pengembangan tidak dapat digunakan sebagai versi produksi, karena versi pengembangan memiliki set data yang disingkat. Jika demikian, setelah selesai mengembangkan tabel dan sebelum men-deploy perubahan, Anda dapat mengomentari parameter dev_filters, lalu membuat kueri tabel dalam Mode Pengembangan. Looker kemudian akan membuat versi lengkap tabel yang dapat digunakan untuk produksi saat Anda men-deploy perubahan. Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui detail selengkapnya tentang cara menggunakan tabel pengembangan dalam produksi.

Perhatikan bahwa situasi sebaliknya juga berlaku: Jika Anda memiliki tabel turunan native dengan parameter dev_filters dan Anda membuat kueri dalam Mode Pengembangan, Looker dapat menggunakan tabel produksi untuk menjawab kueri Mode Pengembangan Anda. Pernyataan ini benar kecuali jika Anda mengubah definisi tabel, lalu membuat kueri tabel dalam Mode Pengembangan. Pada saat itu, Looker akan membuat tabel pengembangan untuk menjawab kueri.

Meneruskan filter ke tabel turunan native

Saat menyertakan tabel turunan native di Explore, Anda dapat mengambil filter runtime dari Explore dan menerapkannya ke kueri tabel turunan native. Anda melakukannya dengan menambahkan parameter bind_all_filters atau bind_filters ke explore_source tabel turunan native.

Saat meneruskan filter runtime dari Explore ke subkueri tabel turunan native, filter runtime harus berada dalam tampilan yang digabungkan ke Explore yang sama dengan tabel turunan native. Selain itu, karena tabel turunan native harus dibuat ulang saat runtime agar dapat menggabungkan filter runtime dari Explore, tabel turunan native tidak dapat menjadi tabel turunan persisten (PDT).

Menggunakan bind_all_filters

Cara termudah untuk meneruskan filter dari Explore ke subkueri tabel turunan native adalah dengan menentukan bind_all_filters: yes dalam parameter explore_source tabel turunan native. Tindakan ini akan meneruskan semua filter runtime Explore ke subkueri tabel turunan native.

Tabel turunan native dengan bind_all_filters: yes harus digabungkan ke Explore yang sama yang ditentukan dalam parameter explore_source tabel turunan native. Jika Anda ingin menggunakan tabel turunan native di Explore lain, gunakan parameter bind_filters, seperti yang dijelaskan di bagian Menggunakan bind_filters.

Berikut LookML untuk tabel turunan native dengan bind_all_filters: yes:


view: top_10_simple_item_names {
  view_label: "Top 10s"
  derived_table: {
    explore_source: order_items {
      column: total_sale_price {
        field: order_items.total_sale_price
      }
      column: item_name {
        field: products.item_name
      }
      derived_column: rank {
        sql: RANK() OVER (ORDER BY total_sale_price DESC) ;;
      }
      bind_all_filters: yes
      sorts: [order_items.total_sale_price: desc]
      timezone: "query_timezone"
      limit: 10
    }
  }
  dimension: item_name {
    group_label: "Simple Example"
  }
  dimension: rank {
    type: number
    group_label: "Simple Example"
  }
  dimension: item_name_ranked {
    group_label: "Simple Example"
    order_by_field: rank
    type: string
    sql: ${rank} || ') ' || ${item_name} ;;
  }
}

Dalam tampilan tabel turunan native, explore_source adalah order_items. Berikut adalah LookML untuk Explore order_items tempat tabel turunan native digabungkan ke Explore:

explore: order_items {
  ...
  join: top_10_simple_item_names {
    type: inner
    relationship: many_to_one
    sql_on: ${products.item_name} = ${top_10_simple_item_names.item_name} ;;
  }
}

Untuk melihat contoh ini dalam tindakan, lihat postingan Komunitas [Analytic Block] – Pivot by Top X – Introducing bind_all_filters: yes.

Menggunakan bind_filters

Sub-parameter bind_filters dari explore_source meneruskan filter tertentu dari kueri Explore ke subkueri tabel turunan native:

  • to_field adalah kolom dalam tabel turunan native tempat filter diterapkan. to_field harus berupa kolom dari explore_source yang mendasarinya.
  • from_field menentukan kolom di Explore yang akan digunakan untuk mendapatkan filter, jika pengguna menentukan filter saat runtime.

Saat runtime, filter apa pun di from_field di Explore akan diteruskan ke to_field di subkueri tabel turunan native.

LookML berikut menunjukkan tabel turunan native dengan bind_filters. Dengan penyiapan ini, Looker akan mengambil filter apa pun yang diterapkan ke kolom filtered_lookml_dt.filter_date di Explore dan menerapkan filter ke kolom users.created_date di tabel turunan native.

derived_table: {
  explore_source: order_items {
    bind_filters: {
      to_field: users.created_date
      from_field: filtered_lookml_dt.filter_date
    . . .
    }
  }
}

Hal-hal yang perlu dipertimbangkan

Menggunakan hanya satu parameter explore_source

Setiap tabel turunan native hanya menerima satu parameter explore_source. Parameter explore_source berikutnya tidak akan memunculkan error validasi LookML, tetapi akan mengganti parameter explore_source sebelumnya.

Untuk membuat kolom dari kolom dalam tampilan yang berbeda, gabungkan terlebih dahulu tampilan yang berbeda dalam Explore yang sama. Kemudian, gunakan Explore tersebut untuk explore_source.

Menggunakan pernyataan include untuk mengaktifkan kolom referensi

Saat membuat tabel turunan native, Anda harus menyertakan file yang berisi definisi Explore. Cara terbaik untuk melakukannya adalah dengan menentukan Explore dalam file Explore terpisah, seperti yang dijelaskan dalam dokumentasi Membuat File Explore.

Jika Anda membuat file Explore terpisah:

  • File tampilan tabel turunan native harus menyertakan file Explore. Contoh:
    • include: "/explores/order_items.explore.lkml"
  • File Explore harus menyertakan file tampilan yang diperlukan. Contoh:
    • include: "/views/order_items.view.lkml"
    • include: "/views/users.view.lkml"
  • Model harus menyertakan file Explore. Contoh:
    • include: "/explores/order_items.explore.lkml"