このページでは、メジャーの一部である
filters
パラメータについて説明します。また、
explore_source
パラメータのドキュメント ページに記載されているように、filters
をネイティブ派生テーブルの一部として使用することもできます。
filters
はダッシュボードの一部として使用することもできます。詳しくは、ダッシュボード パラメータに関するドキュメント ページをご覧ください。
filters
は、ダッシュボード要素の一部として使用することもできます。一般的な使用例については、縦棒グラフの要素に関するドキュメント ページをご覧ください。
使用状況
measure: field_name {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
階層
filters |
使用可能なフィールドタイプ
測定許可
一連のディメンション名とそれに対応する Looker フィルタ式。 |
定義
filters
は、メジャー計算に適用されるフィルタ式のリストです(省略可)。集計を実行する次のメジャータイプでのみ機能します。
type: count
type: count_distinct
type: sum
type: average
filtersの構文は次のとおりです。
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
有効なフィルタ式を記述する方法については、Looker のフィルタ表記をご覧ください。以下の例で示されているように、Filter式全体を引用符で囲んでください。
また、filters
を Liquid パラメータとテンプレート フィルタとともに使用すると、ダッシュボードや Look でのユーザー入力に基づいて動的に変更できるフィルタ値を持つ動的フィルタされたメジャーを作成できます。この方法では、ユーザーがグローバルな WHERE
句でクエリ全体をフィルタすることなく、特定のメジャーにのみ適用されるフィルタ値を選択できます。詳しくは、このページの動的フィルタ付きメジャーの作成をご覧ください。
例
メジャーに filters
を使用する方法は数多くあります。一般的なユースケースに適したソリューションの例を以下に示します。
複数のフィールドでのフィルタリング
この例では、メジャーは、過去 7 日間に作成され、アカウントが無効になっているユーザーの ID とは異なる一意の ID をカウントします。この例では、複数のフィルタをフィールドに追加する方法も紹介しています。各フィルタ式には、独自の完全な filters
パラメータが必要です。
measure: this_week_count {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.status: "-disabled"]
# Reference fields from other joined views with view_name.field_name syntax
# Minus sign means "not" in this case, but check notation docs for details
}
yesno
ディメンションでフィルタする
別の例として、従業員 1 人または契約社員の 1 人につき 1 行のデータがあるとします。yesno
タイプの is_contractor
フィールドがあります。このフィールドには、契約社員であれば yes
が含まれます。このMeasureは、請負業者の行のみをカウントします。
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
複数のFilter値の追加
次の例では、filters
式に複数の値が含まれています。メジャーは、state
フィールドの 4 つの値のいずれかに一致するすべての行をカウントします。
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
数値Filter条件の追加
この例では、フィルタに数値が設定されています。メジャーは、price
が 100 を超える注文のみを追加します。
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
高度なFilter構文の使用
この例では、フィルタに数値の範囲が指定されています。このMeasureは、18~25歳のグループのお客様からの注文を合計します。
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
動的にフィルターされたMeasureの作成
この例のフィルタを使用すると、Look またはダッシュボード フィルタで注文数(ユーザーが選択したステータスでフィルタされる)を確認できます。
まず、ユーザーが値を選択できるフィルタ専用フィールドを作成します。
filter: status_filter {
type: string
suggest_dimension: status
}
次に、テンプレート化されたフィルタを活用して、前のフィルタのみのフィールドからユーザーの選択を取得する隠しディメンションを作成します。このディメンションでは、フィルタのフィールドで値が選択されるたびに yes が返されます。
dimension: status_satisfies_filter {
type: yesno
hidden: yes
sql: {% condition status_filter %} ${status} {% endcondition %} ;;
}
最後に、type: yesno
ディメンションでフィルタするメジャーを作成します。
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
ユーザーがフィルタのみのフィールドの値を選択しない場合、SQL はデフォルトで 1=1 に設定され、メジャー値に影響しません。
一般的な課題
filters
を type: number
のメジャーと一緒に使用しないでください
多くのユーザーが type: number
のメジャーを使用して filters
を行おうとしますが、これは機能しません。
# Will NOT work
measure: total_food_profit {
type: number
sql: ${total_revenue} - ${total_cost} ;;
filters: [segment: "food"]
}
measure: total_revenue {
type: sum
sql: ${revenue} ;;
}
measure: total_cost {
type: sum
sql: ${cost} ;;
}
代わりに、次のように type: number
のメジャーを構成する個々のメジャーのいずれかに filters
パラメータを適用します。
# Will work
measure: total_food_profit {
type: number
sql: ${total_food_revenue} - ${total_food_cost} ;;
}
measure: total_food_revenue {
type: sum
sql: ${revenue} ;;
filters: [segment: "food"]
}
measure: total_food_cost {
type: sum
sql: ${cost} ;;
filters: [segment: "food"]
}