QuickSight から Snowflake に接続して新型コロナウイルス感染動向を可視化してみた

記事タイトルとURLをコピーする

クラウドインテグレーション部の宮本です。

今回は Redash から Snowflake に接続して新型コロナウイルス感染動向を可視化してみた の QuickSight 版です。

可視化する項目は以下、東京都のサイトを参考にします。
東京都 新型コロナウイルス感染症 対策サイト

データソースの追加

QuickSight のアカウントは作成済みで、管理者でログインしていることが前提です。QuickSight のデータソースとして Snowflake を追加します。

左側メニューの データセット を選択し、新しいデータセット を選択します。

f:id:swx-miyamoto:20200827120308p:plain

一覧から Snowflake を選択します。

f:id:swx-miyamoto:20200827120451p:plain

接続情報の入力欄が表示されます。必要事項を入力して データソースを作成 を選択します。

  • データソース名: 任意の名前を入力します
  • データベースサーバー: Web コンソールの URL XXXXXXXX.ap-northeast-1.aws.snowflakecomputing.com 部分を入力します
  • データベース名: データベース名を入力します
  • ウェアハウス: 仮想ウェアハウス名を入力します。今回はデフォルトで作成されている DEMO_WH を使用します
  • ユーザー名、パスワード: Snowflake の接続ユーザー、パスワードを入力します

f:id:swx-miyamoto:20200827120709p:plain

ここまでがデータソースの作成です。テーブルの選択 という画面が表示されますが、× で一旦スキップします。

データセット、チャートの作成

新しいデータセット を選択します。

f:id:swx-miyamoto:20200827120308p:plain

下までスクロールし、先ほど作成したデータソースを選択します。

f:id:swx-miyamoto:20200827122705p:plain

データセットの作成 を選択します。

f:id:swx-miyamoto:20200827122843p:plain

テーブルの選択画面が表示されます。テーブルを選択して GUI でチャートを作成することもできますが、ここでは カスタム SQL を使用 を選択します。

f:id:swx-miyamoto:20200827123727p:plain

クエリの入力画面が表示されます。クエリの名前と SQL を入力してカスタム SQL をデータセットとして登録できます。

f:id:swx-miyamoto:20200827124323p:plain

報告日別による陽性者数の推移

こちら を参考にチャートを作成します。SQL は以下のように作成しました。累計値は SQL で算出しています。

SELECT PUBLISHED_AT AS "日付",
       COUNT(NO) AS "報告日別による陽性者数の推移(日別)",
       SUM(COUNT(NO)) OVER (ORDER BY PUBLISHED_AT) AS "報告日別による陽性者数の推移(累計)"
FROM TOKYO_COVID19_PATIENTS
GROUP BY PUBLISHED_AT
ORDER BY PUBLISHED_AT;

東京都のサイトでは日別と累計を切り替えられるようになっていますが、QuickSight では難しそうなので日別と累計でそれぞれチャートを作成します。

報告日別による陽性者数の推移(日別)

クエリを入力して クエリの確認 を選択します。

f:id:swx-miyamoto:20200827143029p:plain

そのまま Visualize を選択します。SPICE に関してはこちらを参照してください。

f:id:swx-miyamoto:20200827143131p:plain

チャートの作成画面に遷移します。左上の データセット に今作成したものが選択されているはずです。

f:id:swx-miyamoto:20200827143413p:plain

フィールドリスト に クエリの結果項目が一覧表示されていますので、報告日別による陽性者数の推移(日別)日付 を選択状態にします。すると、横軸が日付、縦軸が陽性者数(日別)のグラフが作成されます。

f:id:swx-miyamoto:20200827143519p:plain

ビジュアルタイプ を変更するとチャートの種類を切替えられます。ここでは 垂直棒グラフ を選択します。

f:id:swx-miyamoto:20200827143816p:plain

報告日別による陽性者数の推移(累計)

同様に累計のチャートも作成します。チャートを追加する場合は、左上の +追加 から ビジュアルを追加 を選択します。

f:id:swx-miyamoto:20200827144242p:plain

追加されました。先程と同様にフィールドリストから横軸に 日付、縦軸に報告日別による陽性者数の推移(累計)、ビジュアルタイプに 垂直棒グラフ を選択します。

f:id:swx-miyamoto:20200827144652p:plain

