Penggunaan
view: view_name {
dimension: field_name {
primary_key: yes
}
}
|
Hierarki
primary_key |
Jenis Kolom yang Mungkin
Dimensi
Menerima
Boolean (ya atau tidak)
|
Definisi
Parameter primary_key menentukan bahwa dimensi adalah kunci utama untuk tampilannya. Nilai defaultnya adalah false. Contoh:
dimension: id {
primary_key: yes
sql: ${TABLE}.id ;;
}
Parameter primary_key memiliki kualitas berikut:
- Membantu Looker menghindari klausa
GROUP BYyang tidak perlu. - Diperlukan agar parameter
foreign_keyberfungsi dengan benar. - Diperlukan agar gabungan simetris berfungsi dengan baik. Saat Anda menggabungkan tampilan dengan ukuran (agregat),
primary_keyharus ditentukan di setiap sisi gabungan untuk menghitung agregasi dengan benar.
Parameter primary_key memiliki batasan berikut:
- Anda tidak dapat menambahkan parameter ini ke lebih dari satu kolom di setiap tampilan.
- Anda tidak dapat menambahkan parameter ini ke
dimension_groupyang menentukan lebih dari satutimeframe.
Membuat kunci utama gabungan
Jika memiliki kunci utama yang terdiri dari beberapa kolom, Anda dapat membuat dimensi yang menggabungkan kolom tersebut, lalu mendeklarasikannya sebagai kunci utama. Contoh:
dimension: primary_key {
primary_key: yes
sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}
CONCATberfungsi di beberapa database, seperti MySQL, tetapi database lain mungkin memiliki fungsi yang setara dan berbeda. Misalnya, Redshift menggunakan||sebagai operator penggabungannya.
Menggunakan tabel turunan persisten (PDT) untuk membuat kunci utama
Jika tidak ada cara yang wajar untuk mengidentifikasi baris unik sebagai kunci utama, Anda dapat membuat tabel turunan persisten (PDT) untuk membuat ID unik. Misalnya, tabel turunan berikut menggunakan nomor baris tabel sebagai kunci utama:
view: transaction {
# sql_table_name: warehouse.transaction
derived_table: {
sql: SELECT ROW_NUMBER as transaction_pk, * FROM warehouse.transaction ;;
sql_trigger_value: SELECT CURRENT_DATE ;;
indexes: [customer_id, product_id, salesperson_id, transaction_date]
}
dimension: transaction_pk {
type: number
primary_key: yes
hidden: yes
sql: ${TABLE}.transaction_pk ;;
...
}
}
Menentukan kunci utama baru dalam tampilan yang diperluas
Jika Anda menggunakan parameter extends untuk memperluas tampilan, kunci utama dari tampilan dasar akan diperluas ke tampilan baru.
Untuk mengubah kunci utama ke dimensi baru, tambahkan primary_key: no ke definisi dimensi asli di tampilan baru, dan tambahkan primary_key: yes ke definisi dimensi baru di tampilan baru.
view: base {
dimension: old_primary_key {
primary_key: yes
sql: ${TABLE}.id ;;
}
}
view: new {
extends: base
dimension: old_primary_key {
primary_key: no
}
dimension: new_primary_key {
primary_key: yes
sql: ${TABLE}.new_id ;;
}
}