搜尋
tee / insights
LEARNING / SQLHOME
DATA → QUERY → RESULT

SQL語法地圖

依目的查找SQL,從查詢與彙總到COPY INTO、更新、物件定義及權限管理,比較Snowflake與BigQuery的語法、前提及變化。

SQL方言

收錄範圍與官方參考

收錄23組查詢比較與22個操作主題。「代表範例」不代表涵蓋所有選項或產品指令。

操作語法確認:2026-10-06

收錄範圍與官方參考
領域語法與功能收錄狀態官方資料
查詢與分析SELECT / JOIN / GROUP BY / WINDOW代表範例Snowflake · BigQuery
載入與匯出COPY INTO / LOAD DATA / EXPORT DATA代表範例Snowflake · BigQuery
資料操作INSERT / UPDATE / DELETE / MERGE / TRUNCATE代表範例Snowflake · BigQuery
物件定義TABLE / VIEW / SCHEMA / FUNCTION / PROCEDURE代表範例Snowflake · BigQuery
交易、權限與指令碼TRANSACTION / GRANT / REVOKE / DECLARE / INFORMATION_SCHEMA代表範例Snowflake · BigQuery
自動化與管線PIPE / STREAM / TASK / DYNAMIC TABLE / scheduled queries僅提供官方參考Snowflake · BigQuery
外部及特殊資料表EXTERNAL TABLE / ICEBERG / SNAPSHOT / CLONE / MATERIALIZED VIEW僅提供官方參考Snowflake · BigQuery
帳戶與運算資源ACCOUNT / USER / ROLE / WAREHOUSE / IAM / reservations僅提供官方參考Snowflake · BigQuery
安全性與共用POLICY / MASKING / ROW ACCESS / sharing / connections僅提供官方參考Snowflake · BigQuery
機器學習與產品擴充ML / Cortex / search indexes / vector indexes / applications僅提供官方參考Snowflake · BigQuery

SQL全貌

涵蓋查詢與主要操作陳述式。收錄表區分範例與僅提供官方參考的範圍。

建立輸入

指定來源

FROM指定要處理的資料表或結果。

命名 / 巢狀查詢

WITH與FROM中的子查詢可表達相同的中間結果。

橫向連接:保留哪些列?

符合 / 左側全部 / 兩側全部 / 所有組合。

連接條件 / 連接後篩選

LEFT JOIN的條件位置會改變保留的列。

巢狀值展開成列

將複合值的元素展開,增加列數。

篩選列

何時篩選?

WHERE在彙總前、HAVING在彙總後、QUALIFY在window後。

彙總列

N列 → 1值

依要計數的對象與摘要的作用選擇。

在彙總內排序/計算百分位數

WITHIN GROUP決定彙總值的順序;BigQuery在彙總函數括號內使用ORDER BY。

選擇要彙總的輸入值

在彙總函數內控制重複值、NULL、最大值所在列與輸入數量。

彙總單位 / 去重

GROUP BY建立彙總單位;DISTINCT移除所選輸出列的重複。

保留列數分析

合併列 / 附加到各列

Aggregate:N列→每組1列。Window:N列→N列。

排名:如何處理同分?

流水號 / 同名次後跳號 / 同名次後不跳號。

略過NULL/排列NULL所在列

IGNORE/RESPECT NULLS控制函數處理的值;NULLS FIRST/LAST控制排序位置。

進階:列位置 / 值範圍

ROWS依列位置;RANGE依排序值定義範圍。

建立值

比較 / 組合條件

比較回傳TRUE、FALSE或NULL,再用邏輯運算組合。

判斷缺值 / 補值

與NULL的等號比較為未知,應用IS NULL判斷。

通用分支 / 二選一簡寫

CASE支援多條件,IF / IFF簡寫兩種結果。

一般轉型 / 安全轉型

無法轉換的值:CAST報錯,安全版回傳NULL。

