BigQuery 中的 SQL 簡介
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
本文將概略介紹 BigQuery 支援的陳述式和 SQL 方言。
GoogleSQL 是符合 ANSI 標準的 結構化查詢語言 (SQL),包含下列支援的陳述式類型:
- 查詢陳述式 (也稱為資料查詢語言 (DQL) 陳述式) 是分析 BigQuery 中資料的主要方法。掃描一或多個資料表或運算式,然後傳回運算的結果資料列。查詢陳述式可以包含管道語法。
- 程序語言陳述式是 GoogleSQL 的程序擴充功能,可讓您在單一要求中執行多個 SQL 陳述式。程序陳述式可使用變數和控管流程陳述式,並可能產生副作用。
資料定義語言 (DDL) 陳述式可讓您建立及修改下列物件:
- 資料集
- 資料表,包括結構定義和資料欄類型
- 資料表本機副本和快照
- 瀏覽次數
- 函式
- 索引
- 容量承諾、保留項目和指派作業
- 資料列層級存取權政策
資料操縱語言 (DML) 陳述式可讓您在 BigQuery 資料表中更新、插入及刪除資料。
資料控管語言 (DCL) 陳述式可讓您控管 BigQuery 系統資源,例如存取權和容量。
交易控制語言 (TCL) 陳述式可讓您管理資料修改交易。
BigQuery SQL 方言
BigQuery 支援 GoogleSQL 方言,但也支援舊版 SQL 方言。如果您是 BigQuery 新手,建議使用 GoogleSQL,因為這項服務支援最廣泛的功能。舉例來說,DDL 和 DML 陳述式等功能僅支援使用 GoogleSQL。舊版 SQL 是為了向後相容性而維護,如果客戶使用舊版 SQL,我們建議遷移。
變更為使用非預設方言
您用來查詢資料的介面會決定哪一種查詢方言為預設方言。如要切換至其他方言,請執行下列操作:
Google Cloud 主控台的預設方言為 GoogleSQL。如要將方言變更為舊版 SQL,請執行下列操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中,依序按一下「More」>「Query settings」按鈕。
在「Advanced options」部分的「SQL dialect」中,點選「Legacy」,然後點選「Save」。這會為此查詢設定舊版 SQL 選項。按一下 add_box SQL 查詢建立新查詢時,必須再次選取舊版 SQL 選項。
預設的 SQL 方言為 GoogleSQL。您可以將前置字串 #standardSQL
或 #legacySQL
加入查詢中,藉此設定 SQL 方言。這些查詢前置字串不區分大小寫,必須放在查詢之前,且必須以換行字元與查詢分隔。以下範例將方言設為舊版 SQL,並查詢出生率資料集:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
#legacySQL SELECT weight_pounds, state, year, gestation_weeks FROM [bigquery-public-data:samples.natality] ORDER BY weight_pounds DESC LIMIT 10;
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
指令列工具中的預設查詢方言為舊版 SQL。如要切換成 GoogleSQL 方言,請在指令列陳述式中加入 --use_legacy_sql=false
或 --nouse_legacy_sql
旗標。
改用 GoogleSQL 方言
如要在查詢工作中使用 GoogleSQL 語法,請將 use_legacy_sql
參數設為 false
。
bq query \
--use_legacy_sql=false \
'SELECT
word
FROM
`bigquery-public-data.samples.shakespeare`'
將 GoogleSQL 設為預設方言
如要將 GoogleSQL 設為指令列工具和互動殼層的預設方言,您可以編輯指令列工具的設定檔 .bigqueryrc
。
如要進一步瞭解 .bigqueryrc
,請參閱設定指令專屬旗標預設值的相關說明。
如要在 .bigqueryrc
中設定 --use_legacy_sql=false
,請執行下列操作:
- 在文字編輯器中開啟
.bigqueryrc
。根據預設,.bigqueryrc
應位於您的使用者目錄中,例如$HOME/.bigqueryrc
。 在檔案中加入以下文字。本範例會將查詢和
mk
指令 (用於建立檢視表) 的預設語法設為 GoogleSQL。如果您已為query
或mk
指令旗標設定了預設值,則不必重新加入[query]
或[mk]
。[query] --use_legacy_sql=false [mk] --use_legacy_sql=false
儲存並關閉檔案。
如果您使用的是互動殼層,則必須退出並重新啟動殼層,變更才會生效。
如要瞭解可用的指令列旗標,請參閱 bq 指令列工具參考資料。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 C# 設定說明進行操作。詳情請參閱 BigQuery C# API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
預設情況下,C# 程式庫會使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將 UseLegacySql
參數設為 true
。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
根據預設,Go 用戶端程式庫會使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將查詢設定中的 UseLegacySQL
屬性設為 true
。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
根據預設,Java 用戶端程式庫會使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將 useLegacySql
參數設為 true
。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 BigQuery Node.js API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js 用戶端程式庫預設使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將 useLegacySql
參數設為 true
。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 PHP 設定說明進行操作。詳情請參閱 BigQuery PHP API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
根據預設,PHP 用戶端程式庫會使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將 useLegacySql
參數設為 true
。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
根據預設,Python 用戶端程式庫會使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將 use_legacy_sql
參數設為 True
。
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Ruby 設定說明進行操作。詳情請參閱 BigQuery Ruby API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
根據預設,Ruby 用戶端程式庫會使用 GoogleSQL。切換至舊版 SQL 方言
如要在查詢工作中使用舊版 SQL 語法,請將 legacy_sql: true
選項傳遞至查詢。
後續步驟
- 如要瞭解如何在 BigQuery 中執行 SQL 查詢,請參閱「執行互動式與批次查詢工作」一文。
- 如要進一步瞭解一般查詢最佳化方式,請參閱最佳化查詢效能簡介。
- 如要瞭解用於查詢 BigQuery 資料的 GoogleSQL 語法,請參閱「查詢語法」。
- 如要進一步瞭解如何在查詢中使用管道符號語法,請參閱「管道符號語法」。