GSP009
總覽
在本實驗室中,您將使用 BigQuery 分析美國國家海洋暨大氣總署 (NOAA) 的歷來天氣觀測資料,然後將天氣資料與紐約市 311 專線收到的市民投訴進一步結合分析,以瞭解資料變數之間的關聯性 (類似概念可參閱 Reto Meier 的網誌文章)。
您將實際體驗多項對科學家極具效益的 Google Cloud 特色:
-
無伺服器:可直接在雲端處理資料集,不必將資料下載到本機。
-
使用便利:可對資料集執行臨時 SQL 查詢,不必事先準備資料 (例如建立索引)。
-
擴充性佳:能以互動的方式探索極大型資料集,不必對資料取樣也能及時分析。
-
共用性佳:輕鬆查詢不同資料集的資料。在 BigQuery 中共用資料集十分便利。當然,您也可以將資料設為私密,或只與特定對象分享,不需公開所有資料。
分析完畢後,您將瞭解哪些類型的市民投訴與天氣具有關聯性。舉例來說,您會理所當然地發現,室外寒冷時最常收到有關住宅暖爐的投訴。

課程內容
在本實驗室中,您將:
- 在 BigQuery 控制台進行互動式查詢。
- 合併多個資料集並執行分析。
- 使用
CORR 函式,判斷資料集之間具有正相關、負相關或沒有相關性。
事前準備
這是入門等級的實驗室,我們假設您已具備一些 BigQuery 和 SQL 的使用經驗。如果您從未用過 BigQuery 或 MySQL,可以透過 BigQuery:Qwik Start - 控制台實驗室快速認識這些 Google Cloud 服務。
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始實驗室及登入 Google Cloud 控制台
-
按一下「Start Lab」按鈕。如果實驗室會產生費用,請在開啟的對話方塊中選取付款方式。右側的「Lab setup and access」面板會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 此實驗室所需的臨時憑證 (使用者名稱和密碼)
- 完成此實驗室所需的其他資訊 (如有)
請注意,實驗室計時器位於頁面頂端附近,會顯示剩餘時間。
-
按一下「Open Google Cloud console」。如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗並排開啟分頁。
注意:頁面顯示「選擇帳戶」對話方塊時,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab setup and access」面板找到「Username」。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab setup and access」面板找到「Password」。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
繼續點按後續頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請按一下「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
工作 1:探索天氣資料
開啟 BigQuery 控制台
- 在 Google Cloud 控制台中,依序選取「導覽選單」>「BigQuery」。
接著,畫面中會顯示「歡迎使用 Cloud 控制台中的 BigQuery」訊息方塊,當中會列出快速入門導覽課程指南的連結和版本資訊。
- 點選「完成」。
BigQuery 控制台會隨即開啟。
- 在「Explorer」分頁中,點選「+ 新增資料」。
「新增資料」視窗隨即開啟。
-
在「其他來源」下方,點選「依據名稱為專案加上星號」。
-
輸入 bigquery-public-data 並點選「星號」圖示。
BigQuery 控制台的「Explorer」窗格中會顯示兩個專案,其中一個的名稱是實驗室專案 ID,另一個是 bigquery-public-data。
-
在 BigQuery 控制台的「Explorer」窗格中,依序展開 bigquery-public-data 資料集並點選「資料集」。在「輸入屬性名稱或值」欄位中,搜尋 noaa_gsod 並選取 gsod2014 資料表。
-
在「Table (gsod2014)」視窗中,點選「預覽」分頁標籤。

