SnowConvert AI - Redshift - SQLステートメント¶
Redshift用SnowConvert AIがサポートするすべてのステートメントの変換リファレンス。
CALL¶
説明¶
ストアドプロシージャを実行します。CALL コマンドには、プロシージャ名と入力引数の値を含める必要があります。ストアドプロシージャを呼び出すには、 CALL ステートメントを使用する必要があります。(Redshift SQL 言語リファレンス CALL)。
文法構文¶
サンプルソースパターン¶
基本シナリオ¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
出力パラメーターモードを使用した呼び出し(INOUT、 OUT)¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
プロシージャ外の呼び出しからの出力パラメーターは機能しません。
CREATE DATABASE¶
文法構文¶
詳細情報については、Redshift CREATE DATABASE ドキュメント をご参照ください。
サンプルソースパターン¶
基本サンプル¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
Collate句¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
Connection Limit句¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
警告
The connection limit clause is removed since the connection concurrency in Snowflake is managed by warehouse. For more information, see the Snowflake MAX_CONCURRENCY_LEVEL parameter.
From ARN 句¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
警告
この句は Amazon Resources の参照に使用されており、Snowflakeでは無効であるため削除しました。
Owner句¶
入力コード¶
Redshift¶
出力コード¶
Snowflake¶
警告
この場合、Snowflakeデータベースは個々のユーザーではなくロールによって所有されるため、owner句はコードから削除されることに注意してください。詳細情報については、 Snowflake GRANT OWNERSHIP ドキュメント を参照してください。
Isolation Level句¶
入力コード¶
Redshift¶
出力コード¶
Snowflake¶
注釈
Isolation Levelの変換は、今後提供される予定です。
関連 EWIs¶
SSC-EWI-0073: 機能同等性レビュー保留中
CREATE EXTERNAL TABLE¶
説明¶
現在、SnowConvert AIは、 CREATE EXTERNAL TABLES を通常のテーブルに変換しています。これは、外部のRedShiftテーブルに保存されているデータをSnowflakeデータベースに転送する必要があるため、手間が増えることを意味します。
文法構文¶
See the Redshift CREATE EXTERNAL TABLE specification for this syntax.
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
外部テーブル作成 AS¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
推奨事項¶
Snowflakeでの外部テーブル作成の使用方法については、 Snowflakeのドキュメントを参照してください。
関連 EWIs¶
SSC-FDM-0004: 外部テーブルを通常のテーブルに翻訳する
CREATE MATERIALIZED VIEW¶
説明¶
SnowConvert AIでは、RedshiftマテリアライズドビューはSnowflakeの動的テーブルに変換されます。動的テーブルを適切に設定するには、2つの重要なパラメーターを定義する必要があります。 TARGET_LAG とWAREHOUSEです。これらのパラメーターが構成オプションで指定されないままになっている場合、SnowConvert AIでは、以下の例で示されるように、変換中にあらかじめ割り当てられたデフォルト値になります。
For more information, see the Redshift CREATE MATERIALIZED VIEW documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
文法構文¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE MATERIALIZED VIEW specification for this syntax.
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
警告
BACKUP 句と AUTO REFRESH 句は、Snowflakeの動的テーブルでは適用可能ではないため、削除されます
関連EWI¶
SSC-FDM-0031: デフォルトで設定されている動的テーブルの必須パラメーター
CREATE SCHEMA¶
文法構文¶
詳細情報については、 Redshift CREATE SCHEMA ドキュメント をご参照ください。
サンプルソースパターン¶
基本サンプル¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
Quota句¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
注釈
Snowflakeでは、スキームごとにクォータを定義することはできません。ストレージ管理はアカウントとウェアハウスレベルで行われ、Snowflakeが自動的に処理します。そのため、コードからは削除されています。
関連 EWIs¶
既知の問題はありません。
CREATE に FUNCTION¶
説明¶
このコマンドは、データベース内でユーザー定義関数(UDF)を定義します。これらの関数は、SQLクエリ内で呼び出すことができる再利用可能なロジックをカプセル化します。
文法構文¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
SQL言語¶
ボラティリティカテゴリ¶
In Snowflake, VOLATILE and IMMUTABLE function volatility are functionally equivalent. Given that STABLE is inherently transformed to the default VOLATILE behavior, explicit use of STABLE will be deleted.
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
Python言語¶
SnowConvert AIのスコープ内では、 CREATE FUNCTION ステートメント用のPython言語はサポートされていません。その結果、 plpythonu という言語には、EWI(SSC-EWI-0073)というフラグが立ち、その本体はパースエラーで表示される可能性があります。
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
関連 EWIs¶
既知の問題はありません。
CREATE VIEW¶
説明¶
このコマンドはデータベースにビューを作成し、そのビューがクエリで参照される度に実行されます。WITH NO SCHEMA BINDING 句を使用すると、まだ存在しない外部テーブルやオブジェクトに対するビューを作成できます。ただしこの句では、参照するオブジェクトやテーブルの修飾名を指定する必要があります。
文法構文¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
サンプルソースパターン¶
Redshiftsコマンドの必須句とオプション句を考慮すると、Snowflakeへの移行後の出力は非常に似ています。
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
ただし、Redshiftでサポートされていない句が1つだけ存在するという例外があるため、このケースをカバーするために EWI が実装されました。
関連 EWIs¶
SSC-EWI-RS0003: スキーマバインドステートメントがない場合、Snowflakeではサポートされません。
DELETE¶
説明¶
テーブルから行を削除します。(Redshift SQL 言語リファレンスDeleteステートメント)。
注意
この構文はSnowflakeで完全にサポートされています。
文法構文¶
サンプルソースパターン¶
設定データ¶
Redshift¶
From句¶
他のテーブルの情報を参照してテーブルを更新します。Redshiftでは FROM キーワードはオプションですが、Snowflakeでは必須です。そのため、欠けている場合は追加されます。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Where句¶
条件に一致する行の更新を制限します。条件がtrueを返すと、指定した SET 列が更新されます。条件は列に対する単純な述語か、サブクエリの結果に基づく条件です。この句はSnowflakeでは完全に等価です。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
アリス |
販売 |
2 |
2 |
ボブ |
販売 |
1 |
3 |
チャーリー |
販売 |
1 |
7 |
グレース |
エンジニアリング |
6 |
8 |
ヘレン |
エンジニアリング |
7 |
9 |
アイビー |
エンジニアリング |
7 |
10 |
John |
販売 |
3 |
11 |
ジョー |
エンジニアリング |
5 |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
アリス |
販売 |
2 |
2 |
ボブ |
販売 |
1 |
3 |
チャーリー |
販売 |
1 |
7 |
グレース |
エンジニアリング |
6 |
8 |
ヘレン |
エンジニアリング |
7 |
9 |
アイビー |
エンジニアリング |
7 |
10 |
John |
販売 |
3 |
11 |
ジョー |
エンジニアリング |
5 |
Using句¶
この句は、 WHERE 句の条件で追加のテーブルが参照される場合に、テーブルのリストを紹介します。この句はSnowflakeでは完全に等価です。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
デイビッド |
マーケティング |
2 |
5 |
イブ |
マーケティング |
4 |
6 |
フランク |
マーケティング |
4 |
7 |
グレース |
エンジニアリング |
6 |
8 |
ヘレン |
エンジニアリング |
7 |
9 |
アイビー |
エンジニアリング |
7 |
11 |
ジョー |
エンジニアリング |
5 |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
デイビッド |
マーケティング |
2 |
5 |
イブ |
マーケティング |
4 |
6 |
フランク |
マーケティング |
4 |
7 |
グレース |
エンジニアリング |
6 |
8 |
ヘレン |
エンジニアリング |
7 |
9 |
アイビー |
エンジニアリング |
7 |
11 |
ジョー |
エンジニアリング |
5 |
WITH 句¶
この句は、1つ以上の共通テーブル式(CTE)を指定します。出力列名は非再帰型 CTEs ではオプションですが、再帰型では必須です。
この句は DELETE ステートメントでは使用できないため、対応するクエリを持つ仮テーブルに変換されます。DELETE ステートメント実行後、これらの仮テーブルはクリーンアップ、リソースのリリース、同じセッション内でテーブルを作成する際の名前の衝突を避けるためにドロップされます。さらに、仮テーブルは同じセッション内の同じ名前の他のテーブルよりも 優先される ため、同じ名前の通常のテーブルが存在する場合は、そちらが再び優先されます。
非再帰型 CTE¶
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
デイビッド |
マーケティング |
2 |
5 |
イブ |
マーケティング |
4 |
6 |
フランク |
マーケティング |
4 |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
デイビッド |
マーケティング |
2 |
5 |
イブ |
マーケティング |
4 |
6 |
フランク |
マーケティング |
4 |
再帰型 CTE¶
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
アリス |
販売 |
2 |
2 |
ボブ |
販売 |
1 |
3 |
チャーリー |
販売 |
1 |
10 |
John |
販売 |
3 |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
アリス |
販売 |
2 |
2 |
ボブ |
販売 |
1 |
3 |
チャーリー |
販売 |
1 |
10 |
John |
販売 |
3 |
マテリアライズドビューの削除¶
Redshiftでは、 ストリーミング取り込み に使用するマテリアライズドビューに DELETE ステートメントを適用することができます。Snowflakeでは、これらのビューは動的テーブルに変換され、動的テーブルでは DELETE ステートメントは使用できません。このため、 EWI が追加されます。
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
WITH句の機能を複製するには、各共通テーブル式(CTE)をミラーリングした仮テーブルを作成する必要があります。しかし、現在のセッション内に同じ名前の仮テーブルがすでに存在する場合、この方法はエラーになります。
関連 EWIs¶
SSC-FDM-0031: デフォルトで設定されている動的テーブルの必須パラメーター。
SSC-EWI-RS0008: Materialized view is transformed into a dynamic table, and the DELETE statement cannot be used on dynamic tables in Snowflake.
EXECUTE¶
説明¶
EXECUTEIMMEDIATEステートメントは、1回の操作で動的な SQL ステートメントを構築し、実行します。ネイティブの動的SQLは、ほとんどの動的SQLステートメントを処理するために
EXECUTEIMMEDIATEステートメントを使用します。( Redshift言語リファレンスEXECUTEステートメント )
文法構文¶
サンプルソースパターン¶
具体例
入力コード
Redshift¶
出力コード
Snowflake¶
関数の変換¶
入力コード¶
Redshift¶
出力コード¶
Snowflake¶
クエリ解析のエラー¶
入力コード¶
Redshift¶
出力コード¶
Snowflake¶
INTO句¶
入力コード¶
Redshift¶
出力コード¶
Snowflake¶
既知の問題¶
1. Execution results cannot be stored in variables.¶
SnowScripting は INTO も BULK COLLECT INTO 句もサポートしていません。このため、結果は別の手段で渡す必要があります。
2.動的なSQL実行クエリが、実行不可として誤ってマークされることがあります。¶
シナリオによっては、実行が安全か安全でないかに関係なく、実行ステートメントがコメントされる可能性があるため、これを考慮してください。
関連 EWIs¶
SSC-EWI-0027 :無効なクエリを持つ変数。
SSC-EWI-0030 :以下のステートメントでは、動的SQLが使用されています。
INSERT¶
説明¶
テーブルに新しい行を挿入します。(Redshift SQL 言語リファレンスInsertステートメント)。
警告
この構文はSnowflakeで部分的にサポートされています。
文法構文¶
サンプルソースパターン¶
設定データ¶
Redshift¶
デフォルト値¶
デフォルト値で完全な行を挿入します。デフォルト値を持たない列がある場合、それらの列には NULL の値が挿入されます。
この句は個々の列を指定することはできません。常にデフォルト値を含む完全な行を挿入します。また、NOT NULL制約を持つ列をテーブル定義に含めることはできません。この動作をSnowflakeで再現するため、SnowConvert AIはDEFAULT値を持つ列をテーブルに挿入します。このアクションは、各列のデフォルト値を使用して、完全な行を挿入します。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
マーケティング |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
マーケティング |
クエリ¶
クエリを使用して、テーブルに1行または複数行を挿入します。クエリによって生成された行はすべてテーブルに挿入されます。クエリは、テーブルの列と互換性のある列リストを返さなければなりませんが、列名が一致する必要はありません。この機能はSnowflakeでは完全に等価です。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
グレース・リー |
32000 |
操作 |
2 |
ハンナ・グレイ |
26000 |
ファイナンス |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
グレース・リー |
32000 |
操作 |
2 |
ハンナ・グレイ |
26000 |
ファイナンス |
既知の問題¶
Snowflakeの VALUES 句で使用できない式があります。例えば、Redshiftの場合、 VALUES 句内で JSON_PARSE関数を使用すると、 SUPER データ型に JSON 値を挿入することができます。ただし、Snowflakeでは、 VALUES 句で PARSE_JSON 関数を使用して、 JSON 値を VARIANT データ型に挿入することはできません。その代わりに、 VALUES 句の代わりにクエリを使うことができます。詳細については、 Snowflakeドキュメント をご参照ください。詳しい情報は 以下の記事 もご覧ください。
関連 EWIs¶
既知の問題はありません。
MERGE¶
文法構文¶
詳細情報については、Redshift MERGE ドキュメント を参照してください。
サンプルソースパターン¶
UPDATE - INSERT¶
両言語に違いはありません。コードはオリジナルのままです。
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
DELETE - INSERT¶
両言語に違いはありません。コードはオリジナルのままです。
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
REMOVE DUPLICATES¶
Snowflakeでは REMOVE DUPLICATES 句はサポートされていませんが、元の動作をエミュレートする回避策があります。
出力コードには3つの新しいステートメントが追加されます。
条件に一致するソーステーブルとターゲットテーブルの重複値を持つ TEMPORARY TABLE
マージ後に保留中の値をターゲットテーブルに追加する INSERT ステートメント
生成された仮テーブルをドロップする DROP ステートメント。
DROP DUPLICATES の動作では、ターゲットテーブルから重複値を削除し、ソーステーブルから条件に一致する値を挿入するため、これらは必要です。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
|---|---|
30 |
デイジー |
22 |
クラレンス |
30 |
トニー |
11 |
アリス |
23 |
デイビッド |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
|---|---|
22 |
クラレンス |
30 |
トニー |
30 |
デイジー |
11 |
アリス |
23 |
デイビッド |
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SSC-EWI-RS0009: ソーステーブルの意味情報が見つかりません。
SSC-FDM-RS0005: Redshift MERGE rejects duplicate source rows. Snowflake allows them, which may produce different results.
UPDATE¶
説明¶
条件が満たされたときに、1つ以上のテーブル列の値を更新します。(Redshift SQL 言語リファレンスUpdateステートメント)。
注意
この構文はSnowflakeで完全にサポートされています。
文法構文¶
サンプルソースパターン¶
設定データ¶
Redshift¶
エイリアス¶
Snowflakeの文法ではテーブルエイリアスの使用は指定されていませんが、Snowflakeでは有効なコードです。
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
505000 |
HR |
2 |
ボブ |
600000 |
エンジニアリング |
3 |
チャーリー |
700000 |
エンジニアリング |
4 |
デイビッド |
405000 |
マーケティング |
5 |
イブ |
455000 |
HR |
6 |
フランク |
750000 |
エンジニアリング |
7 |
グレース |
650000 |
エンジニアリング |
8 |
ヘレン |
395000 |
マーケティング |
9 |
アイビー |
485000 |
HR |
10 |
ジャック |
425000 |
エンジニアリング |
11 |
ケン |
700000 |
マーケティング |
12 |
リアム |
600000 |
エンジニアリング |
13 |
モナ |
475000 |
HR |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
505000 |
HR |
2 |
ボブ |
600000 |
エンジニアリング |
3 |
チャーリー |
700000 |
エンジニアリング |
4 |
デイビッド |
405000 |
マーケティング |
5 |
イブ |
455000 |
HR |
6 |
フランク |
750000 |
エンジニアリング |
7 |
グレース |
650000 |
エンジニアリング |
8 |
ヘレン |
395000 |
マーケティング |
9 |
アイビー |
485000 |
HR |
10 |
ジャック |
425000 |
エンジニアリング |
11 |
ケン |
700000 |
マーケティング |
12 |
リアム |
600000 |
エンジニアリング |
13 |
モナ |
475000 |
HR |
WITH 句¶
この句は、1つ以上の共通テーブル式(CTE)を指定します。出力列名は非再帰型 CTEs ではオプションですが、再帰型では必須です。
この句は UPDATE ステートメントでは使用できないため、対応するクエリを持つ仮テーブルに変換されます。UPDATE ステートメント実行後、これらの仮テーブルはクリーンアップ、リソースのリリース、同じセッション内でテーブルを作成する際の名前の衝突を避けるためにドロップされます。さらに、仮テーブルは同じセッション内の同じ名前の他のテーブルよりも 優先される ため、同じ名前の通常のテーブルが存在する場合は、そちらが再び優先されます。
非再帰型 CTE¶
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
500000 |
HR |
2 |
ボブ |
600000 |
エンジニアリング |
3 |
チャーリー |
700000 |
エンジニアリング |
4 |
デイビッド |
546923 |
マーケティング |
5 |
イブ |
546923 |
HR |
6 |
フランク |
750000 |
エンジニアリング |
7 |
グレース |
650000 |
エンジニアリング |
8 |
ヘレン |
546923 |
マーケティング |
9 |
アイビー |
546923 |
HR |
10 |
ジャック |
546923 |
エンジニアリング |
11 |
ケン |
700000 |
マーケティング |
12 |
リアム |
600000 |
エンジニアリング |
13 |
モナ |
546923 |
HR |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
500000 |
HR |
2 |
ボブ |
600000 |
エンジニアリング |
3 |
チャーリー |
700000 |
エンジニアリング |
4 |
デイビッド |
546923 |
マーケティング |
5 |
イブ |
546923 |
HR |
6 |
フランク |
750000 |
エンジニアリング |
7 |
グレース |
650000 |
エンジニアリング |
8 |
ヘレン |
546923 |
マーケティング |
9 |
アイビー |
546923 |
HR |
10 |
ジャック |
546923 |
エンジニアリング |
11 |
ケン |
700000 |
マーケティング |
12 |
リアム |
600000 |
エンジニアリング |
13 |
モナ |
546923 |
HR |
再帰型 CTE¶
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
526666 |
HR |
2 |
ボブ |
670000 |
エンジニアリング |
3 |
チャーリー |
773333 |
エンジニアリング |
4 |
デイビッド |
433333 |
マーケティング |
5 |
イブ |
475000 |
HR |
6 |
フランク |
825000 |
エンジニアリング |
7 |
グレース |
721666 |
エンジニアリング |
8 |
ヘレン |
423000 |
マーケティング |
9 |
アイビー |
506000 |
HR |
10 |
ジャック |
484000 |
エンジニアリング |
11 |
ケン |
743333 |
マーケティング |
12 |
リアム |
670000 |
エンジニアリング |
13 |
モナ |
495668 |
HR |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
526667 |
HR |
2 |
ボブ |
670000 |
エンジニアリング |
3 |
チャーリー |
773333 |
エンジニアリング |
4 |
デイビッド |
433333 |
マーケティング |
5 |
イブ |
475000 |
HR |
6 |
フランク |
825000 |
エンジニアリング |
7 |
グレース |
721667 |
エンジニアリング |
8 |
ヘレン |
423000 |
マーケティング |
9 |
アイビー |
506000 |
HR |
10 |
ジャック |
484000 |
エンジニアリング |
11 |
ケン |
743333 |
マーケティング |
12 |
リアム |
670000 |
エンジニアリング |
13 |
モナ |
495667 |
HR |
SET DEFAULT 値¶
入力コード:¶
Redshift¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
20000 |
販売 |
2 |
ボブ |
600000 |
エンジニアリング |
3 |
チャーリー |
700000 |
エンジニアリング |
4 |
デイビッド |
400000 |
マーケティング |
5 |
イブ |
20000 |
販売 |
6 |
フランク |
750000 |
エンジニアリング |
7 |
グレース |
650000 |
エンジニアリング |
8 |
ヘレン |
390000 |
マーケティング |
9 |
アイビー |
20000 |
販売 |
10 |
ジャック |
420000 |
エンジニアリング |
11 |
ケン |
700000 |
マーケティング |
12 |
リアム |
600000 |
エンジニアリング |
13 |
モナ |
20000 |
販売 |
出力コード:¶
Snowflake¶
結果¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
アリス |
20000 |
販売 |
2 |
ボブ |
600000 |
エンジニアリング |
3 |
チャーリー |
700000 |
エンジニアリング |
4 |
デイビッド |
400000 |
マーケティング |
5 |
イブ |
20000 |
販売 |
6 |
フランク |
750000 |
エンジニアリング |
7 |
グレース |
650000 |
エンジニアリング |
8 |
ヘレン |
390000 |
マーケティング |
9 |
アイビー |
20000 |
販売 |
10 |
ジャック |
420000 |
エンジニアリング |
11 |
ケン |
700000 |
マーケティング |
12 |
リアム |
600000 |
エンジニアリング |
13 |
モナ |
20000 |
販売 |
SET 句¶
列の値を変更する役割を担っています。Snowflakeと同様に、構成パラメーター ERROR_ON_NONDETERMINISTIC_UPDATE がtrueにセットされている場合、1行に複数のマッチがある更新クエリはエラーをスローします。このフラグはSnowflakeでも同じように動作し、 ERROR_ON_NONDETERMINISTIC_UPDATE という同じ名前を使っています。
しかし、このフラグをオフにするとエラーは返されず、マッチした行の1つがターゲット行の更新に使用されます。選択された結合行は、どちらの言語でも非決定的かつ任意です。実行間で動作が一貫していない可能性があり、データの不整合が発生する可能性があります。
セットアップデータ:¶
Redshift¶
入力コード:¶
Redshift¶
結果¶
K |
V |
|---|---|
0 |
16 |
出力コード:¶
Snowflake¶
結果¶
K |
V |
|---|---|
0 |
14 |
既知の問題¶
Update queries with multiple matches per row may cause data inconsistencies. Although both platforms have the flag ERROR_ON_NONDETERMINISTIC_UPDATE, these values will always be nondeterministic. Snowflake offers recommendations for handling these scenarios. See the Snowflake UPDATE examples for more details.
WITH句の機能を複製するには、各共通テーブル式(CTE)をミラーリングした仮テーブルを作成する必要があります。しかし、現在のセッション内に同じ名前の仮テーブルがすでに存在する場合、この方法はエラーになります。
関連 EWIs¶
既知の問題はありません。