出所を決める
FROMは処理対象の表・結果を指定する。
検索・集計からCOPY INTO、データ更新、表の定義、権限管理まで、目的からSQLを探せます。SnowflakeとBigQueryの書き方・前提・状態変化を比較できます。
検索・分析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 |
COPY INTO <table> / LOAD DATA INTOCOPY INTO <location> / EXPORT DATACREATE STAGE / FROM FILESVALIDATION_MODE / LOAD DATAINSERT INTO / INSERT INTOUPDATE / UPDATEDELETE FROM / DELETE FROMMERGE INTO / MERGE INTOTRUNCATE TABLE / TRUNCATE TABLECREATE TABLE / CREATE TABLECREATE TABLE AS SELECT / CREATE TABLE AS SELECTCREATE VIEW / CREATE VIEWALTER TABLE / ALTER TABLEDROP TABLE / DROP TABLEBEGIN TRANSACTION / BEGIN TRANSACTIONGRANT / GRANTREVOKE / REVOKECREATE SCHEMA / CREATE SCHEMASHOW TABLES / INFORMATION_SCHEMADECLARE / DECLARECREATE FUNCTION / CREATE FUNCTIONCREATE PROCEDURE / CREATE PROCEDURE検索・分析と主要な操作コマンドを扱います。収録表で代表例と公式資料への参照範囲を確認できます。
FROMは処理対象の表・結果を指定する。
WITHとFROM内のsubqueryは、同じ中間結果を表現できる。
一致 / 左を全部 / 両方を全部 / 全組み合わせ。
LEFT JOINでは条件を置く場所で残る行が変わる。
複合値の要素を取り出し、行数を増やす。
WHERE=集計前、HAVING=集計後、QUALIFY=window後。
COUNTは何を数えるか、他の集約は何を求めるかで選ぶ。
WITHIN GROUPは集約する値の並び順を決める。BigQueryの集約では関数内にORDER BYを書く。
重複・NULL・最大値の行・入力件数は、集約関数の内側で制御する。
GROUP BYは集約単位を作り、DISTINCTは選んだ列全体の重複を消す。
Aggregate=N行→グループごとに1行。Window=N行→N行。
連番 / 同順位で次を飛ばす / 同順位で次を詰める。
同じ順序で前後の値を各行に付ける。
IGNORE・RESPECT NULLSは関数が見る値を変え、NULLS FIRST・LASTは並べる位置を変える。
ROWSは行位置、RANGEは並べ替え値で範囲を決める。
比較はTRUE / FALSE / NULLを返し、論理演算で組み合わせる。
NULLとの等号比較は不明になる。IS NULLで判定する。
CASEは複数条件、IF / IFFは二択を簡潔に書ける。
変換できない値:CASTはエラー、安全版はNULL。
ABSは絶対値、ROUNDは指定桁への丸め。
同じ文字列に4種類の操作を当てる。
日付の作用は共通。引数の順番と単位の置き方が違う。
見た目が7でも、返る型が違う。
同じA・Bで、重複を保持 / 除去 / 共通 / 左だけを比較する。
位置が違っても、同じ列名を対応させる。
重複を消す → 並べる → 先頭を飛ばす → 件数を取る。
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は文を中止します。COPYのロード履歴によって再実行時に既存ファイルが省略される場合があります。FORCE=TRUEは重複取り込みにつながり得ます。
公式資料 · Snowflake 1
# load-filesSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
2行入り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-filesSnowflake · 選択した製品の環境で実行する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-formatSnowflake · 選択した製品の環境で実行する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では使えません。返されたエラーを直してから通常のCOPYを実行します。
公式資料 · Snowflake 1
# validate-loadSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
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-rowsSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
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-rowsSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
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-rowsSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
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を300で追加します。
SELECT id, amount FROM tbi_lab.orders ORDER BY id;更新対象のキーに複数の入力行が一致しないよう、入力を確認します。複数一致時の扱いは製品・処理内容で異なります。
公式資料 · Snowflake 1
# merge-rowsSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
TRUNCATE TABLE tbi_lab.orders;表の行数が0になります。列の定義は残ります。
SELECT COUNT(*) AS rows_left FROM tbi_lab.orders;全行が対象です。行を選ぶWHEREは付けられません。
公式資料 · Snowflake 1
# truncate-tableSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_labがあり、作成するオブジェクト名が未使用であることを確認します。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
CREATE TABLE tbi_lab.orders (id INTEGER, amount NUMBER(12,2));idとamountの2列を持つ空の表ができます。
DESCRIBE TABLE tbi_lab.orders;既存データを置き換えるOR REPLACEはこの例では使いません。
公式資料 · Snowflake 1
# create-tableSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
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-selectSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
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-viewSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
ALTER TABLE tbi_lab.orders ADD COLUMN note VARCHAR;note列が追加されます。既存の行ではNULLになります。
DESCRIBE TABLE tbi_lab.orders;この例は列追加です。列削除や型変更は別の操作で、既存データ・依存先の確認が必要です。
公式資料 · Snowflake 1
# alter-tableSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
DROP TABLE tbi_lab.orders;表の定義とデータを削除します。
SHOW TABLES LIKE 'ORDERS' IN SCHEMA tbi_lab;復元できるかどうかは製品の保持設定等に依存します。復元を前提に実行しないでください。
公式資料 · Snowflake 1
# drop-tableSnowflake · 選択した製品の環境で実行する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
# namespaceSnowflake · 選択した製品の環境で実行する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-functionSnowflake · 選択した製品の環境で実行する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
# procedureSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_lab.orders(id, amount)に(1,100)、(2,200)の2行がある状態から始めます。各例を続けて実行せず、元の状態に戻して試してください。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
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
# transactionSnowflake · 選択した製品の環境で実行する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-grantSnowflake · 選択した製品の環境で実行する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-revokeSnowflake · 選択した製品の環境で実行するSQL例です。このページでは実行しません。公式仕様と照合済みですが、クラウドでの実行は未検証です。
Snowflakeは使用するデータベースを選択済み、BigQueryは使用するプロジェクトを選択済みとします。tbi_labは練習用のスキーマ/データセットです。
tbi_labと必要な作成・参照権限を用意します。
権限のある練習用環境で、表名・保存先・受け手を確認して使ってください。クラウドの実行・保存に料金がかかる場合があります。
SHOW TABLES IN SCHEMA tbi_lab;参照できる表・列の定義を返します。
DESCRIBE TABLE tbi_lab.orders;公式資料 · Snowflake 1 · Snowflake 2
# inspect-objectsSnowflake · 選択した製品の環境で実行する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同じ顧客に注文が3件あれば、その顧客は結合結果に3回現れます。注文数とSQLを変えて、対応する行を確かめましょう。
SELECTまたはWITHで始まる読み取り用のSQLを1文実行できます。表名はcustomersとordersです。最大200行を表示します。
例を選ぶかSQLを編集して、実行してください。
まず、FROMで顧客の表customersを読み込み、AS cで、このクエリ内ではcustomersをcと呼ぶことにします。
次に、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を取り出します。o.idにはAS order_idで出力列名order_idを付けます。
最後に、ORDER BY c.id, o.idで顧客番号の小さい順に並べ、同じ顧客の中では注文番号の小さい順に並べます。
c.idなどの「.」は表の別名と列名をつなぎ、「,」は列や式の区切り、「;」はSQL文の終わりを示します。
この実行欄はSQLiteです。上のSnowflake / BigQuery切替とは独立しています。架空のデータだけを使い、SQLはブラウザ内で実行します。入力は保存・送信されません。初回実行時に外部CDNから実行エンジンを読み込みます。