ダッシュボードの作成

作成したチャートを共有して他のユーザーからも参照できるようにします。画面右上の 共有 から ダッシュボードの公開 を選択します。

f:id:swx-miyamoto:20200827145156p:plain

ダッシュボード名は 東京都コロナウイルス感染動向 としました。ダッシュボードの公開 を選択します。

f:id:swx-miyamoto:20200827145432p:plain

ダッシュボードが作成されました!

f:id:swx-miyamoto:20200827145647p:plain

ダッシュボードで可視化するまでの流れは以上です。他にもいくつかチャートを追加していきます。

クエリ、チャートの作成(追加分)

以下の設定で同様にダッシュボードに追加していきます。

新規陽性者数

こちら を参考にチャートを作成します。

データセット

SELECT PUBLISHED_AT AS "日付",
       COUNT(NO) AS "新規陽性者数",
       AVG("新規陽性者数") OVER (ORDER BY PUBLISHED_AT ASC ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS "新規陽性者数7日間移動平均"
FROM TOKYO_COVID19_PATIENTS
GROUP BY PUBLISHED_AT
ORDER BY PUBLISHED_AT;

チャート設定

  • フィールドリスト
    • 横軸: 日付
    • 縦軸: 新規陽性者数、新規陽性者数 7 日間移動平均
  • ビジュアルタイプ: クラスター棒コンボグラフ
    • 新規陽性者数: 棒グラフ
    • 新規陽性者数 7 日間移動平均: 折れ線グラフ

ビジュアルタイプはフィールド毎には選択できない様で、ここではクラスター棒コンボグラフを使用し、棒グラフ、折れ線グラフを表示します。

おや、新規陽性者数 (最大600)新規陽性者数 7 日間移動平均 (最大300) でスケールが異なりますね。こちらは コンボグラフでは、選択したメジャーの最大値に基づいたスケールが使用される という仕様がある為です。

f:id:swx-miyamoto:20200827153742p:plain

陽性者の属性

こちら を参考に作成します。

SQL

SELECT PUBLISHED_AT AS "公表日",
       IFF(RESIDENCE = '""', '調査中', RESIDENCE) AS "居住地",
       AGE AS "年代",
       SEX AS "性別",
       IFF(HAS_DISCHARGED, '', '') AS "退院※"
FROM TOKYO_COVID19_PATIENTS
ORDER BY PUBLISHED_AT DESC;

チャート設定

  • フィールドリスト: 全項目
  • ビジュアルタイプ: テーブル

受診相談窓口における相談件数

こちら を参考にチャートを作成します。

SQL

SELECT ACCEPTED_AT AS "日付",
       NUMBER_OF_CONSULTATION AS "相談件数",
       AVG(NUMBER_OF_CONSULTATION) OVER (ORDER BY ACCEPTED_AT ASC ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS "相談件数7日間移動平均"
FROM TOKYO_COVID19_COMBINED_TEL_ADVICE_CENTER
ORDER BY ACCEPTED_AT;

チャート設定

  • フィールドリスト
    • 横軸: 日付
    • 縦軸: 相談件数、相談件数7日間移動平均
  • ビジュアルタイプ: クラスター棒コンボグラフ
    • 相談件数: 棒グラフ
    • 相談件数7日間移動平均: 折れ線グラフ

新型コロナコールセンター相談件数(日別)

こちら を参考にチャートを作成します。

SQL

SELECT ACCEPTED_AT AS "日付",
       NUMBER_OF_CONSULTATION AS "相談件数"
FROM TOKYO_COVID19_CALL_CENTER
ORDER BY ACCEPTED_AT;

チャート設定

  • フィールドリスト
    • 横軸: 日付
    • 縦軸: 相談件数
  • ビジュアルタイプ: 垂直棒グラフ

完成形

完成形がこちらです。見た目はもう少し整える余地がありそうですが、いい感じに可視化することができました。

f:id:swx-miyamoto:20200828104819p:plain
完成形 (チャート作成のスクショは7/28 までのデータでしたが、最後に8/27日時点の最新データに更新しました)

まとめ

QuickSight から Snowflake に接続してダッシュボードを作成しました。今回はSQLを書きましたが、テーブルを選択してGUI操作での可視化も出来るのでSQLが書けなくても利用できるのが良いですね!