cancel_grouping_fields

用途

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

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

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

定義

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

Looker の measure は SQL 集計関数を表し、SQL 集計関数は GROUP BY 句を必要とするため、measure を含むクエリでは 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]
}

ユーザーがフィールド ピッカーで [Order ID] または [Order Hash] を選択した場合は、結果をグループ化しないでください。

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

ユーザーがフィールド ピッカーで [Person ID](人物 ID)または [DNA 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 がフィールド選択ツールに表示される [Order 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 句を省略する場合もあります。クエリ内のディメンションの 1 つが、使用している Explore の主キー(primary_key パラメータを使用)として定義されている場合、GROUP BY 句は削除されます。

ただし、主キーではない別のディメンションが一意の行を定義している場合もあります。このような場合、Looker は不要な GROUP BY を生成することがあります。これは、ディメンションによるグループ化が Looker の基本的な動作の一部であるためです。ほとんどの場合、これで問題は発生しません。期待どおりの結果がすばやく表示されます。

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