去除符號 / 四捨五入

ABS取絕對值,ROUND取指定小數位。

轉換 / 擷取 / 串接

對同一字串套用四種操作。

現在 / 加算 / 差 / 截斷

作用相同,引數順序與單位語法不同。

巢狀值 / SQL字串

即使都顯示7,回傳型態仍不同。

重組集合

縱向組合:如何處理重複?

相同A、B:保留重複 / 去重 / 共有 / 僅左側。

進階:依欄名對應

位置不同仍依相同欄名對應。

整理結果

整理最終結果

去重 → 排序 → 跳過開頭 → 取得上限筆數。

匯入與匯出檔案

將檔案匯入資料表COPY INTO <table>將檔案資料列載入資料表。請檢查載入結果與目標資料。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

準備空的orders表及含id,amount標頭的CSV。上傳至Snowflake內部暫存區csv_stage,或符合BigQuery位置條件的Cloud Storage,並替換YOUR_BUCKET。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
COPY INTO tbi_lab.orders
FROM @tbi_lab.csv_stage/orders.csv
FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1)
ON_ERROR = 'ABORT_STATEMENT';

預期變化

將檔案資料列載入資料表。請檢查載入結果與目標資料。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

ON_ERROR控制錯誤處理;ABORT_STATEMENT中止陳述式。載入紀錄可能使重跑時略過已載入檔案。FORCE=TRUE可能造成重複資料。

官方資料 · Snowflake 1

# load-files
將資料表匯出為檔案COPY INTO <location>將查詢結果寫入CSV檔案,並在目的地確認。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

準備含兩列的orders表與可寫入的位置。Snowflake使用csv_stage;BigQuery使用替換YOUR_BUCKET後的Cloud Storage。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
COPY INTO @tbi_lab.csv_stage/export_run/
FROM (SELECT id, amount FROM tbi_lab.orders)
FILE_FORMAT = (TYPE = CSV)
HEADER = TRUE;

預期變化

將查詢結果寫入CSV檔案,並在目的地確認。

確認方法

確認方法
LIST @tbi_lab.csv_stage/export_run/;

每次使用新的目的地。輸出可能有多個檔案,請檢查數量及內容。

官方資料 · Snowflake 1

# unload-files
準備暫存區與檔案格式CREATE STAGE · CREATE FILE FORMAT · PUT · LIST在Snowflake建立空的內部暫存區及CSV格式定義。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

準備tbi_lab及所需的建立、讀取權限。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE FILE FORMAT tbi_lab.csv_format
  TYPE = CSV SKIP_HEADER = 1;
CREATE STAGE tbi_lab.csv_stage
  FILE_FORMAT = (FORMAT_NAME = 'tbi_lab.csv_format');

預期變化

在Snowflake建立空的內部暫存區及CSV格式定義。

確認方法

確認方法
LIST @tbi_lab.csv_stage;

建立暫存區不會自動上傳檔案。請透過Snowsight或支援PUT的用戶端上傳orders.csv。PUT用於內部暫存區。

官方資料 · Snowflake 1 · Snowflake 2 · Snowflake 3

# stage-format
載入前驗證檔案VALIDATION_MODE · RETURN_ERRORS · ON_ERROR · COPY INTOSnowflake會傳回檔案錯誤,不會新增資料列。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

準備空的orders表及含id,amount標頭的CSV。上傳至Snowflake內部暫存區csv_stage,或符合BigQuery位置條件的Cloud Storage,並替換YOUR_BUCKET。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
COPY INTO tbi_lab.orders
FROM @tbi_lab.csv_stage/orders.csv
FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1)
VALIDATION_MODE = 'RETURN_ERRORS';

預期變化

Snowflake會傳回檔案錯誤,不會新增資料列。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

VALIDATION_MODE只驗證、不載入,不能與轉換SELECT合用。請修正錯誤後再執行一般COPY。

