cancel_grouping_fields

Penggunaan

explore: explore_name {
  cancel_grouping_fields: [
    fully_scoped_field,
    fully_scoped_field,
    ...
  ]
}
Hierarki
cancel_grouping_fields
Nilai Default
Tidak ada

Menerima
Tanda kurung siku yang berisi daftar nama kolom yang sepenuhnya tercakup dan dipisahkan koma

Aturan Khusus

Definisi

cancel_grouping_fields memungkinkan Anda menghentikan Looker menambahkan klausa GROUP BY ke SQL yang dihasilkannya. Jika salah satu kolom yang Anda tentukan disertakan oleh pengguna, Looker tidak akan mengelompokkan. Fungsi ini biasanya digunakan untuk meningkatkan performa kueri pada tabel yang sangat besar. Kecuali dalam keadaan yang jarang terjadi dan unik, Anda hanya boleh menyertakan kolom yang unik untuk setiap baris dalam tabel, seperti kunci utama.

Karena ukuran Looker merepresentasikan fungsi agregat SQL, yang memerlukan klausa GROUP BY agar berfungsi, Anda harus memperhatikan bahwa cancel_grouping_fields tidak akan berfungsi dengan kueri apa pun yang menyertakan ukuran. Selain itu, cancel_grouping_fields tidak berfungsi saat relationship: one_to_many atau relationship: many_to_many digunakan.

Terakhir, perhatikan bahwa kolom yang Anda cantumkan harus memiliki cakupan penuh. Dengan kata lain, harus ditulis sebagai view_name.field_name, dan bukan hanya sebagai field_name.

Contoh

Jangan mengelompokkan hasil jika pengguna memilih ID Pesanan di pemilih kolom:

explore: order {
  cancel_grouping_fields: [order.id]
}

Jangan mengelompokkan hasil jika pengguna memilih ID Pesanan atau Hash Pesanan di pemilih kolom:

explore: order {
  cancel_grouping_fields: [order.id, order.hash]
}

Jangan mengelompokkan hasil jika pengguna memilih ID Orang atau ID DNA di pemilih kolom:

explore: person {
  cancel_grouping_fields: [person.id, dna.id]
  join: dna {
    sql_on: ${person.dna_id} = ${dna.id} ;;
    relationship: one_to_one
  }
}

Tantangan umum

cancel_grouping_fields memerlukan nama kolom yang sepenuhnya tercakup

Sebagian besar parameter di Looker akan mengasumsikan nama tampilan, berdasarkan tempat parameter digunakan, jika Anda menulis nama kolom dengan sendirinya. cancel_grouping_fields tidak berfungsi seperti ini dan mengharuskan Anda menulis nama tampilan dan nama kolom.

Misalnya, Anda mungkin berpikir bahwa hal ini akan berfungsi, dan id akan ditafsirkan sebagai ID Pesanan yang muncul di pemilih kolom:

explore: order {
  cancel_grouping_fields: [id]
}

Namun, hal ini tidak terjadi, dan Anda akan menerima error. Sebagai gantinya, Anda harus menulis:

explore: order {
  cancel_grouping_fields: [order.id]
}

cancel_grouping_fields dipicu saat kolom tertentu dipilih, tidak mengharuskan semua kolom dipilih

Jika Anda menentukan lebih dari satu kolom di cancel_grouping_fields, pengelompokan akan dibatalkan jika pengguna memilih kolom apa pun dalam daftar. Pengguna tidak diwajibkan untuk memilih semua kolom dalam daftar. Oleh karena itu, kunci primer multi-kolom tidak berfungsi dengan cancel_grouping_fields.

Yang perlu diketahui

cancel_grouping_fields tidak diperlukan agar Looker berfungsi dengan baik. Fitur ini digunakan untuk meningkatkan kualitas kueri pada tabel besar

Saat menulis SQL secara manual, sebagian besar orang tidak akan menyertakan klausa GROUP BY kecuali jika benar-benar diperlukan. Looker juga menghindari klausa GROUP BY yang tidak perlu dalam beberapa kasus. Jika salah satu dimensi dalam kueri Anda telah ditentukan sebagai kunci utama (dengan menggunakan parameter primary_key) dari Eksplorasi yang Anda gunakan, klausa GROUP BY akan dihapus.

Namun, ada beberapa kasus saat dimensi lain — yang bukan merupakan kunci utama — tetap menentukan baris unik. Dalam kasus ini, Looker dapat menghasilkan GROUP BY yang tidak perlu, karena pengelompokan menurut dimensi adalah bagian mendasar dari cara kerja Looker. Dalam sebagian besar kasus, hal ini tidak akan menimbulkan masalah. Hasil akan muncul seperti yang Anda harapkan dan akan cepat.

Namun, pada beberapa tabel yang sangat besar, klausa GROUP BY yang tidak diperlukan dapat memperpanjang waktu kueri. Ini adalah situasi ideal untuk menggunakan cancel_grouping_fields.