Data engineering

Create COVID-19 Dashboard by Data studio

Create COVID-19 Dashboard by Data studio

自己來動手製作的COVID-19 Dashboard吧,本篇將透過GCP雲端服務自動抓取最新的疫情資料,並使用Google的可視化工具Data studio串接來製作每日自動更新的疫情儀表板。

Data source

CSSEGISandData/COVID-19

Diagram

diagram

透過Cloud Scheduler定時觸發Cloud Functions中部署的爬蟲程式,並將資料儲存至Cloud Storage,並由Data Studio即時讀取最新資料並製作COVID-19即時資訊儀表板。

GCP

GCP Source: Google

這次採用的雲端平台GCP內含相當多的服務可以使用,目前有提供300美金3個月的免費額度可使用;而本篇使用到的服務主要有Cloud Storage, Cloud Functions, Cloud Scheduler

Cloud Functions

利用Cloud Functions來新增一個可透過Http request觸發的爬蟲程式,記得在requirements.txt 寫入需安裝的套件(此處為pandas以及google-cloud-storage),

Cloud_fun

Cloud_fun2

爬取確診人數的部分如下,也可以新增迴圈連同死亡、復原的人數一起抓取。

import pandas as pd
def crawler(request):
    # get data from github
    df = pd.read_csv("https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv")
    # wide format to long format
    df = pd.melt(df, id_vars=df.columns[:4], value_vars=df.columns[4:], var_name="date", value_name="count")
    return df.to_csv(index=False)

由於需要抓取自動後上傳至Cloud Storage,所以還需加入以下網址內程式碼 Uploading objects

Note:

  • Cloud Functions只允許在 /tmp路徑下才能存檔。
  • Cloud functions 與 Cloud Storage建議在同個地區,避免額外傳輸費用。

Cloud Storage

雲端儲存空間,新增bucket後即可開始使用,也能像google drive一樣手動上傳檔案,但Cloud Storage的優勢是更能方便地在GCP上與各服務串接;免費的部分有5GB的額度。

Cloud_storage

觸發Cloud functions後可以確認看看是否有確實上傳確診、死亡、復原的資料 Cloud_storage2

Note:

  • Cloud functions 與 Cloud Storage建議在同個地區,避免額外傳輸費用。

Cloud Scheduler

可以依據原始資料的更新時間來設定希望多久執行一次爬蟲,設定方式是像在Linux中的Crontab排程,使用Cron語法,可以利用這個網站確認自己撰寫的排程是否符合預期。

設定完成的狀態如下 scheduler

Note:

  • Cloud Scheduler完全免費方案只有設定3個Job的額度

Data Studio

在設定好資料後就可以嘗試來把它視覺化了,這裡採用的是google免費的Data Studio,算是滿容易上手的工具,跟GCP串接當然也是沒有問題的。

data_studio

此處新增資料源->從Data Storage內選取三份csv檔案

data_studio2

Result

COVID-19 Dashboard

covid-dashboard

Animated Bar Chart

animated_bar_chart

  • 即時資訊互動儀表板如下,可自由選擇Country/Region (建議可點擊右下角"Google數據分析"觀看完整報表)

Additional Resources

comments powered by Disqus