官方資料 · Snowflake 1

# validate-load

修改已儲存的資料列

新增資料列INSERT INTO · INSERT SELECT新增id=3、amount=300的資料列。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
INSERT INTO tbi_lab.orders (id, amount)
VALUES (3, 300);

預期變化

新增id=3、amount=300的資料列。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

官方資料 · Snowflake 1

# insert-rows
更新符合條件的資料列UPDATE · SET · WHERE將id=1的amount改成150。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
UPDATE tbi_lab.orders SET amount = 150 WHERE id = 1;

預期變化

將id=1的amount改成150。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

先用相同WHERE的SELECT確認目標列。BigQuery的UPDATE與DELETE必須有WHERE。

官方資料 · Snowflake 1

# update-rows
刪除符合條件的資料列DELETE FROM · WHERE刪除id=2的資料列。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
DELETE FROM tbi_lab.orders WHERE id = 2;

預期變化

刪除id=2的資料列。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

先用相同WHERE的SELECT確認目標列。BigQuery的UPDATE與DELETE必須有WHERE。

官方資料 · Snowflake 1

# delete-rows
更新符合項目並新增資料列MERGE INTO · WHEN MATCHED · WHEN NOT MATCHED將id=1更新為150,並新增id=3、amount=300。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
MERGE INTO tbi_lab.orders AS t
USING (SELECT 1 AS id, 150 AS amount
       UNION ALL SELECT 3, 300) AS s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET amount = s.amount
WHEN NOT MATCHED THEN INSERT (id, amount)
  VALUES (s.id, s.amount);

預期變化

將id=1更新為150,並新增id=3、amount=300。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

請避免多個來源列符合一個更新目標鍵值。重複符合的處理依產品及操作而異。

官方資料 · Snowflake 1

# merge-rows
刪除所有資料列並保留結構TRUNCATE TABLE資料列數變成0,欄位定義保留。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
TRUNCATE TABLE tbi_lab.orders;

預期變化

資料列數變成0,欄位定義保留。

確認方法

確認方法
SELECT COUNT(*) AS rows_left FROM tbi_lab.orders;

對象是所有資料列,不能使用WHERE篩選。

官方資料 · Snowflake 1

# truncate-table

定義資料表、檢視表與常式

指定欄位型別建立資料表CREATE TABLE · TEMPORARY TABLE建立含id與amount兩欄的空表。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

先準備tbi_lab,並確認要建立的物件名稱尚未使用。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE TABLE tbi_lab.orders (id INTEGER, amount NUMBER(12,2));

預期變化

建立含id與amount兩欄的空表。

確認方法

確認方法
DESCRIBE TABLE tbi_lab.orders;

這些範例不使用會取代現有資料的OR REPLACE。

官方資料 · Snowflake 1

# create-table
將查詢結果儲存為新表CREATE TABLE AS SELECT · CTAS將amount大於或等於200的資料列存入新表。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

先準備tbi_lab,並確認要建立的物件名稱尚未使用。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE TABLE tbi_lab.large_orders AS
SELECT id, amount FROM tbi_lab.orders WHERE amount >= 200;

預期變化

將amount大於或等於200的資料列存入新表。

確認方法

確認方法
SELECT * FROM tbi_lab.large_orders ORDER BY id;

這些範例不使用會取代現有資料的OR REPLACE。

官方資料 · Snowflake 1

# create-as-select
將查詢儲存為檢視表CREATE VIEW · ALTER VIEW · DROP VIEW儲存查詢定義。一般檢視表不保留結果資料列的複本。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

先準備tbi_lab,並確認要建立的物件名稱尚未使用。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE VIEW tbi_lab.large_orders_view AS
SELECT id, amount FROM tbi_lab.orders WHERE amount >= 200;

預期變化

儲存查詢定義。一般檢視表不保留結果資料列的複本。

確認方法

確認方法
SELECT * FROM tbi_lab.large_orders_view ORDER BY id;

