explore_source

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

explore_source juga dapat menjadi subparameter 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 dari mana 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 dalam 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 yang akan disertakan dalam tabel turunan native, filter 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 Eksplorasi yang digabungkan dengan tabel turunan native. Saat runtime, semua filter pada from_field di Explore akan diteruskan ke to_field di subkueri tabel turunan native. Lihat bagian Menggunakan bind_filters untuk melihat contoh.

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 diubah menjadi 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 melihat contoh.

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 dibuat menjadi PDT.
  • Tabel turunan native hanya dapat digabungkan ke dalam 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 agregat 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 diterapkan Looker hanya ke versi pengembangan derived table. 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 menerapkan dev_filters hanya 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 melihat 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 yang akan digunakan untuk memfilter kolom. Filter ditambahkan ke klausa WHERE dari 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, setel zona waktu ke "query_timezone" agar 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. Lihat halaman nilai timezone untuk mengetahui daftar zona waktu yang didukung.

IDE menyarankan otomatis 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.

Buat 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 saat tabel turunan native yang Anda buat memerlukan waktu lama untuk dibuat, yang dapat memakan 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 bekerja 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 hingga 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. Kemudian, Looker 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 penggunaan tabel pengembangan dalam produksi.

Perhatikan bahwa situasi sebaliknya juga benar: Jika Anda memiliki tabel turunan native dengan parameter dev_filters dan Anda membuat kueri di 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, yang akan membuat Looker membangun tabel pengembangan untuk menjawab kueri.

Meneruskan filter ke tabel turunan native

Saat menyertakan tabel turunan native dalam Eksplorasi, Anda dapat mengambil filter runtime dari Eksplorasi 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 untuk menggabungkan filter runtime dari Explore, tabel turunan native tidak dapat berupa 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 adalah 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 order_items Explore 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, baca postingan Komunitas [Blok Analisis] – Pivot menurut X Teratas – Memperkenalkan bind_all_filters: yes.

Menggunakan bind_filters

Subparameter 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 Eksplorasi yang akan digunakan untuk mendapatkan filter, jika pengguna menentukan filter saat runtime.

Saat runtime, semua filter pada 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 Eksplorasi dan menerapkan filter tersebut 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

Hanya gunakan satu parameter explore_source

Setiap tabel turunan bawaan hanya menerima satu parameter explore_source. Parameter explore_source berikutnya tidak akan menimbulkan error validasi LookML, tetapi akan menggantikan parameter explore_source sebelumnya.

Untuk membuat kolom dari kolom di tampilan yang berbeda, gabungkan terlebih dahulu tampilan yang berbeda dalam Jelajah yang sama. Kemudian, gunakan Jelajahi untuk explore_source.

Menggunakan pernyataan include untuk memungkinkan kolom referensi

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

Jika Anda membuat file Jelajah terpisah:

  • File tampilan tabel turunan native harus menyertakan file Eksplorasi. Contoh:
    • include: "/explores/order_items.explore.lkml"
  • File Eksplorasi 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"