Amazon QuickSightでソースデータの日付列の値をもとに曜日列を定義して可視化してみた

2020.12.06

こんにちは、CX事業本部の若槻です。

今回は、Amazon QuickSightでソースデータの日付列の値をもとに曜日列を定義して可視化してみました。

やってみる

ソースデータの入手

今回、ソースデータには「東京都 新型コロナウイルス感染症対策サイト」の報告日別による陽性者数の推移のデータを使用しました。

サイトを開き、[報告日別による陽性者数の推移]の[オープンデータを入手]をクリックします。 image

「東京都オープンデータカタログサイト」のデータセットページが開くので、[探索] - [ダウンロード]をクリックしてソースデータのCSVファイルをダウンロードします。 image

QuickSightのデータセットにファイルをアップロード

Amazon QuickSightのコンソールを開き、[データセット]タブで[新しいデータセット]をクリック。 image

[ファイルのアップロード]をクリック。 image

先程ダウンロードしたCSVファイルを開きます。 image

ダイアログで[設定の編集とデータの準備]をクリック。 image

データセットにデータが読み込まれました。 image

データの列は次のようになっています。

  • No(Int)
  • 全国地方公共団体コード(Int)
  • 都道府県名(String)
  • 市区町村名(String)
  • 公表_年月日(Data)
  • 発症_年月日(String)
  • 確定_年月日(String)
  • 患者_居住地(String)
  • 患者_年代(String)
  • 患者_性別(String)
  • 患者_職業(String)
  • 患者_状態(String)
  • 患者_症状(String)
  • 患者_渡航歴の有無フラグ
  • 患者_接触歴の有無フラグ
  • 備考(String)
  • 退院済フラグ(Int)

そのうち日付を表す列は公表_年月日発症_年月日確定_年月日ですが、今回は値が必ず入っている公表_年月日列をもとにして曜日列を定義したいと思います。 image

「曜日番号」列の定義

ここでは、実際の曜日名(...)を表す「曜日」列を定義する前に、まず曜日を番号で表す「曜日番号」列を定義します。QuickSightでカスタム列を定義したい場合は計算フィールドを使用します。

[計算フィールドを追加]をクリック。 image

ここで、日付値をもとにした情報を取得したい場合はextract関数を使用します。

今回の場合は第一引数にWD、第二引数に列名公表_年月日を指定すれば、行毎の曜日を番号で取得できます。(日曜日が1

extract('WD', 公表_年月日)

列名として曜日番号、エディターにextract('WD', 公表_年月日)を入力し、[保存]をクリック。 image

データセットに計算フィールドとして「曜日番号」列を追加できました。 image

[保存]をクリックしてデータセットを一度保存します。 image

「曜日」列を定義

今度は「曜日」列の定義を行います。

[データセット]タブで先程保存したデータセットをクリック。 image

下記のようなダイアログが開くので、[データセットの編集]をクリック。 image

[計算フィールドを追加]をクリック。 image

ここで、日付番号列の値をもとに…を定義したい場合はifelse関数を使用します。

列名に曜日、エディターに下記計算式を入力し、[保存]をクリック。

ifelse(
    曜日番号 = 1, "日",
    曜日番号 = 2, "月",
    曜日番号 = 3, "火",
    曜日番号 = 4, "水",
    曜日番号 = 5, "木",
    曜日番号 = 6, "金",
    "土"
)

image

計算フィールドとして「曜日」列が追加されました。[保存して視覚化]をクリック。 image

「曜日」列を軸にしたグラフで可視化してみる

先程のデータセットの分析ページが開きます。[ビジュアルタイプ]として垂直積み上げ棒グラフを選択します。 image

フィールドリストから曜日を[X軸]に追加します。すると「曜日ごとの患者数(公表日ベース)」が可視化できました。しかしX軸を見ると曜日順に並んでいません。なのでこれを曜日順に並ぶようにします。 image

グラフの領域右下を摘んで引き伸ばすと、グラフ下部に[v]が表示されるのでクリックし、表示されたメニューで[曜日]の[>] - [並び替えオプション]を選択。 image

すると[並び替えオプション]が表示されるので、[フィールドを選択]で曜日番号を選択。 image

[適用]をクリック。 image

X軸をから始まる曜日順に並び替えできました。 image

おわりに

Amazon QuickSightでソースデータの日付列の値をもとに曜日列をカスタムフィールドとして定義してみました。

実際のケースにおいては、可視化するデータへの曜日列の付加は本当はETL側で処理するべきなのでしょうが、QuickSight側でもある程度柔軟にデータがいじれるのは良いですね。

以上