cancel_grouping_fields

用途

explore: explore_name {
  cancel_grouping_fields: [
    fully_scoped_field,
    fully_scoped_field,
    ...
  ]
}
階層
cancel_grouping_fields
デフォルト値
なし

許可
完全修飾フィールド名のカンマ区切りのリストを含む角かっこ

特別なルール
  • 各フィールドは view_name.field_name 構文を使用して完全に指定する必要があります
  • クエリに measure が含まれている場合は正しく機能しません
  • relationship: one_to_many または relationship: many_to_many とともに使用することはできません

定義

cancel_grouping_fields を使用すると、Looker が生成する SQL に GROUP BY 句を追加しないようにできます。指定したフィールドのいずれかがユーザーによって選択された場合、Looker はグループ化を行いません。この機能は通常、非常に大きなテーブルに対するクエリのパフォーマンスを向上させるために使用されます。まれな特殊な状況を除き、テーブルの各行に固有のフィールド(主キーなど)のみを含める必要があります。

Looker の measure は SQL 集計関数を表し、機能するには GROUP BY 句が必要であるため、cancel_grouping_fields は measure を含むクエリでは機能しません。さらに、cancel_grouping_fields が使用されている場合、relationship: one_to_many または relationship: many_to_many は機能しません。

最後に、リストするフィールドは完全にスコープ設定されている必要があります。つまり、単に field_name ではなく、view_name.field_name として記述する必要があります。

ユーザーがフィールド ピッカーで [オーダー ID] を選択した場合、結果をグループ化しません。

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

ユーザーがフィールド ピッカーで [オーダー ID] または [Order Hash] を選択した場合、結果をグループ化しません。

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 を生成することがあります。これは、ディメンションによるグループ化が Looker の動作の基本部分であるためです。ほとんどの場合、これにより問題が発生することはありません。結果は期待どおりに表示され、高速になります。

ただし、非常に大きなテーブルでは、不要な GROUP BY 句によってクエリ時間が長くなることがあります。これは、cancel_grouping_fields を使用するのに最適な状況です。