filters

このページでは、メジャーの一部である filters パラメータについて説明します。

また、explore_source パラメータのドキュメント ページに記載されているように、filters をネイティブ派生テーブルの一部として使用することもできます。

filters はダッシュボードの一部として使用することもできます。詳しくは、ダッシュボード パラメータに関するドキュメント ページをご覧ください。

filters は、ダッシュボード要素の一部として使用することもできます。一般的な使用例については、縦棒グラフの要素に関するドキュメント ページをご覧ください。

使用状況

ビュー: view_name {
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式全体を引用符で囲んでください。

また、filtersLiquid パラメータテンプレート フィルタとともに使用すると、ダッシュボードや 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 に設定され、メジャー値に影響しません。

一般的な課題

filterstype: 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"]
}