1. 總覽/簡介
雖然由網頁、應用程式伺服器和資料庫組成的多層應用程式是網頁開發的基礎,也是許多網站的起點,但成功的應用程式往往會面臨擴充性、整合和敏捷性方面的挑戰。例如,資料要如何即時處理,又如何分散到多個關鍵業務系統?這些問題加上網路規模應用程式的需求,促使我們需要分散式訊息系統,並採用使用資料管道來建構具備彈性、即時的系統的架構模式。因此,瞭解如何將即時資料發布至分散式訊息系統,以及如何建構資料管道,對開發人員和架構師來說都是重要的技能。
建構目標
在本程式碼研究室中,您將建構天氣資料管道,從物聯網 (IoT) 裝置開始,利用訊息佇列接收及傳送資料,並利用無伺服器函式將資料移至資料倉儲,然後建立用於顯示資訊的資訊主頁。我們會使用搭載天氣感應器的 Raspberry Pi 做為 IoT 裝置,而 Google Cloud Platform 的多個元件則會組成資料管道。雖然建構 Raspberry Pi 很有幫助,但這不是本程式碼研究室的必修部分,而且串流天氣資料可以用指令碼取代。
完成本程式碼研究室中的步驟後,您將擁有串流資料管道動態饋給資訊主頁,其中會顯示溫度、濕度、露點和氣壓。
課程內容
- 如何使用 Google Pub/Sub
- 如何部署 Google Cloud 函式
- 如何運用 Google BigQuery
- 如何使用 Google 數據分析建立資訊主頁
- 此外,如果您建立了 IoT 感應器,您也會瞭解如何運用 Google Cloud SDK,以及如何保護對 Google Cloud Platform 的遠端存取呼叫
軟硬體需求
- Google Cloud Platform 帳戶。Google Cloud Platform 新使用者享有價值$300 美元的免費試用期。
如果您想建立本程式碼研究室的 IoT 感應器部分,而非使用範例資料和指令碼,您還需要下列資源 ( 可以以整組產品套件的形式訂購,或按這裡逐一訂購)...
- 搭配電源供應器、SD 卡和充電盒的 Raspberry Pi Zero W
- USB 讀卡機
- USB 集線器 (可讓鍵盤和滑鼠在 Raspberry Pi 上單一的 USB 連接埠)
- 母對母麵包板線
- GPIO 鐵鎚標頭
- BME280 感應器
- 焊槍和焊錫
此外,您必須有電腦螢幕或電視 (具備 HDMI 輸入端)、HDMI 傳輸線、鍵盤和滑鼠。
2. 開始設定
自學環境設定
如果您還沒有 Google 帳戶 (Gmail 或 G Suite),請先建立帳戶。無論您是否已擁有 Google 帳戶,一定要善用價值$300 美元的免費試用方案!
登入 Google Cloud Platform 主控台 (console.cloud.google.com)。您可以使用本實驗室的預設專案 (「我的第一個專案」),也可以選擇建立新專案。如要建立新專案,您可以使用「管理資源」頁面。專案 ID 在所有 Google Cloud 專案中均不得重複 (您已使用下方顯示的名稱,無法使用這個名稱)。請記下專案 ID (即 _____),因為稍後會用到。
完成這個程式碼研究室的費用不應超過數美元,但如果您決定使用更多資源,或是將資源繼續執行,則可能會增加費用。請務必完成程式碼研究室結尾的「清理」部分。
3. 建立 BigQuery 資料表
BigQuery 是無伺服器企業資料倉儲服務,具備高擴充性和成本低廉的特性,是儲存來自物聯網裝置的串流資料的理想選擇,同時也能讓數據分析資訊主頁查詢資訊。
我們來建立一個資料表,用來儲存所有 IoT 天氣資料。在 Cloud 控制台中選取 BigQuery。這會在新視窗中開啟 BigQuery (請勿關閉原始視窗,因為您需要再次存取該視窗)。
按一下專案名稱旁的向下箭頭圖示,然後選取「建立新資料集」
輸入資料集的名稱「weatherData」,選取資料儲存位置,然後按一下「確定」
按一下資料集旁邊的「+」符號,建立新資料表
在「Source Data」(來源資料) 中,選取「Create empty table」(建立空白資料表)。在「目的地資料表名稱」部分輸入「weatherDataTable」。在「結構定義」下方點選「新增欄位」按鈕,直到選出共 9 個欄位。按照下方所示填寫欄位,並確認已為每個欄位選取適當的「類型」。完成所有步驟後,按一下「Create Table」按鈕。
畫面顯示的結果應如下所示...
您現在已設定資料倉儲,可接收天氣資料。
4. 建立 Pub/Sub 主題
Cloud Pub/Sub 為串流分析和事件導向運算系統提供簡單可靠的可擴充式基礎架構。因此,這項服務非常適合處理傳入的 IoT 訊息,並允許下游系統處理這些訊息。
如果您仍在 BigQuery 視窗中,請切換回 Cloud 控制台。如果您已關閉 Cloud 控制台,請前往 https://console.cloud.google.com
在 Cloud 控制台中,依序選取「Pub/Sub」和「主題」。
如果您看到「啟用 API」提示,請點選「啟用 API」按鈕。
按一下「建立主題」按鈕
輸入「天氣」做為主題名稱,然後按一下「建立」
您應該會看到新建立的主題
您現在有了 Pub/Sub 主題,可用於發布 IoT 訊息,並允許其他程序存取這些訊息。
安全發布至主題
如果您打算透過 Google Cloud 控制台以外的資源 (例如 IoT 感應器) 將訊息發布至 Pub/Sub 主題,就必須使用服務帳戶更嚴密地控管存取權,並建立信任憑證,確保連線安全無虞。
在 Cloud 控制台中,依序選取「IAM 與管理」和「服務帳戶」
按一下「建立服務帳戶」按鈕
在「角色」下拉式選單中,選取「Pub/Sub 發布者」角色
輸入服務帳戶名稱 (iotWeatherPublisher),勾選「提供新的私密金鑰」核取方塊,並確認金鑰類型已設為 JSON,然後按一下 [建立]
系統會自動下載安全金鑰。請務必妥善保管這組金鑰,按一下 [關閉]。
您應該會看到已建立的服務帳戶,而且有一個相關聯的金鑰 ID。
為了方便日後存取,我們會將金鑰儲存在 Google Cloud Storage 中。依序選取 Cloud 控制台中的「儲存空間」和「瀏覽器」。
點選「建立值區」按鈕
選擇儲存值區的名稱 (名稱必須在 Google Cloud 中不重複),然後按一下「建立」按鈕
找出自動下載的安全金鑰,然後拖曳或上傳至 Storage 值區
金鑰上傳完成後,應會顯示在 Cloud Storage 瀏覽器中
請記下儲存空間值區名稱和安全金鑰檔案名稱,以供後續使用。
5. 建立 Cloud 函式
雲端運算能讓您的運算作業完全以無伺服器的模型執行,因此您能隨時調整處理邏輯來因應其他位置發布的事件。在本實驗室中,每當有訊息發布至天氣主題,Cloud 函式就會啟動,讀取訊息並儲存在 BigQuery 中。
在 Cloud 控制台中選取 Cloud Functions
如果您看到 API 訊息,請按一下「啟用 API」按鈕
按一下「建立函式」按鈕
在「名稱」欄位中,輸入 function-weatherPubSubToBQ。在「觸發條件」中選取 Cloud Pub/Sub 主題,然後在「主題」下拉式選單中選取「weatherdata」。針對原始碼,請選取內嵌編輯器。在 index.js 分頁中,將下列程式碼貼到現有程式碼開頭處。請務必配合您的環境,變更 projectId、datasetId 和 tableId 的常數。
/**
* Background Cloud Function to be triggered by PubSub.
*
* @param {object} event The Cloud Functions event.
* @param {function} callback The callback function.
*/
exports.subscribe = function (event, callback) {
const BigQuery = require('@google-cloud/bigquery');
const projectId = "myProject"; //Enter your project ID here
const datasetId = "myDataset"; //Enter your BigQuery dataset name here
const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
const PubSubMessage = event.data;
// Incoming data is in JSON format
const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
const jsonData = JSON.parse(incomingData);
var rows = [jsonData];
console.log(`Uploading data: ${JSON.stringify(rows)}`);
// Instantiates a client
const bigquery = BigQuery({
projectId: projectId
});
// Inserts data into a table
bigquery
.dataset(datasetId)
.table(tableId)
.insert(rows)
.then((foundErrors) => {
rows.forEach((row) => console.log('Inserted: ', row));
if (foundErrors && foundErrors.insertErrors != undefined) {
foundErrors.forEach((err) => {
console.log('Error: ', err);
})
}
})
.catch((err) => {
console.error('ERROR:', err);
});
// [END bigquery_insert_stream]
callback();
};
在 package.json 分頁中,將下列程式碼貼到預留位置程式碼上
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
如果要執行的函式設為「HelloWorld」,請將其變更為「subscribe」。點選 [建立] 按鈕
函式會在約 2 分鐘後顯示已部署
恭喜!您已成功透過函式將 Pub/Sub 連結至 BigQuery。
6. 設定 IoT 硬體 (選用)
組裝 Raspberry Pi 和感應器
如果有超過 7 個引腳,請將標頭修剪至只剩 7 個引腳。將排針焊接到感應器板。
小心安裝鎚頭接頭到 Raspberry Pi。
請按照這裡的步驟格式化 SD 卡,然後安裝 NOOBS (New Out Of Box Software) 安裝程式。將 SD 卡插入 Raspberry Pi,並將 Raspberry Pi 放入充電盒內。
根據下圖,使用麵包板電線將感應器接到 Raspberry Pi。
Raspberry Pi PIN 碼 | 感應器連線 |
針腳 1 (3.3V) | VIN |
針腳 3 (CPIO2) | SDI |
針腳 5 (GPIO3) | SCK |
針腳 9 (接地) | 東北 |
將監視器 (使用 Mini-HDMI 連接器)、鍵盤/滑鼠 (搭配 USB 集線器) 和最後的電源變壓器連接。
設定 Raspberry Pi 和感應器
在 Raspberry Pi 完成開機後,請針對所需作業系統選取 Raspbian,確定您的偏好語言正確無誤,然後按一下 [安裝] (視窗左上方的硬碟圖示)。
按一下畫面右上方的 Wi-Fi 圖示,然後選取網路。如果是安全網路,請輸入密碼 (預先共用金鑰)。
按一下畫面左上方的「覆盆子」圖示,然後依序選取「偏好設定」和「Raspberry Pi Configuration」。在「介面」分頁中啟用 I2C。在「Localisation」分頁中,設定語言代碼和時區。設定時區後,請讓 Raspberry Pi 重新啟動。
重新啟動完成後,按一下「Terminal」圖示,開啟終端機視窗。
輸入下列指令,確認感應器已正確連接。
sudo i2cdetect -y 1
結果應如下所示,請確認顯示 77。
安裝 Google Cloud SDK
為了善用 Google Cloud 平台上的工具,您必須在 Raspberry Pi 上安裝 Google Cloud SDK。這個 SDK 包含管理及運用 Google Cloud Platform 所需的工具,並支援多種程式設計語言。
在 Raspberry Pi 上開啟終端機視窗 (如果尚未開啟),然後設定環境變數,讓 SDK 版本與 Raspberry Pi 上的作業系統相符。
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
接著新增 Google Cloud SDK 套件的儲存位置,讓安裝工具知道系統要求安裝 SDK 時前往何處。
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
從 Google 的套件存放區新增公開金鑰,讓 Raspberry Pi 在安裝期間驗證安全性並信任內容
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
確認 Raspberry Pi 上的所有軟體都已更新,並安裝核心 Google Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk
當系統顯示「Do you want to continue?」提示訊息時,請按下 Enter 鍵。
使用 Python 套件管理工具安裝 tendo 套件。這個套件可用於檢查指令碼是否執行多次,以及是否已安裝用於天氣指令碼的應用程式。
pip install tendo
使用 Python 套件管理員,確認已安裝 Python 適用的 Google Cloud PubSub 和 OAuth2 套件,並已更新至最新版本
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
初始化 Google Cloud SDK
SDK 允許透過經過驗證的遠端存取 Google Cloud。在本程式碼研究室中,這會用於存取儲存值區,方便將安全金鑰下載到 Raspberry Pi。
在 Raspberry Pi 的指令列中輸入
gcloud init --console-only
當系統顯示「Would you like to log in (Y/n)?」提示訊息時,請按下 Enter 鍵。
畫面上顯示「在瀏覽器中前往以下連結:」後面接著是一串開頭為 https://accounts.google.com/o/oauth 的長網址?...,請將滑鼠游標懸停在網址上,然後按一下滑鼠右鍵並選取「複製網址」。接著開啟網頁瀏覽器 (畫面左上角的藍色地球圖示),在網址列上按一下滑鼠右鍵,然後點選「貼上」。
出現登入畫面後,請輸入與 Google Cloud 帳戶相關聯的電子郵件地址,然後按下 Enter 鍵。接著輸入密碼,然後按一下「下一步」按鈕。
系統會提示您 Google Cloud SDK 想要存取您的 Google 帳戶。按一下「允許」按鈕。
畫面隨即會顯示驗證碼。使用滑鼠醒目顯示該項目,然後按一下滑鼠右鍵並選擇「複製」。返回終端機視窗,確認游標位於「Enter verification code:」右側,然後按一下滑鼠右鍵,然後選擇「Paste」。按下 Enter 鍵。
如果系統要求您「選擇要使用的 Cloud 專案:」,請輸入您在本程式碼研究室中使用的專案名稱對應的數字,然後按下 Enter 鍵。
如果系統提示您啟用 Compute API,請按下 Enter 鍵加以啟用。接著,系統會要求您設定 Google Compute Engine 設定。按下 Enter 鍵。系統會顯示可能的區域/區域清單,請選擇最接近您所在位置的區域,輸入對應的編號,然後按下 Enter 鍵。
稍後,您會看到一些額外資訊。Google Cloud SDK 現已設定完成。您可以關閉網頁瀏覽器視窗,因為您之後不需要這個視窗。
安裝感應器軟體和天氣指令碼
透過 Raspberry Pi 的命令列,複製所需套件,以便從輸入/輸出引腳讀取資訊。
git clone https://github.com/adafruit/Adafruit_Python_GPIO
安裝下載的套件
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
複製啟用天氣感應器的專案程式碼
git clone https://github.com/googlecodelabs/iot-data-pipeline
將感應器驅動程式複製到與下載軟體其餘部分相同的目錄中。
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
輸入以下內容即可編輯指令碼...
nano checkWeather.py
將專案變更為專案 ID,將主題變更為 Pub/Sub 主題名稱 (這些資訊已列於本程式碼研究室的「開始設定」和「建立 Pub/Sub 主題」部分)。
將 sensorID、sensorZipCode、sensorLat 和 sensorLong 的值變更為您想要的值。如要取得特定位置或地址的經緯度值,請按這裡。
完成必要的變更後,按下 Ctrl-X 鍵即可退出 nano 編輯器。按下 Y 鍵確認。
# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"
安裝安全金鑰
將安全金鑰 (從「安全地發布至某個主題」專區) 複製到 Raspberry Pi。
如果您使用 SFTP 或 SCP 將安全金鑰從本機電腦複製到 Raspberry Pi (/home/pi 目錄),請略過下一個步驟,直接跳到匯出路徑。
如果您將安全金鑰放入儲存值區,請務必記住儲存值區名稱和檔案名稱。使用 gsutil 指令複製安全金鑰。這個指令可以存取 Google 儲存空間 (為何其命名為 gsutil,以及檔案路徑開頭為 gs:// 的原因)。請務必變更下列指令,以便顯示您的值區名稱和檔案名稱。
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
系統會顯示訊息,說明檔案正在複製,且作業已完成。
透過 Raspberry Pi 的指令列,匯出安全金鑰的路徑 (請根據您所擁有的檔案變更檔案名稱)
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
您現在已建立完成的 IoT 天氣感應器,可以開始將資料傳送至 Google Cloud。
7. 啟動資料管道
可能需要啟用 Compute API
從 Raspberry Pi 進行串流資料
如果您建立了 Raspberry Pi IoT 天氣感應器,請啟動指令碼來讀取天氣資料,並推送至 Google Cloud Pub/Sub。如果您不在 /home/pi/iot-data-pipeline 目錄中,請先移到該處
cd /home/pi/iot-data-pipeline
啟動天氣指令碼
python checkWeather.py
您應該會看到終端機視窗每分鐘回應一次天氣資料結果。資料傳送後,您可以跳到下一節 (檢查資料是否處於流動)。
模擬資料串流
如果您沒有建構 IoT 天氣感應器,可以使用已儲存在 Google Cloud Storage 中的公開資料集,並將其饋送至現有的 Pub/Sub 主題,模擬資料串流。搭配使用 Google Dataflow 和 Google 提供的範本,可從 Cloud Storage 讀取並發布至 Pub/Sub。
在這個程序中,Dataflow 需要臨時儲存位置,因此我們要建立一個儲存值區。
在 Cloud 控制台中,依序選取「Storage」和「Browser」。
點選「建立值區」按鈕
選擇 Storage 值區的名稱 (提醒您,這個名稱在所有 Google Cloud 中均不得重複),然後按一下「建立」按鈕。請記下這個儲存值區的名稱,因為稍後會用到。
在 Cloud 控制台中選取「Dataflow」。
按一下「Create Job From Template」(利用範本建立工作) (畫面上方)
按照下方所示填入工作詳細資料,並注意下列事項:
- 輸入工作名稱「dataflow-gcs-to-pubsub」
- 系統會根據專案託管位置自動選取區域,無需變更。
- 選取 GCS Text 至 Cloud Pub/Sub 的 Cloud Dataflow 範本
- 在「輸入 Cloud Storage 檔案」中,輸入 gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (這是公開資料集)
- 對於輸出 Pub/Sub 主題,確切路徑取決於專案名稱,並會類似「projects/yourProjectName/topics/weatherdata」。
- 將「臨時位置」設為您剛建立的 Google Cloud Storage 值區名稱,並加上檔案名稱前置字串「tmp」。格式應為「gs://myStorageBucketName/tmp」。
填妥所有資訊後 (請參閱下方說明),按一下「Run job」(執行工作) 按鈕
Dataflow 工作應會開始執行。
Dataflow 工作大約需要一分鐘才能完成。
8. 檢查資料是否可正常流通
Cloud 函式記錄
確保 Pub/Sub 觸發 Cloud 函式
gcloud beta functions logs read function-weatherPubSubToBQ
記錄檔應會顯示函式正在執行、接收中資料,且正在將資料插入 BigQuery
BigQuery 資料
檢查並確認資料能傳送至 BigQuery 資料表。在 Cloud 控制台中,前往 BigQuery (bigquery.cloud.google.com)。
在視窗左側的專案名稱下方,依序點選「資料集」(weatherData) 和資料表 (weatherDataTable),然後點選「Query Table」(查詢資料表) 按鈕
為 SQL 陳述式加上星號,使其讀取 SELECT * FROM... (如下所示),然後按一下「RUN QUERY」按鈕
系統提示時,請按一下「執行查詢」按鈕
如果看到結果,表示資料正在正常傳送。
隨著資料開始流程,您現在可以建立數據分析資訊主頁。
9. 建立數據分析資訊主頁
Google 數據分析可將您的資料轉變成資訊豐富的資訊主頁與報告,既便於閱讀、容易共用,更具有完整的可自訂性。
使用網路瀏覽器前往 https://datastudio.google.com
在「Start a new report」(建立新報表) 下方,按一下「Blank」(空白),然後按一下「Get Started」(開始使用) 按鈕
勾選核取方塊來接受條款,按一下 [下一步] 按鈕,選取您想接收的電子郵件,然後按一下 [完成] 按鈕。再次在「Start a new report」(建立新報表) 下方,按一下「Blank」(空白)
按一下「建立新資料來源」按鈕
依序按一下「BigQuery」和「授權」按鈕,然後選擇要與 數據分析 搭配使用的 Google 帳戶 (應與您在程式碼研究室中使用的帳戶相同)。
按一下「允許」按鈕
選取專案名稱、資料集和資料表。然後按一下「連線」按鈕。
如以下所示,變更類型欄位 (除了 timecollected 和 sensorID 以外,所有欄位都應為數字)。請注意,timecollected 設為 Date Hour (而非僅設為 Date)。變更「匯總」欄位,如下所示 (露點、溫度、濕度和壓力應為平均值,其他所有項目則應設為「None」)。按一下「建立報表」按鈕。
按一下「Add to report」(加入報表) 按鈕確認
如果系統要求您選取 Google 帳戶,請依指示操作,然後按一下「允許」按鈕,讓數據分析將報表儲存在 Google 雲端硬碟中。
畫面上會顯示空白的報表面板,供您建立資訊主頁。從頂端一列圖示中,選擇「時間序列」。
在空白工作表的左上角繪製矩形。應佔據空白紙張的 ¼ 左右。
選取視窗右側的「樣式」分頁標籤。將「缺少資料」從「Line To Zero」變更為「Line Breaks」。在左側 Y 軸部分,將 Axis Min 中的 0 刪除至 (Auto)。
按一下工作表中的圖表,然後複製/貼上 (Ctrl-C/Ctrl-V) 圖表 3 次。請對齊圖表,使每個版面有 1⁄4 的版面配置。
按一下每個圖表,然後在「時間序列屬性和資料」部分按一下現有指標 (露點),選擇要顯示的其他指標,直到所有四個天氣讀數 (露點、溫度、濕度和氣壓) 都有各自的圖表。
您現已擁有基本資訊主頁!
10. 恭喜!
您已建立整個資料管道!您已瞭解如何使用 Google Pub/Sub、部署無伺服器函式、運用 BigQuery,以及使用 Data Studio 建立數據分析資訊主頁。此外,您也瞭解瞭如何安全地使用 Google Cloud SDK 將資料帶入 Google Cloud Platform。最後,您現在已掌握了一些重要架構模式的實作經驗,可在處理大量流量時維持可用性。
清除
實驗天氣資料和分析管道後,您可以移除執行中的資源。
如果您已建構 IoT 感應器,請將其關閉。在終端機視窗中按下 Ctrl-C 鍵即可停止指令碼,然後輸入以下指令來關閉 Raspberry Pi
shutdown -h now
前往「Cloud Functions」,勾選 function-weatherPubSubToBQ 旁邊的核取方塊,然後點選「刪除」
前往 Pub/Sub,按一下「Topic」,然後勾選「weatherdata」主題旁的核取方塊,接著按一下「Delete」
前往「儲存空間」,勾選儲存空間值區旁的核取方塊,然後點選「刪除」
前往 bigquery.cloud.google.com,按一下專案名稱旁邊的向下箭頭,再依序點選天氣資料資料集右側的向下箭頭和「刪除資料集」。
系統提示時,請輸入資料集 ID (weatherData),即可完成刪除資料的程序。