primary_key

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 BY yang tidak perlu.
  • Diperlukan agar parameter foreign_key berfungsi dengan benar.
  • Diperlukan agar gabungan simetris berfungsi dengan baik. Saat Anda menggabungkan tampilan dengan ukuran (agregat), primary_key harus 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_group yang menentukan lebih dari satu timeframe.

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) ;;
}

CONCAT berfungsi 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 ;;
  }
}