はじめに
フィルタの相対日付を使うのではなく、パラメータとコントロールを使った動的デフォルト設定をやろうと思ったら、ちょっとトリッキーな対応が必要だったので共有します。
やりたいこと
パラメータの動的デフォルト値を使って、ダッシュボードで常に直近10日間のデータをデフォルト表示するようにしたい。
(貼り付けたコントロールのデフォルトのフィルタ条件を「FROM日付=9日前」~「TO日付=本日」にしたい)
手順
-
AthenaにQuickSightのユーザーテーブルを作成する(カラムはuserのみでOK)
CREATE EXTERNAL TABLE IF NOT EXISTS db_name.user ( user string ) LOCATION 's3://XXXXXXXX/USER/' TBLPROPERTIES ('classification'='csv')
-
上記のS3上にQuickSightのユーザー名のみを記載したcsvファイルを配置する
(例) user.csvYuto.Yamada Anne.Tanaka Gaku.Suzuki
-
【カスタムSQLを使用】からカスタムSQLクエリを以下のように入力する
select user, DATE(current_timestamp AT TIME ZONE 'Asia/Tokyo' - interval '9' day) as reporteddate_jst_default_from, DATE(current_timestamp AT TIME ZONE 'Asia/Tokyo') as reporteddate_jst_default_to from db_name.user
-
FROM日付のパラメータを追加して【動的デフォルトを設定】へ進み、「デフォルト値とユーザー情報を含むデータセット」に先程作成したuserデータセットを選択し、「ユーザー名列」には
user
、「デフォルト値の列」にはreporteddate_jst_default_from
を選択する(静的デフォルト値は使わないため適当な値を設定しておく)
-
同様に、TO日付のパラメータを追加して【動的デフォルトを設定】へ進み、「デフォルト値とユーザー情報を含むデータセット」に先程作成したuserデータセットを選択し、「ユーザー名列」には
user
、「デフォルト値の列」にはreporteddate_jst_default_to
を選択する(静的デフォルト値は使わないため適当な値を設定しておく)
-
フィルタにてフィルタ対象項目を追加し、「フィルタタイプ」、「開始日のパラメータ」、「終了日のパラメータ」を以下のように設定する
-
コントロールの「レポート日From」と「レポート日To」に自動的に直近10日間の期間が設定され、この条件で分析結果が表示される
-
この分析をダッシュボードとして公開すれば完了です
最後に
今回はuserデータセットにAthenaを利用しましたが、上記のようなuserデータセットはRedshiftなど他のデータソースから作成して、各データソースに応じたSQL関数を用いたカスタムSQLクエリを組むことでも同様に実現できるようです