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