1. 簡介
BigQuery 是具備高擴充性與成本效益的無伺服器資料倉儲系統。只要將資料移至 BigQuery,其他繁雜的工作就交給我們,您就可以專注經營業務和業務。您可以根據業務需求控管對專案與資料的存取權,例如授予他人檢視或查詢資料的權限。
在本研究室中,您將探索 BigQuery 的分析可能性。您將瞭解如何從 Google Cloud Storage 值區匯入資料集,以及如何使用零售銀行資料集來掌握 BigQuery UI。此外,本研究室將說明如何在 BigQuery 中發掘重要功能,更輕鬆地進行日常分析,例如將查詢結果匯出成試算表、查看和執行查詢記錄中的查詢、查看查詢效能,以及建立資料表檢視畫面供其他團隊和部門使用。
學習目標
在本研究室中,您將瞭解如何執行下列工作:
- 將新資料載入 BigQuery
- 熟悉 BigQuery UI
- 在 BigQuery 中執行查詢
- 查看查詢效能
- 在 BigQuery 中建立檢視表
- 安全地與他人共用資料集
2. 簡介:瞭解 BigQuery UI
本節將說明如何瀏覽 BigQuery UI、查看可用資料集,以及執行簡單的查詢。
載入 BQ UI
- 輸入「BigQuery」位於 Google Cloud Platform 控制台的頂端
- 從選項清單中選取 BigQuery。請務必選取帶有 BigQuery 標誌 (放大鏡) 的選項。
檢視資料集和執行查詢
- 在「資源」部分的左側窗格中,按一下您的 BigQuery 專案。
- 按一下
bq_demo
,即可查看該資料集內的資料表 - 在搜尋框中輸入「card」即可查看包含「資訊卡」的資料表和資料集清單。
- 選取「card_transactions」表格
- 按一下「
card_transactions
」窗格下方的「詳細資料」分頁標籤,即可查看這個資料表的中繼資料。 - 點選「預覽」分頁標籤,查看表格預覽畫面
[競爭談話點]: 與 Google Data Catalog 整合,代表 BigQuery 中繼資料可與其他資料來源 (例如資料湖泊或作業資料來源) 一併管理。此範例說明瞭 Google Cloud 不只是關聯資料倉儲,而是整個數據分析資料平台。
- 按一下放大鏡圖示,查詢「card_transactions」表格。自動產生的文字會填入 BigQuery 查詢編輯器。
- 輸入以下代碼,向我們顯示 Card_Transactions 資料表中不同的商家
SELECT distinct (merchant) FROM bq_demo.card_transactions LIMIT 1000
- 按一下 [執行] 按鈕執行查詢。
3. 建立資料集及共用檢視表
共用資料及管理方式至關重要,在 BQ UI 中能以直覺化的方式完成這項作業。在本節中,您將瞭解如何建立新的資料集、為資料集填入資料,以及共用該資料集。
查看查詢記錄
- 按一下 [查詢記錄]透過 GCP 控制台的左側窗格
- 在「Query History」(查詢記錄) 窗格中按一下「Refresh」(重新整理)
- 按一下查詢最右側的下載圖片/箭頭即可查看查詢結果。
建立新的資料集
- 在 BigQuery UI 的資源窗格中選取 [您的專案名稱],
- 選取「建立新資料集」透過專案資訊窗格
- 資料集 ID:
bq_demo_shared
- 其他欄位則保留預設值
- 按一下 [建立資料集]
建立檢視表
[競爭談話要點]: BigQuery 與 ANSI SQL 完全相容,支援簡單和複雜的多資料表彙整,以及豐富的分析函式。我們會持續強化支援傳統資料倉儲中常見的 SQL 資料類型和函式,簡化遷移程序。
- 選取「撰寫新查詢」位於「Query Editor」窗格頂端。
- 在查詢編輯器中插入下列程式碼
WITH revenue_by_month AS (
SELECT
card.type AS card_type,
FORMAT_DATE('%Y-%m', trans_date) as revenue_date,
SUM(amount) as revenue
FROM bq_demo.card_transactions
JOIN bq_demo.card ON card_transactions.cc_number = card.card_number
WHERE trans_date DATE_ADD(CURRENT_DATE, INTERVAL -1 YEAR)
GROUP BY card_type, revenue_date
)
SELECT
card_type,
revenue_date,
revenue as monthly_rev,
revenue - LAG(revenue) OVER (ORDER BY card_type, revenue_date ASC) as rev_change
FROM revenue_by_month
ORDER BY card_type, revenue_date ASC;
- 按一下 [儲存檢視畫面]
- 選取目前的專案名稱
- 選取新建立的資料集:
bq_demo_shared
- 如為資料表名稱:
rev_change_by_card_type
- 按一下「儲存」。
共用檢視表和資料集
- 選取「bq_demo_shared」資料集。
- 按一下 [分享資料集]在資料集資訊窗格中
- 請輸入電子郵件地址
- 選取「BigQuery 資料檢視者」選取「角色」下拉式選單
- 請按一下 [新增]。
- 按一下「完成」
探索 Google 試算表中的資料
[競爭談話要點]: 與競爭對手相比,BigQuery 的另一項優勢是 BI Engine。BI Engine 可用於記憶體內快取引擎,讓 BI 類型摘要查詢在一秒內傳回。目前 Google 數據分析支援這項功能,但不久後就會加快 BigQuery 所有查詢的速度。
例如:
Snowflake 仰賴第三方商業智慧 (BI) 工具處理資訊主頁和資料視覺化,同時也是 GCP 提供的一系列整合式商業智慧工具,包括連結試算表、數據分析和 Looker。
- 選取「rev_change_by_card_type」查看報表
- 按一下放大鏡即可查詢檢視表
- Type:
SELECT *
FROM bq_demo_shared.rev_change_by_card_type
- 按一下「執行」
- 按一下「匯出」結果窗格中的圖示
- 選取「透過 Google 試算表探索資料」
- 按一下 [開始分析]
- 選取「資料透視表」
- 選取「新工作表」
- 按一下 [建立]
- 新增「revenue_date」「資料透視表編輯器」(位於「試算表」視窗右側) 的「列」部分
- 新增「card_type」資料透視表編輯器的「欄」部分
- 新增「monthly_rev」資料透視表編輯器的「欄」部分
- 按一下 [套用]
- 前往 Google 試算表使用者介面的頂端專區,然後選取「插入圖表」
4. 設定:資料整合
本節將說明如何建立新的資料表,以及如何使用 Google Cloud 的其中一個公開資料集執行彙整作業。
[Competitive Talking Point]:
BigQuery 多年來一直支援共用資料集,任何專案中的客戶都可以查詢公開資料集,以及其他共用專案的資料集。
BigQuery 可以透過使用外部資料表,支援 GCS 中的資料湖泊。除了大量載入之外,BigQuery 也能以每秒高達數百 MB 的速率,將資料串流至資料庫。Snowflake 不支援串流資料。
將資料匯入新資料表
- 在資源窗格中,選取 bq_demo 資料集
- 在資料集資訊窗格中,選取 [Create Table] (建立資料表)
- 選取 Google Cloud Storage 做為來源
- 在「檔案路徑」文字方塊中:
gs://retail-banking-looker/district
- 選取 CSV 做為檔案格式
- 輸入「區」代表資料表名稱
- 勾選自動偵測結構定義的核取方塊
- 按一下「建立資料表」
查詢公開資料集
- 在查詢編輯器中輸入下列查詢:
SELECT
CAST(geo_id as STRING) AS zip_code,
total_pop,
median_age,
households,
income_per_capita,
housing_units,
vacant_housing_units_for_sale,
ROUND(SAFE_DIVIDE(employed_pop, pop_16_over),4) AS rate_employment,
ROUND(SAFE_DIVIDE(bachelors_degree_or_higher_25_64, pop_25_64),4) AS rate_bachelors_degree_or_higher_25_64
FROM
`bigquery-public-data.census_bureau_acs.zip_codes_2017_5yr`;
- 按一下「執行」
- 查看結果
- 接著,我們會將這項公開資料與另一項查詢結合。在查詢編輯器中輸入下列 SQL 程式碼:
WITH customer_counts AS (
select regexp_extract(address, "[0-9][0-9][0-9][0-9][0-9]") as zip_code,
count(*) as num_clients
FROM bq_demo.client
GROUP BY zip_code
)
SELECT
CAST(geo_id as STRING) AS zip_code,
total_pop,
median_age,
households,
income_per_capita,
ROUND(SAFE_DIVIDE(employed_pop, pop_16_over),4) AS rate_employment,
num_clients
FROM
`bigquery-public-data.census_bureau_acs.zip_codes_2017_5yr`
JOIN customer_counts on zip_code = geo_id
ORDER BY num_clients DESC
- 按一下「執行」
- 查看結果
5. 容量管理
使用運算單元和預留項目
BQ 提供多種計費模式,可滿足您的需求。大部分的大型客戶主要是採用固定費率,以享有預留容量的可預測價格。針對爆發速度超過基準容量的爆發模式,BigQuery 提供彈性運算單元,可即時擴增至額外容量,並在不影響執行查詢的情況下自動縮減資源。BQ 也是一種位元組掃描模型,可讓您僅為執行的查詢付費。
[競爭談話要點: 有些競爭對手只使用固定容量模型,客戶必須為機構的每項工作負載分配虛擬倉儲。除了以費用為低的個別查詢模式來輕鬆開始使用 BigQuery 之外,我們也支援固定費率定價模式,讓多個工作負載可共用閒置容量。]
- 前往「預訂」分頁。
- 按一下「購買運算單元」
- 選取「Flex」。
- 請選取 500 個運算單元。
- 確認購買。
- 按一下「查看運算單元使用承諾」。
- 按一下 [建立預留項目]
- 使用者「示範」視為預留項目名稱
- 將地區設為「美國」
- 針對運算單元,輸入 500 (所有可用)
- 按一下「指派項目」
- 為機構專案選擇目前的專案
- 選取「示範」預留項目 ID
- 按一下「建立」。