ALTER VIEW與DROP VIEW修改或刪除檢視表定義。請確認來源資料表的相依關係。

官方資料 · Snowflake 1

# create-view
在資料表新增欄位ALTER TABLE · ADD COLUMN · DROP COLUMN · RENAME新增note欄;現有資料列的值為NULL。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
ALTER TABLE tbi_lab.orders ADD COLUMN note VARCHAR;

預期變化

新增note欄;現有資料列的值為NULL。

確認方法

確認方法
DESCRIBE TABLE tbi_lab.orders;

此例新增欄位。刪除欄位或變更型別需要另外檢查資料與相依關係。

官方資料 · Snowflake 1

# alter-table
刪除資料表DROP TABLE · IF EXISTS刪除資料表定義及其資料。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
DROP TABLE tbi_lab.orders;

預期變化

刪除資料表定義及其資料。

確認方法

確認方法
SHOW TABLES LIKE 'ORDERS' IN SCHEMA tbi_lab;

能否還原取決於產品保留設定等條件。不要假設可還原。

官方資料 · Snowflake 1

# drop-table
建立結構描述或資料集CREATE SCHEMA · USE DATABASE · USE SCHEMA建立用來放置物件的tbi_lab。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE SCHEMA tbi_lab;
USE SCHEMA tbi_lab;

預期變化

建立用來放置物件的tbi_lab。

確認方法

確認方法
SELECT CURRENT_DATABASE(), CURRENT_SCHEMA();

在目前資料庫建立結構描述。USE SCHEMA切換預設名稱空間。

官方資料 · Snowflake 1 · Snowflake 2

# namespace
建立SQL函式CREATE FUNCTION · UDF建立將輸入加1的函式。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

先準備tbi_lab,並確認要建立的物件名稱尚未使用。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE FUNCTION tbi_lab.add_one(x INTEGER)
RETURNS INTEGER LANGUAGE SQL
AS $$ x + 1 $$;

預期變化

建立將輸入加1的函式。

確認方法

確認方法
SELECT tbi_lab.add_one(2) AS result;

官方資料 · Snowflake 1

# user-function
儲存預存程序CREATE PROCEDURE · CALL建立呼叫時傳回3的程序。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

先準備tbi_lab,並確認要建立的物件名稱尚未使用。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
CREATE PROCEDURE tbi_lab.answer()
RETURNS INTEGER LANGUAGE SQL
AS $$
BEGIN
  RETURN 3;
END;
$$;

預期變化

建立呼叫時傳回3的程序。

確認方法

確認方法
CALL tbi_lab.answer();

官方資料 · Snowflake 1

# procedure

管理執行、權限與中繼資料

提交或復原變更BEGIN TRANSACTION · COMMIT · ROLLBACK此例復原更新,因此id=1的amount仍為100。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

從tbi_lab.orders(id, amount)含有(1,100)、(2,200)開始。每個範例前請還原初始狀態,不要依序執行全部範例。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
BEGIN TRANSACTION;
UPDATE tbi_lab.orders SET amount = 150 WHERE id = 1;
ROLLBACK;

預期變化

此例復原更新,因此id=1的amount仍為100。

確認方法

確認方法
SELECT id, amount FROM tbi_lab.orders ORDER BY id;

COMMIT提交,ROLLBACK復原。Snowflake的DDL會隱含提交進行中的交易,因此不要在此例加入DDL。

官方資料 · Snowflake 1

# transaction
授予讀取權限GRANT · TO ROLE授予指定對象讀取資料表的權限。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

需要orders表及管理授權的權限。請先準備Snowflake的tbi_reader角色,或確認BigQuery的收件群組。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
GRANT SELECT ON TABLE tbi_lab.orders TO ROLE tbi_reader;

預期變化

授予指定對象讀取資料表的權限。

確認方法

確認方法
SHOW GRANTS ON TABLE tbi_lab.orders;