-
觀察資料欄和部分資料值。
-
點選「查詢」,然後替換下列查詢:
SELECT
-- Create a timestamp from the date components.
stn,
TIMESTAMP(CONCAT(year,"-",mo,"-",da)) AS timestamp,
-- Replace numerical null values with actual null
AVG(IF (temp=9999.9,
null,
temp)) AS temperature,
AVG(IF (wdsp="999.9",
null,
CAST(wdsp AS Float64))) AS wind_speed,
AVG(IF (prcp=99.99,
0,
prcp)) AS precipitation
FROM
`bigquery-public-data.noaa_gsod.gsod20*`
WHERE
CAST(YEAR AS INT64) > 2010
AND CAST(MO AS INT64) = 6
AND CAST(DA AS INT64) = 12
AND (stn="725030" OR -- La Guardia
stn="744860") -- JFK
GROUP BY
stn,
timestamp
ORDER BY
timestamp DESC,
stn ASC
- 點選「執行」並查看結果,試著判斷這個查詢的作用。
點選下方的「Check my progress」,確認您已完成本階段的操作。
探索天氣資料
工作 2:探索紐約市民投訴資料
-
在 BigQuery 控制台的「Explorer」窗格中,選取新加入的 bigquery-public-data 資料集,然後點選「資料集」。在「輸入屬性名稱或值」欄位中,搜尋 new_york_311 資料集,然後選取 311_service_requests 資料表。
-
接著,點選「預覽」分頁標籤。控制台應看起來如下所示:

-
觀察資料欄和部分資料值。
-
如果編輯器已關閉,請點選「+」(SQL 查詢) 圖示。
-
將下列內容複製到查詢編輯器:
SELECT
EXTRACT(YEAR
FROM
created_date) AS year,
complaint_type,
COUNT(1) AS num_complaints
FROM
`bigquery-public-data.new_york.311_service_requests`
GROUP BY
year,
complaint_type
ORDER BY
num_complaints DESC
-
點選「執行」。
-
查看結果,找出最常見的投訴內容。您會在本實驗室的後續部分,嘗試判斷這些投訴是否與天氣有關。
點選下方的「Check my progress」,確認您已完成本階段的操作。
探索紐約市民投訴資料
工作 3:儲存新的天氣資料表
-
在 BigQuery 控制台的「Explorer」窗格中,點選專案 ID旁的三點圖示,然後選取「建立資料集」。
-
在「建立資料集」對話方塊中,將「資料集 ID」設為 demos,其餘選項保留預設值。
-
點選「建立資料集」,現在專案中會有一個名為 demos 的資料集。
-
點選「+」 (SQL 查詢) 圖示,然後執行下列查詢:
SELECT
-- Create a timestamp from the date components.
timestamp(concat(year,"-",mo,"-",da)) as timestamp,
-- Replace numerical null values with actual nulls
AVG(IF (temp=9999.9, null, temp)) AS temperature,
AVG(IF (visib=999.9, null, visib)) AS visibility,
AVG(IF (wdsp="999.9", null, CAST(wdsp AS Float64))) AS wind_speed,
AVG(IF (gust=999.9, null, gust)) AS wind_gust,
AVG(IF (prcp=99.99, null, prcp)) AS precipitation,
AVG(IF (sndp=999.9, null, sndp)) AS snow_depth
FROM
`bigquery-public-data.noaa_gsod.gsod20*`
WHERE
CAST(YEAR AS INT64) > 2008
AND (stn="725030" OR -- La Guardia
stn="744860") -- JFK
GROUP BY timestamp
-
在查詢編輯器部分,依序點選「編輯」>「查詢設定」。
-
在「查詢設定」對話方塊中,設定下列欄位,所有其他項目則保留預設值。
目的地:選取「為查詢結果設定目標資料表」。
資料集:輸入 .demos 並選取資料集。
資料表 ID:輸入 nyc_weather
結果大小:勾選「允許大型結果 (無大小上限)」。
-
點選「儲存」。
-
點選「執行」。
結果現已儲存至您建立的資料集 (demos)。
-
返回「編輯」>「查詢設定」,在「目的地」選項中選取「將查詢結果儲存至暫存資料表」。這樣一來,未來查詢時就不會再將 demos 資料集做為目的地。
-
點選「儲存」,關閉查詢設定頁面。
點選下方的「Check my progress」,確認您已完成本階段的操作。
儲存新的天氣資料表
工作 4:找出資料集之間的關聯性
CORR 函式可衡量兩個變數的關聯性,數值越高,代表兩者關係越密切且穩定。當一個變數的值增加時,另一個變數的值也會以可預測的方式增加 (正相關) 或減少 (負相關)。一般來說,絕對值大於或等於 0.7 的相關性即為強相關,這表示某變數的變化,至少能解釋另一個變數 49% 的變化。
接著,您將使用 CORR 函式,比較收到的投訴數量和每日氣溫。
- 建立 SQL 查詢,點選「+」,然後執行下列查詢:
SELECT
descriptor,
sum(complaint_count) as total_complaint_count,
count(temperature) as data_count,
ROUND(corr(temperature, avg_count),3) AS corr_count,
ROUND(corr(temperature, avg_pct_count),3) AS corr_pct
From (
SELECT
avg(pct_count) as avg_pct_count,
avg(day_count) as avg_count,
sum(day_count) as complaint_count,
descriptor,
temperature
FROM (
SELECT
DATE(timestamp) AS date,
temperature
FROM
demos.nyc_weather) a
JOIN (
SELECT x.date, descriptor, day_count, day_count / all_calls_count as pct_count
FROM
(SELECT
DATE(created_date) AS date,
concat(complaint_type, ": ", descriptor) as descriptor,
COUNT(*) AS day_count
FROM
`bigquery-public-data.new_york.311_service_requests`
GROUP BY
date,
descriptor)x
JOIN (
SELECT
DATE(timestamp) AS date,
COUNT(*) AS all_calls_count
FROM `demos.nyc_weather`
GROUP BY date
)y
ON x.date=y.date
)b
ON
a.date = b.date
GROUP BY
descriptor,
temperature
)
GROUP BY descriptor
HAVING
total_complaint_count > 5000 AND
ABS(corr_pct) > 0.5 AND
data_count > 5
ORDER BY
ABS(corr_pct) DESC
結果顯示,供暖相關投訴與氣溫呈負相關,即天氣寒冷時,收到的供暖投訴電話較多;枯樹相關投訴與氣溫呈正相關,天氣炎熱時,收到的枯樹投訴電話較多。
接著,您將使用 CORR 函式比較投訴數量和風速。
- 點選「+」 (SQL 查詢) 圖示,然後執行下列查詢:
SELECT
descriptor,
sum(complaint_count) as total_complaint_count,
count(wind_speed) as data_count,
ROUND(corr(wind_speed, avg_count),3) AS corr_count,
ROUND(corr(wind_speed, avg_pct_count),3) AS corr_pct
From (
SELECT
avg(pct_count) as avg_pct_count,
avg(day_count) as avg_count,
sum(day_count) as complaint_count,
descriptor,
wind_speed
FROM (
SELECT
DATE(timestamp) AS date,
wind_speed
FROM
demos.nyc_weather) a
JOIN (
SELECT x.date, descriptor, day_count, day_count / all_calls_count as pct_count
FROM
(SELECT
DATE(created_date) AS date,
concat(complaint_type, ": ", descriptor) as descriptor,
COUNT(*) AS day_count
FROM
`bigquery-public-data.new_york.311_service_requests`
GROUP BY
date,
descriptor)x
JOIN (
SELECT
DATE(timestamp) AS date,
COUNT(*) AS all_calls_count
FROM `demos.nyc_weather`
GROUP BY date
)y
ON x.date=y.date
)b
ON
a.date = b.date
GROUP BY
descriptor,
wind_speed
)
GROUP BY descriptor
HAVING
total_complaint_count > 5000 AND
ABS(corr_pct) > 0.5 AND
data_count > 5
ORDER BY
ABS(corr_pct) DESC
- 您會發現與噪音相關的投訴,其 CORR 資料欄的值皆為負數。不妨想想看為何在有風的日子,噪音投訴會減少?係數是否具有足夠的統計意義?
點選下方的「Check my progress」,確認您已完成本階段的操作。
找出天氣與投訴之間的關聯性
恭喜!
在本實驗室中,您直接查詢資料,不需先行設定任何叢集、建立索引等。您還合併兩個資料集並建立結果的關聯性,獲得一些有趣的洞察資訊。
後續步驟/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2026 年 6 月 12 日
實驗室上次測試日期:2026 年 6 月 12 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。