ASOF JOIN 構文: キーワードの使用制限(保留中)¶
ASOF JOIN 機能は以下のように動作します。
- 変更前:
オブジェクト名、オブジェクトエイリアス、セッション変数、バインド変数としての ASOF と MATCH_CONDITION の使用は制限されません。
- 変更後:
ASOF と MATCH_CONDITION は新しいキーワードです。これらのキーワードは、 SELECT コマンド、セッション変数、またはバインド変数を設定または使用するコマンドでの使用が制限されています。
オブジェクトの名前
SELECT ステートメントがテーブル、ビュー、インラインビューの名前として ASOF または MATCH_CONDITION を使用する場合、次のように識別する必要があります。
オブジェクトが二重引用符で囲まれた名前で作成された場合は、同じ二重引用符で囲まれた名前を使用する。
オブジェクトが二重引用符なしの名前で作成された場合は、二重引用符と大文字を使用する。
例えば、次のようなステートメントは使用できなくなり、エラーが返されます。
SELECT * FROM asof; WITH match_condition AS (SELECT * FROM T1) SELECT * FROM match_condition;
二重引用符でオブジェクトを作成した場合は、二重引用符を使用して問題を修正する。
SELECT * FROM "asof"; WITH "match_condition" AS (SELECT * FROM T1) SELECT * FROM "match_condition";
二重引用符なしでオブジェクトを作成した場合は、二重引用符と大文字を使用して問題を修正する。
SELECT * FROM "ASOF"; WITH "MATCH_CONDITION" AS (SELECT * FROM T1) SELECT * FROM "MATCH_CONDITION";
注釈
Snowflakeでは、アプリケーションでこれらのオブジェクト名の使用を中止することを推奨しています。
エイリアス名
SELECT ステートメントがエイリアスとして ASOF または MATCH_CONDITION を使用する場合、エイリアスの前に AS を使用するか、エイリアスを二重引用符で囲む必要があります。例えば、次のようなステートメントは使用できなくなり、エラーが返されます。
SELECT * FROM t1 asof; SELECT * FROM t2 match_condition;
次のいずれかの方法で問題を解決します。
SELECT * FROM t1 AS asof; SELECT * FROM t1 "asof"; SELECT * FROM t2 AS match_condition; SELECT * FROM t2 "match_condition";
変数の名前
セッション変数やバインド変数を ASOF や MATCH_CONDITION という名前で使用していて、作成時にその名前が二重引用符で囲まれていない場合は、名前を変更するか削除する必要があります。
たとえば、
asof
という名前のセッション変数を設定することはできなくなります。set asof ='2024/01/15';
001003 (42000): SQL compilation error: syntax error line 1 at position 4 unexpected 'asof'.
しかし、明示的に二重引用符で囲まれた
"asof"
または"ASOF"
という名前の変数を設定することはできます。set "asof" ='2024/01/15';
+----------------------------------+ | status | |----------------------------------| | Statement executed successfully. | +----------------------------------+
同じルールが
:asof
や:match_condition
のようなバインド変数にも適用されます。
参照: 1138