如要比較在同一 Look 或資訊主頁中,經過多個時間範圍篩選的指標,可以使用 篩選的評估資料。篩選的資料欄可讓您直接將硬式編碼的篩選條件套用至資料欄,而非套用至整個查詢。
如果您只想比較特定時間範圍,可以使用硬式編碼的時間範圍篩選器 (例如「今年」和「去年」) 定義幾個指標,然後在探索、Look 或資訊主頁中顯示這些指標。您也可以在篩選指標中使用 範本篩選器,進一步運用這種方法,讓時間範圍比較功能變得更具彈性,也就是讓指標隨著使用者在探索、Look或資訊主頁中指定的時間範圍而變動。
模式總覽
整體來說,這個方法涉及三個元件:
-
為每個時間範圍定義
type: date範本篩選器,這樣範本篩選器就會在探索、Look 或資訊主頁中顯示為篩選器限定欄位。 -
建立
yesno類型維度,並與範本篩選器建立連結,這樣當使用者為「僅篩選器」欄位選取值時,yesno維度就會針對符合篩選器條件的記錄傳回「是」。 -
建立經過篩選的度量,以便使用
value = "yes"條件參照yesno維度。這可確保指標只會匯總符合步驟 1 中定義篩選器所指定時間範圍條件的記錄。
這項邏輯可讓使用者建立分析和視覺化資料,比較不同時間範圍的值,例如下列探索:
使用者可以變更「時間範圍 A」和「時間範圍 B」篩選器中的值,但只會影響「訂單數量 A」和「訂單數量 B」的值。訂單數量 A和訂單數量 B 是含有篩選器的指標,可參照時間範圍篩選器中的時間範圍條件。時間範圍 A 會影響訂單數量 A 的值,而時間範圍 B 會影響訂單數量 B 的值。
以下提供本範例的 LookML。
LookML
以下 LookML 假設您有一個維度群組,其中包含名為 created_raw 的 raw 時間範圍:
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"]
}
您可以使用這項邏輯,建立所需的時間範圍比較次數。
使用動態時間範圍篩選整個查詢
篩選的度量值不會將篩選條件套用至整體查詢結果。如要限制指定時間範圍內的整體查詢結果,您可以:
-
建立下列
yesno維度 - 在探索、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 %} ;;
}
這可避免資料庫掃描不必要的資料,進而提升效能和查詢成本。