使用範本篩選器的時間範圍與時間範圍分析比較

如要比較在同一 Look 或資訊主頁中,經過多個時間範圍篩選的指標,可以使用 篩選的評估資料。篩選的資料欄可讓您直接將硬式編碼的篩選條件套用至資料欄,而非套用至整個查詢。

如果您只想比較特定時間範圍,可以使用硬式編碼的時間範圍篩選器 (例如「今年」和「去年」) 定義幾個指標,然後在探索、Look 或資訊主頁中顯示這些指標。您也可以在篩選指標中使用 範本篩選器,進一步運用這種方法,讓時間範圍比較功能變得更具彈性,也就是讓指標隨著使用者在探索Look資訊主頁中指定的時間範圍而變動。

模式總覽

整體來說,這個方法涉及三個元件:

  1. 為每個時間範圍定義 type: date 範本篩選器,這樣範本篩選器就會在探索、Look 或資訊主頁中顯示為篩選器限定欄位
  2. 建立 yesno 類型維度,並與範本篩選器建立連結,這樣當使用者為「僅篩選器」欄位選取值時,yesno 維度就會針對符合篩選器條件的記錄傳回「是」。
  3. 建立經過篩選的度量,以便使用 value = "yes" 條件參照 yesno 維度。這可確保指標只會匯總符合步驟 1 中定義篩選器所指定時間範圍條件的記錄。

這項邏輯可讓使用者建立分析和視覺化資料,比較不同時間範圍的值,例如下列探索:

使用者可以變更「時間範圍 A」和「時間範圍 B」篩選器中的值,但只會影響「訂單數量 A」和「訂單數量 B」的值。訂單數量 A訂單數量 B 是含有篩選器的指標,可參照時間範圍篩選器中的時間範圍條件。時間範圍 A 會影響訂單數量 A 的值,而時間範圍 B 會影響訂單數量 B 的值。

以下提供本範例的 LookML。

LookML

以下 LookML 假設您有一個維度群組,其中包含名為 created_rawraw 時間範圍:

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

比較計數指標 (訂單計數 A訂單計數 B) 的 LookML 會根據 created_raw 篩選兩個動態時間範圍 (時間範圍 A時間範圍 B),如下所示:

  ## 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. 在探索、Look 或資訊主頁中,依「是」篩選維度值:

  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 %} ;;
  }

這可避免資料庫掃描不必要的資料,進而提升效能和查詢成本。