ビジュアルのディメンションに"日付以前"を指定する方法

こんにちは。

私は運用環境上のデータべースの定点データを集めて、分析環境で時系列分析を行っています。

時系列分析のために、毎日決まった時刻に運用環境のデータベースの差分を取り、差分があったデータのみ、当日の日付を付与して分析環境に取り込んでいます。

例えばこのようなデータがあったとして:

id version modified_at 
--------------------------
1  1.0.0  2024-4-15
2  2.0.0  2024-4-16
3  1.0.0  2024-4-15

4/16の差分を取り込むと、取り込まれるデータは:

日付  id  version  modified_at 
--------------------------
2024-4-16  2  2.0.0  2024-4-16

となる。
分析環境には、以下のようなデータが存在することになる:

日付 id version modified_at 
--------------------------
2024-4-15  1  1.0.0  2024-4-15
2024-4-15  2  1.0.0  2024-4-15
2024-4-16  2  2.0.0  2024-4-16
2024-4-15  3  1.0.0  2024-4-15

このデータを可視化したいとき、日付をディメンションにすると、日付ごとに集計がされますが、差分があったデータしか表示されないことになります。

私が望むことは、私は差分があったデータのみを保持しているので、当日の日付がないが過去の日付のデータがある場合は、過去の日付のデータで一番日付が新しいデータを使って集計されることです。

つまり、時系列分析するときに、ディメンションに、"日付以前のデータの中で最新のデータ"で集計されることです。

日付をディメンション:

   version(個数)
   1.0.0 2.0.0
--------------------------
4/15  3   0
4/16  0   1

望むこと:

   version(個数)
   1.0.0 2.0.0
--------------------------
4/15  3   0
4/16  2   1

これを実現するにはどのような工夫が必要でしょうか?

@Tyk

ご質問ありがとうございます!

”日付以前”を判断するのは、その該当行の日付になりますか、それとも、その該当行の以前なりますか?ご提示いただいた内容から、後者のように見受けられますが・・

その該当行の以前、です。

よろしくお願いいたします。

@Tyk
詳細な情報ありがとうございました。
QuickSightでは、期待されるような日付をうまく調整して集計するということはできません。
現時点では、以下のような結果が限界かと思います。


左側:入力データ
右側:出力データ

出力データの列の詳細は以下の通りです。
1列目:日付でバージョン1をカウントしたもの
2列目:日付でバージョン2をカウントしたもの
3列目:バージョンの個数を1日分ずらしたもの
4列目:3列目の計算結果から2列目の結果を引いたもの

計算フィールドは以下のとおりです。
count_ver1: countif(version, version=1)
count_ver2: countif(version, version=2)
lag_count_ver: lag(count(version), [date ASC], 1)
lag_count_ver_minus_count_ver2: {lag_count_ver} - {count_ver2}

上記のやり方ですと、

  1. versionが増えると計算フィールドが煩雑になる
  2. 直書きの部分が増えしまう

という課題を抱えることになります。

したがって、データソース側、いわゆる上流で日付とバージョン管理を最適な形で実施していただき、結果のみRDBやDWHでのテーブルやビューにして、QuickSightで可視化するほうが良いと思います。

2 Likes