Amazon QuickSightで、あるビューを使用して別のダッシュボードをフィルターして表示する

遠回りしないで Action
2019.06.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも。DI部@大阪オフィスのtamaです。

Amazon QuickSight(以下QuickSight)のダッシュボードに関する機能を、自分のために書いておきます。

Tableauでいうところのダッシュボードアクション

言葉で説明するのが難しいのですが、例えば、棒グラフがあったとして、その中の1つの棒をクリックした際に、クリックした部分のデータだけ抜き出した形のテキスト表を見たい…というような要件が、ダッシュボードには度々あります。ダッシュボードをまたいだドリルダウンとでもいいましょうか。

Tableauには「ダッシュボードアクション」という機能で上記を実現することができますが、それをAmazon QuickSightでもやりたいというのが、本エントリの主旨です。

今回やりたいこと

準備

下記の2つのダッシュボードを用意します。

要件

上の画像(遷移元ダッシュボード)のある棒グラフを選択して、選択した部分だけの日時のデータを、下の画像(遷移先ダッシュボード)で見たい…ということをやってみます。

URLアクションを使う

Amazon QuickSightで、別のダッシュボードに遷移させたい場合は、URLアクションという機能を使用します。

普通に設定してみる

設定自体は非常に簡単です。ダッシュボードの右上メニューからURLアクションを選択します。

「アクションの追加」を選択します。

そして、URLアクションの名称と、実際の飛ばす先のURLを入力します。ここのURLですが、普通にブラウザで開いた時のURLで問題ありません。

設定が完了すると、ビュー上のデータを選択した時に、設定したURLアクションが出てきます。これを選択すると、設定したURL(つまり別ダッシュボード)に遷移します。

ただし、この方法だと、単純に遷移するだけで、「選択した部分のデータで、遷移先ダッシュボードをフィルタリングする」という要件は満たせません。

選択した時にパラメータを渡すように設定する

選択した部分だけの日時のデータを、下の画像(遷移先ダッシュボード)で見たい

QuickSightのURLアクションの設定として、選択した部分のデータを、遷移先ダッシュボードに設定してあるパラメータに渡す…というものがあります。これを利用して、今回の要件を実現したいと思います。

遷移先の方にフィルタ&パラメータを設定しておく

遷移元で選択した部分の値(今回でいえば日付)を渡す先を、予め作っておく必要があります。パラメータを設定して、そのパラメータを使ったフィルタも置きましょう。

具体的な方法は下記の通りです。

今回は下記のパラメータを作成しました。パラメータに入った値が、コントロールの「受注日」と連動するようになっています。

遷移元のURLアクションにパラメータ付与設定をする

そして、先程のURLアクションに戻ります。

遷移させたいURLの最後尾にパラメータの記述を行います。今回の遷移元と遷移先のパラメータを整理すると、下記の通りです。

  • 遷移元から飛ばしたい値:Order Date
  • 遷移先で受け取るパラメータ:Orderdate

上記を実現するためには、URLの最後尾に下記を付与します。

#p.orderdate=<<Order Date>>

遷移先パラメータのorderdateに、遷移元で選択した部分のOrder Dateを渡す…という感じですね。

実践してみる

上記を設定後、実際に試してみます。

2011年3月のデータを選択してみます。

すると、2011年3月1日という値が渡され、その日付だけでフィルタリングされた遷移先ダッシュボードが表示されました。

必ず日にちまで渡されてしまう仕様?

意図通りにパラメータを渡すことはできました。しかし、ここで一つ疑問なのが「2011年3月1日ではなく、”2011年3月”として指定する」ことはできないか…という点です。

色々検証してみたのですが、どうしても日付まで渡ってしまう(〜1日まで渡ってしまう)ようで、フィルタリングを月単位までに留めるというのは、今の所実現できていません(truncDate関数で丸めた項目を使用したり、表記を変更してみてもダメでした)。

どういった形までが渡せるのか、色々と試して把握してみて、そこからQuickSightで実現できる形を考える方法がベストかもしれません。

おわりに

簡単な操作でTableauのダッシュボードアクション的な操作を行うことができました。