使用状況
cancel_grouping_fields: [
階層
cancel_grouping_fields |
デフォルト値
なし許可
範囲が限定されたフィールド名のカンマ区切りリストを含む角かっこ特別なルール
|
定義
cancel_grouping_fields
を使用すると、Looker で生成される SQL に GROUP BY
句を追加できなくなります。指定したフィールドのいずれかがユーザーに含まれる場合、Looker はグループ化されません。この機能は通常、非常に大きなテーブルのクエリのパフォーマンスを改善するために使用されます。まれで一意の状況を除いて、テーブルの各行に固有のフィールド(主キーなど)のみを含める必要があります。
Looker メジャーは SQL 集計関数を表しますが、これには GROUP BY
句が機能するために必要であるため、cancel_grouping_fields
はメジャーを含むレポートでは機能しないことに注意してください。また、relationship: one_to_many
または relationship: many_to_many
を使用している場合、cancel_grouping_fields
は機能しません。
最後に、指定するフィールドは完全にスコープ設定されている必要があります。つまり、単に field_name
ではなく view_name.field_name
と記述します。
例
ユーザーがフィールド選択ツールで [オーダー ID] を選択した場合、結果をグループ化しないでください。
explore: order {
cancel_grouping_fields: [order.id]
}
ユーザーがフィールド ピッカーで [オーダー ID] または [オーダー ハッシュ] を選択した場合、結果をグループ化しないでください。
explore: order {
cancel_grouping_fields: [order.id, order.hash]
}
ユーザーがフィールド ピッカーで [Person ID] または [DNA ID] を選択した場合、結果をグループ化しないでください。
explore: person {
cancel_grouping_fields: [person.id, dna.id]
join: dna {
sql_on: ${person.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
一般的な課題
cancel_grouping_fields
には、完全にスコープ設定されたフィールド名が必要です
Looker のほとんどのパラメータは、フィールド名を単独で記述する場合、そのパラメータが使用される場所に基づいてビュー名を想定します。cancel_grouping_fields
はこれでは機能せず、ビュー名とフィールド名の両方を記述する必要があります。
たとえば、これは機能し、id
がフィールド ピッカーに表示されるオーダー ID として解釈されるかもしれません。
explore: order {
cancel_grouping_fields: [id]
}
ただし、このような場合は例外としてエラーが表示されます。代わりに、次のように記述する必要があります。
explore: order {
cancel_grouping_fields: [order.id]
}
cancel_grouping_fields
: 指定フィールドのいずれかが選択された場合にトリガーされます。すべてのフィールドを選択する必要はありません。
cancel_grouping_fields
で複数のフィールドを指定した場合、ユーザーがリスト内のいずれかのフィールドを選択すると、グループ化はキャンセルされます。ユーザーがリストのすべてのフィールドを選択する必要はありません。このため、複数列の主キーは cancel_grouping_fields
では機能しません。
知っておくべきこと
Looker が適切に動作するために cancel_grouping_fields
は必要ありません。大規模なテーブルのクエリを改善できる
SQL を手動で記述する場合、必要不可欠である場合を除き、ほとんどのユーザーは GROUP BY
句を含めません。Looker は、不要な GROUP BY
句を回避する場合もあります。クエリのいずれかのディメンションが、使用している Explore の主キー(primary_key
パラメータを使用)として定義されている場合、GROUP BY
句は削除されます。
ただし、主キーではない別のディメンションで一意の行が定義される場合もあります。この場合、Looker が機能するための基本的な要素としてディメンションによるグループ化が行われるため、不要な GROUP BY
が生成されることがあります。ほとんどの場合、これによって問題が生じることはありません。期待どおりの結果がすぐに表示されます。
ただし、非常に大きなテーブルでは、不要な GROUP BY
句を使用するとクエリ時間が長くなる可能性があります。これは、cancel_grouping_fields
を使用するのに理想的な状況です。