【AWS】QuickSightのダッシュボードで直近10日間のデータをデフォルト表示する

## はじめに
フィルタの相対日付を使うのではなく、パラメータとコントロールを使った動的デフォルト設定をやろうと思ったら、ちょっとトリッキーな対応が必要だったので共有します。

## やりたいこと
パラメータの動的デフォルト値を使って、ダッシュボードで常に直近10日間のデータをデフォルト表示するようにしたい。
（貼り付けたコントロールのデフォルトのフィルタ条件を「FROM日付＝9日前」～「TO日付＝本日」にしたい）

## 手順
1. AthenaにQuickSightのユーザーテーブルを作成する（カラムはuserのみでOK）

	```
	CREATE EXTERNAL TABLE IF NOT EXISTS db_name.user (
	  user string
	)
	LOCATION 's3://XXXXXXXX/USER/'
	TBLPROPERTIES ('classification'='csv')
	```

1. 上記のS3上にQuickSightのユーザー名のみを記載したcsvファイルを配置する

	```(例)&nbsp;user.csv
	Yuto.Yamada
	Anne.Tanaka
	Gaku.Suzuki
	```

1. QuickSightのデータセットにて【新しいデータセット】からAthenaデータソースを作成する
	![A01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/82dcbf2a-93d3-34b6-65ac-4708c7c42f9e.png)
1. テーブルには先程作成したユーザーテーブルを選択する
	![A02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/7e3733b3-7ed1-c320-4db3-a96d257a8f29.png)
1. 【カスタム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
	```

	![A03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/781bc29f-e1b6-c0c7-75ec-3e957dbbec21.png)
1. 今回はSPICEは使わない方針だったので「データクエリを直接実行」を選択
	![A04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/a0234f67-f63e-83b7-1bf0-c15deb275fdf.png)
1. 【データの編集/プレビュー】からカスタムSQLクエリと実行結果を確認したらuserデータセットを保存する
	![A05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/d3def9c8-626f-5a17-e61d-1b0965556959.png)
1. 次に、予め作成していた分析の画面に移動し、先程作成したuserデータセットを分析に追加する
	![A06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/b44f96ad-cc64-64ea-d109-5265fe555461.png)
1. FROM日付のパラメータを追加して【動的デフォルトを設定】へ進み、「デフォルト値とユーザー情報を含むデータセット」に先程作成したuserデータセットを選択し、「ユーザー名列」には `user` 、「デフォルト値の列」には `reporteddate_jst_default_from` を選択する（静的デフォルト値は使わないため適当な値を設定しておく）
	![B01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/a6f02e87-1514-51eb-20fb-6addf7b44570.png)
	![B02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/a05b7a38-460b-a06d-ead8-18e49177aa0d.png)
1. 同様に、TO日付のパラメータを追加して【動的デフォルトを設定】へ進み、「デフォルト値とユーザー情報を含むデータセット」に先程作成したuserデータセットを選択し、「ユーザー名列」には `user` 、「デフォルト値の列」には `reporteddate_jst_default_to` を選択する（静的デフォルト値は使わないため適当な値を設定しておく）
	![B03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/2c7de894-9583-1472-1da6-fbffcac68724.png)
	![B04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/022b1891-961e-724a-1038-c99aa7134e10.png)
1. 作成したFROM日付のパラメータをコントロールに追加する
	![B05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/7d4a645c-2146-32ae-8079-e65389dd046e.png)
	![B06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/8467059d-0e7b-8d6e-9a02-5a99d31941f6.png)
1. 同様に、TO日付のパラメータをコントロールに追加する
	![B07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/4391bf9c-1437-ce7e-e662-6a7123b5c390.png)
	![B08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/0964e42e-dda4-02ad-3278-f9198f913ab2.png)
1. フィルタにてフィルタ対象項目を追加し、「フィルタタイプ」、「開始日のパラメータ」、「終了日のパラメータ」を以下のように設定する
	![B09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/3c63a1e5-9b01-740a-8fb5-237b65b7de2a.png)
1. コントロールの「レポート日From」と「レポート日To」に自動的に直近10日間の期間が設定され、この条件で分析結果が表示される
	![B10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682735/c08f8bb1-6e8c-e57d-80ae-e855757becc6.png)
1. この分析をダッシュボードとして公開すれば完了です

## 最後に
今回はuserデータセットにAthenaを利用しましたが、上記のようなuserデータセットはRedshiftなど他のデータソースから作成して、各データソースに応じたSQL関数を用いたカスタムSQLクエリを組むことでも同様に実現できるようです