テンプレート化されたフィルタを使用したタイムフレームとタイムフレーム分析

同じ Look やダッシュボードで複数の期間でフィルタリングした指標を比較するには、フィルタされたメジャーを使用します。フィルタされたメジャーを使用すると、クエリ全体にフィルタを適用するのではなく、ハードコードされたフィルタをメジャーに直接適用できます。

比較する期間が限られている場合は、ハードコードされた期間フィルタ(「今年」、「前年」など)を使用していくつかのメジャーを定義し、Explore、Look、またはダッシュボードで表示できます。さらに別の方法として、期間の比較を動的にする、または、フィルタされたメジャー内でテンプレート化されたフィルタを使用することで、ExploreLook、またはダッシュボード内でユーザーが指定した期間で変更するメジャーを動的にすることができます。

パターンの概要

このアプローチには、大まかに次の 3 つのコンポーネントがあります。

  1. Explore や Look またはダッシュボードのフィルタ専用フィールドとして表示される期間ごとに、type: date のテンプレート フィルタを定義します。
  2. yesno 型のディメンションを作成してテンプレート化されたフィルタに関連付け、ユーザーがフィルタ専用フィールドの値を選択したときに、yesno ディメンションがフィルタの条件を満たすレコードに対して「yes」を返すようにします。
  3. 条件 value = "yes" を使用して、yesno ディメンションを参照するフィルタされたメジャーを作成します。これにより、このメジャーでは、手順 1 で定義されたフィルタで指定された期間条件を満たすレコードのみが集計されます。

このロジックにより、次のような Explore など、異なる期間の値を比較する分析とビジュアリゼーションを作成することができます。

ユーザーは期間 A期間 B フィルタ内の値を変更でき、注文数 A注文数 B の値にのみ影響を与えます。注文数 A注文数 B は、期間フィルタで期間条件を参照するフィルタを使用するメジャーです。期間 A注文数 A の値に影響を与え、期間 B注文数 B の値に影響を与えます。

次のセクションでは、この例の LookML を示します。

LookML

次の LookML では、raw 期間を持つ created_raw という名前のディメンション グループがあるとします。

  dimension_group: created {
    type: time
    timeframes: [
      raw,
      time,
      date,
    ]
    sql: ${TABLE}.created_at ;;
  }
  

カウント数を比較する LookML のメジャー - 注文数 A注文数 B - 2 つの動的期間によってフィルタされる - 期間 A期間 B - 次のような created_raw に基づきます。

  ## filter determining time range for all "A" measures
  filter: timeframe_a {
    type: date_time
  }

## flag for "A" measures to only include appropriate time range dimension: group_a_yesno { hidden: yes type: yesno sql: {% condition timeframe_a %} ${created_raw} {% endcondition %} ;; }

## filtered measure A measure: count_a { type: count filters: [group_a_yesno: "yes"] }

## filter determining time range for all "B" measures filter: timeframe_b { type: date_time }

## flag for "B" measures to only include appropriate time range dimension: group_b_yesno { hidden: yes type: yesno sql: {% condition timeframe_b %} ${created_raw} {% endcondition %} ;; }

measure: count_b { type: count filters: [group_b_yesno: "yes"] }

このロジックを使用すると、必要なだけ期間比較を作成できます。

動的期間を使用してクエリ全体をフィルタリングする

フィルタされたメジャーでは、全体的なクエリ結果にフィルタ条件が適用されません。指定した期間内のクエリ結果全体を制限する場合は、次の方法があります。

  1. 次の yesno ディメンションを作成します。
  2. Explore、Look、ダッシュボードでディメンション値を「yes」でフィルタします。

  dimension: is_in_time_a_or_b {
    group_label: "Time Comparison Filters"
    type: yesno
    sql:
      {% condition timeframe_a %} ${created_raw} {% endcondition %} OR
      {% condition timeframe_b %} ${created_raw} {% endcondition %} ;;
  }

これにより、データベースでクエリに必要なデータより多くのデータがスキャンされなくなり、パフォーマンスとクエリコストを抑えることができます。