🔧
Grafanaでの期間フィルターの使い方
はじめに
業務でBIツールのSQLをRedashからGrafanaに移行したときにそれぞれの設定の違いでかなりつまづいたため、その時に調べた内容を備忘録として残そうと思います。
使い方
Grafanaでの期間フィルターの使い方
サンプルクエリ
select
count(*) as count,
max(created_at) as last_created_at
from
count_data c
where
$__timeFilter(timestamp(created_at))
$__timeFilter
のみ(https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#timefilter-or-__timefilter)
$__timeFilter(timestamp(created_at))
${__from}
と${to}
の組み合わせ(https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#__from-and-__to)
-- 文字列をタイムスタンプに変換して比較
timestamp(created_at) between '${__from:date}' and '${__to:date}'
-- 文字列を日付形式に変換して比較
cast(timestamp(created_at) as date) between '${__from:date:YYYY-MM-DD}' and '${__to:date:YYYY-MM-DD}'
-- 文字列を日時形式に変換して比較
cast(timestamp(created_at) as datetime) between '${__from:date:YYYY-MM-DD}' and '${__to:date:YYYY-MM-DD}'
今回のパターンはISO8601形式の日付文字列が値として入っていたため、timestamp関数で文字列からtimestampに変換をかけています。
where句の左辺で関数を使うのは処理上あまり良くないそうですので、サブクエリやdbtのStagingなどで日付文字列は予めtimestampやdateに変換しておいた方が良さそうです
さいごに
BIツールは他にもさまざまありますが、RedashやGrafanaはそれぞれの便利な機能や共通していない箇所が沢山ありますので、状況や目的に応じて使い分けすることが移行していて大切だととても感じました。
両方とも普段触る機会があまりないツールだとは思いますので、この記事がみなさんの調査時間の短縮に少しでも貢献できれば幸いです!
Discussion