私は現在、Metabase を使用して、いくつかの社内指標のライブ ダッシュボードをまとめています。クエリしようとしているものの 1 つは、モバイル アプリでのトランザクションの 24 時間のローリング ウィンドウです。メタベースには、定義された期間の値の変化を比較できる「スマート ナンバー」と呼ばれる便利な視覚化ツールがあります。このような。
過去 24 時間とその前の 24 時間を比較できるように、24 時間間隔でデータを出力するクエリを作成するのに問題があります。date_trunc 関数を使用してトランザクションを時間で分割し、結果を過去 24 時間に制限しようとしましたが、トランザクションがない時間は出力されません。また、以下のコードに示すようにフィルター関数を使用してみましたが、「スマート番号」が機能するにはデータを転置する必要があります。この問題にどのように取り組むべきかについて、誰か提案がありますか?
私のアプローチの例:
SELECT
(DATE_TRUNC('hour', (reservations.created_at::timestamptz))) as hour,
SUM(reservations.covers) as total_covers
FROM reservations
JOIN restaurants on restaurants.id = reservations.restaurant_id
WHERE reservations.origin = 'mobile'
and restaurants.relationship_type in ('listing_only', 'difficult', 'ipad')
GROUP BY hour
ORDER BY hour desc
これは次のようなものを出力します:
hour total_covers
"2019-02-19 15:00:00+00" 4
"2019-02-19 13:00:00+00" 15
"2019-02-19 12:00:00+00" 4
"2019-02-19 11:00:00+00" 4
"2019-02-19 10:00:00+00" 26
"2019-02-19 09:00:00+00" 5
"2019-02-19 08:00:00+00" 8
"2019-02-19 07:00:00+00" 12
"2019-02-19 03:00:00+00" 2
私はこのようなものを取得したいと思います:
Time_Interval Total_Covers
24 Hours 389
48 Hours 254
72 hours 459
96 Hours 239