除了資料表SELECT,也要確認資料庫、結構描述的USAGE及warehouse權限。

官方資料 · Snowflake 1

# permissions-grant
撤銷直接授予的權限REVOKE · FROM ROLE撤銷指定的直接授權;其他途徑的權限可能仍存在。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

需要orders表及管理授權的權限。請先準備Snowflake的tbi_reader角色,或確認BigQuery的收件群組。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
REVOKE SELECT ON TABLE tbi_lab.orders FROM ROLE tbi_reader;

預期變化

撤銷指定的直接授權;其他途徑的權限可能仍存在。

確認方法

確認方法
SHOW GRANTS ON TABLE tbi_lab.orders;

此REVOKE不會移除其他角色或上層資源繼承的存取權。請檢查有效權限。

官方資料 · Snowflake 1

# permissions-revoke
查看資料表與欄位定義SHOW TABLES · DESCRIBE TABLE · INFORMATION_SCHEMA傳回可存取的資料表與欄位中繼資料。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

準備tbi_lab及所需的建立、讀取權限。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
SHOW TABLES IN SCHEMA tbi_lab;

預期變化

傳回可存取的資料表與欄位中繼資料。

確認方法

確認方法
DESCRIBE TABLE tbi_lab.orders;

官方資料 · Snowflake 1 · Snowflake 2

# inspect-objects
使用變數與多個陳述式DECLARE · BEGIN · END · EXECUTE IMMEDIATE將變數從2改為3,並傳回3。

Snowflake · 這是供所選產品執行的SQL範例,本頁不會執行。已對照官方文件,尚未在雲端帳戶實際執行。

執行前提

假設Snowflake已選定資料庫,BigQuery已選定專案。tbi_lab是練習用的結構描述或資料集。

請在有權限的練習環境中使用,確認名稱、儲存位置與授權對象。雲端執行及儲存可能產生費用。

獨立範例
EXECUTE IMMEDIATE $$
DECLARE n INTEGER DEFAULT 2;
BEGIN
  RETURN n + 1;
END;
$$;

預期變化

將變數從2改為3,並傳回3。

確認方法

將預期變化與環境中的結果、權限設定或目的地內容對照。

BEGIN…END是程序區塊,與BEGIN TRANSACTION不同。

官方資料 · Snowflake 1 · Snowflake 2

# script

動手確認JOIN為何增加資料列

同一位顧客有3筆訂單時,結合結果就會出現該顧客3次。改變訂單數與SQL,觀察配對的資料列。

查看輸入資料

可執行一個以SELECT或WITH開頭的唯讀陳述式。資料表為customers和orders。最多顯示200列。

選擇範例或編輯SQL,再按執行。

用自然語言讀懂這段SQL

首先,FROM讀取顧客資料表customers,AS c則讓這個查詢以c作為customers的別名。

接著,INNER JOIN結合訂單資料表orders。AS o將orders稱為o,ON c.id = o.customer_id只保留顧客編號c.id與訂單的顧客編號o.customer_id相等的配對。同一顧客有多筆訂單時,就會產生多列。

SELECT取出顧客編號c.id、姓名c.name及訂單編號o.id。AS order_id將o.id的輸出欄命名為order_id。

最後,ORDER BY c.id, o.id先依顧客編號由小到大排列,再將同一顧客的訂單編號由小到大排列。

c.id中的點號「.」連接資料表別名與欄名,逗號「,」分隔欄位或運算式,分號「;」結束SQL陳述式。

確認理解
LEFT JOIN後,哪個運算式能將Cara的訂單數計為0?

此執行區使用SQLite,與上方Snowflake / BigQuery切換獨立。使用虛構資料,在瀏覽器內執行SQL。輸入不會儲存或傳送。首次執行時會從外部CDN載入引擎。

比較JOIN種類 · SQLite官方SELECT與JOIN說明