ASOF JOIN-Syntax: Eingeschränkte Verwendung von Schlüsselwörtern (Ausstehend)

Achtung

Diese Verhaltensänderung ist in Bundle 2024_01 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Das ASOF JOIN-Feature verhält sich wie folgt:

Vor der Änderung:

Die Verwendung von ASOF und MATCH_CONDITION als Objektnamen, Objektaliasse, Sitzungsvariablen und Bindungsvariablen ist nicht eingeschränkt.

Nach der Änderung:

ASOF und MATCH_CONDITION sind neue Schlüsselwörter. Die Verwendung dieser Schlüsselwörter in SELECT-Befehlen und Befehlen, die Sitzungs- oder Bindungsvariablen setzen oder verwenden, ist eingeschränkt.

Namen von Objekten

Wenn eine SELECT-Anweisung ASOF oder MATCH_CONDITION als Name einer Tabelle, einer Ansicht oder einer Inline-Ansicht verwendet, ist folgende Identifizierung erforderlich:

  • Wenn das Objekt mit doppelten Anführungszeichen im Namen erstellt wurde, verwenden Sie denselben Namen in doppelten Anführungszeichen.

  • Wenn das Objekt ohne Anführungszeichen im Namen erstellt wurde, verwenden Sie doppelte Anführungszeichen und Großbuchstaben.

Die folgenden Anweisungen sind zum Beispiel nicht mehr zulässig und geben Fehler zurück:

SELECT * FROM asof;
WITH match_condition AS (SELECT * FROM T1)
  SELECT * FROM match_condition;
Copy

Wenn Sie die Objekte mit doppelten Anführungszeichen erstellt haben, beheben Sie das Problem, indem Sie doppelte Anführungszeichen verwenden:

SELECT * FROM "asof";
WITH "match_condition" AS (SELECT * FROM T1)
  SELECT * FROM "match_condition";
Copy

Wenn Sie die Objekte ohne doppelte Anführungszeichen erstellt haben, beheben Sie das Problem, indem Sie doppelte Anführungszeichen und Großbuchstaben verwenden:

SELECT * FROM "ASOF";
WITH "MATCH_CONDITION" AS (SELECT * FROM T1)
  SELECT * FROM "MATCH_CONDITION";
Copy

Bemerkung

Snowflake empfiehlt, dass Sie diese Objektnamen in Ihren Anwendungen nicht mehr verwenden.

Namen von Aliassen

Wenn eine SELECT-Anweisung ASOF oder MATCH_CONDITION als Alias verwendet, müssen Sie AS vor dem Alias verwenden oder den Alias in doppelte Anführungszeichen setzen. Die folgenden Anweisungen sind zum Beispiel nicht mehr zulässig und geben Fehler zurück:

SELECT * FROM t1 asof;
SELECT * FROM t2 match_condition;
Copy

Zur Behebung des Problems gibt es folgende Optionen:

SELECT * FROM t1 AS asof;
SELECT * FROM t1 "asof";
SELECT * FROM t2 AS match_condition;
SELECT * FROM t2 "match_condition";
Copy

Namen der Variablen

Wenn Sie Sitzungsvariablen oder Bindungsvariablen mit dem Namen ASOF oder MATCH_CONDITION verwenden und die Namen beim Erstellen nicht in Anführungszeichen gesetzt wurden, müssen sie umbenannt oder entfernt werden.

Sie können zum Beispiel keine Sitzungsvariable mit dem Namen asof mehr festlegen:

set asof ='2024/01/15';
Copy
001003 (42000): SQL compilation error:
syntax error line 1 at position 4 unexpected 'asof'.

Sie können jedoch eine Variable festlegen, die ausdrücklich in doppelte Anführungszeichen gesetzt ist und den Namen "asof" oder "ASOF" trägt:

set "asof" ='2024/01/15';
Copy
+----------------------------------+
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+

Die gleichen Regeln gelten für Bindungsvariablen wie :asof und :match_condition.

Ref.: 1138