Syntaxe ASOF JOIN : utilisation restreinte des mots-clés (en attente)

Attention

Ce changement de comportement est présent dans le bundle 2024_01.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

La fonction ASOF JOIN se comporte comme suit :

Avant la modification

L’utilisation de ASOF et MATCH_CONDITION comme noms d’objets et alias n’est pas limitée.

Après la modification

ASOF et MATCH_CONDITION sont de nouveaux mots-clés. L’utilisation de ces mots-clés dans la syntaxe de la commande SELECT est limitée.

Noms d’objets

Si une instruction SELECT utilise ASOF ou MATCH_CONDITION comme nom d’une table, d’une vue ou d’une vue en ligne, vous devez l’identifier comme suit :

  • Si l’objet a été créé avec des guillemets doubles dans le nom, utilisez le même nom entre guillemets doubles.

  • Si l’objet a été créé sans guillemets doubles dans le nom, utilisez des guillemets doubles et des lettres majuscules.

Par exemple, les instructions suivantes ne sont plus autorisées et renvoient des erreurs :

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

Si vous avez créé les objets avec des guillemets doubles, corrigez le problème en utilisant des guillemets doubles :

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

Si vous avez créé les objets sans guillemets doubles, corrigez le problème en utilisant des guillemets doubles et des lettres majuscules :

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

Note

Snowflake vous recommande de ne plus utiliser ces noms d’objets dans vos applications.

Noms d’alias

Si une instruction SELECT utilise ASOF ou MATCH_CONDITION comme alias, vous devez utiliser AS avant l’alias ou mettre l’alias entre guillemets doubles. Par exemple, les instructions suivantes ne sont plus autorisées et renvoient des erreurs :

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

Réglez le problème de l’une des manières suivantes :

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

Réf : 1138