SnowConvert AI - Redshift - Instructions SQL¶
Référence de traduction pour toutes les instructions prises en charge par SnowConvert AI pour Redshift.
CALL¶
Description¶
Exécute une procédure stockée. La commande CALL doit inclure le nom de la procédure et les valeurs des arguments d’entrée. Vous devez appeler une procédure stockée en utilisant l’instruction CALL. (Référence linguistique Redshift SQL CALL).
Grammar Syntax¶
Modèles d’échantillons de sources¶
Scénario de base¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Redshift¶
Appel en mode paramètres de sortie (INOUT, OUT)¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Redshift¶
Problèmes connus¶
Les paramètres de sortie des appels en dehors des procédures ne fonctionneront pas.
CREATE DATABASE¶
Grammar Syntax¶
Pour plus d’informations, veuillez vous référer à la [CREATE DATABASE documentation Redshift] (https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html).
Modèles d’échantillons de sources¶
Échantillons de base¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Clause Collate¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Clause Connection Limit¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Avertissement
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.
Clause From ARN¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Avertissement
Cette clause est supprimée car elle sert à référencer des ressources Amazon, non valables dans Snowflake.
Clause Owner¶
Code d’entrée¶
Redshift¶
Code de sortie¶
Snowflake¶
Avertissement
Sachez que dans ce cas, la clause du propriétaire est supprimée du code car les bases de données de Snowflake sont détenues par des rôles, et non par des utilisateurs individuels. Pour plus d’informations, veuillez vous référer à la documentation de Snowflake GRANT OWNERSHIP.
Clause Isolation Level¶
Code d’entrée¶
Redshift¶
Code de sortie¶
Snowflake¶
Note
La transformation du niveau d’isolement est planifiée pour être réalisée à l’avenir.
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle
CREATE EXTERNAL TABLE¶
Description ¶
Actuellement SnowConvert AI transforme CREATE EXTERNAL TABLES en tables régulières, ce qui implique un effort supplémentaire, car les données stockées dans des tables RedShift externes doivent être transférées vers la base de données Snowflake.
Grammar Syntax ¶
See the Redshift CREATE EXTERNAL TABLE specification for this syntax.
Modèles d’échantillons de sources¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Créer une table externe AS¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Recommandations¶
Pour l’utilisation de Create External Table dans Snowflake, vous pouvez vous référer à la documentation de Snowflake.
EWIs connexes¶
SSC-FDM-0004 : table externe traduite en table normale
CREATE MATERIALIZED VIEW¶
Description¶
Dans SnowConvert AI, les vues matérialisées Redshift sont transformées en tables dynamiques Snowflake. Pour configurer correctement les tables dynamiques, deux paramètres essentiels doivent être définis : TARGET_LAG et WAREHOUSE. Si ces paramètres ne sont pas spécifiés dans les options de configuration, SnowConvert AI utilisera par défaut des valeurs préattribuées lors de la conversion, comme illustré dans l’exemple ci-dessous.
For more information, see the Redshift CREATE MATERIALIZED VIEW documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
Grammar Syntax¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE MATERIALIZED VIEW specification for this syntax.
Modèles d’échantillons de sources¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Note
Pour la documentation sur les attributs des tables, vous pouvez consulter la documentation suivante :
Avertissement
Les clauses BACKUP et AUTO REFRESH sont supprimées car elles ne sont pas applicables au tableau dynamique de Snowflake
Related Ewis¶
SSC-FDM-0031 : Paramètres requis de la table dynamique définis par défaut
CREATE SCHEMA¶
Grammar Syntax¶
Pour plus d’informations, veuillez vous référer à la documentation Redshift CREATE SCHEMA.
Modèles d’échantillons de sources¶
Échantillons de base¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Clause Quota¶
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Note
Dans Snowflake, il n’est pas possible de définir un quota par régime. La gestion du stockage se fait au niveau du compte et de l’entrepôt, et Snowflake s’en charge automatiquement. C’est pourquoi il est supprimé du code.
EWIs connexes¶
Il n’y a pas de problème connu.
CREATE FUNCTION¶
Description¶
Cette commande définit une fonction définie par l’utilisateur (UDF) dans la base de données. Ces fonctions encapsulent une logique réutilisable qui peut être invoquée dans des requêtes SQL.
Grammar Syntax¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
Langage SQL¶
Catégorie de Volatilité¶
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.
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Langage Python¶
Dans la portée de SnowConvert AI, le langage Python pour les instructions CREATE FUNCTION n’est pas pris en charge. Par conséquent, le langage ppythonun sera signalé par un EWI (SSC-EWI-0073), et son corps pouvait apparaître avec des erreurs d’analyse.
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
EWIs connexes¶
Il n’y a pas de problème connu.
CREATE VIEW¶
Description¶
Cette commande crée une vue dans une base de données, qui est exécutée chaque fois que la vue est référencée dans une requête. En utilisant la clause WITH NO SCHEMA BINDING, vous pouvez créer des vues sur une table externe ou sur des objets qui n’existent pas encore. Cette clause exige toutefois que vous indiquiez le nom qualifié de l’objet ou de la table auquel vous faites référence.
Grammar Syntax¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
Modèles d’échantillons de sources¶
Compte tenu des clauses obligatoires et facultatives de la commande Redshift, la sortie après migration vers Snowflake est très similaire.
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Il existe cependant quelques exceptions d’une clause non prise en charge de Redshift, c’est pourquoi un EWI a été mise en œuvre pour couvrir ce cas.
EWIs connexes¶
SSC-EWI-RS0003 : l’instruction « With no schema binding » n’est pas prise en charge dans Snowflake.
DELETE¶
Description¶
Supprime les lignes des tables. (Référence linguistique Redshift SQL instruction Delete).
Remarque
Cette syntaxe est entièrement prise en charge par Snowflake.
Grammar Syntax¶
Modèles d’échantillons de sources¶
Données de configuration¶
Redshift¶
Clause From¶
Mettez à jour une table en référençant des informations provenant d’autres tables. Dans Redshift, le mot-clé FROM est facultatif, mais dans Snowflake, il est obligatoire. Par conséquent, il sera ajouté dans les cas où elle est manquante.
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Clause Where¶
Limite les mises à jour aux lignes qui répondent à une condition. Lorsque la condition est remplie, les colonnes SET spécifiées sont mises à jour. La condition peut être un simple prédicat sur une colonne ou une condition basée sur le résultat d’une sous-requête. Cette clause est pleinement équivalente dans Snowflake.
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
7 |
Grace |
Engineering |
6 |
8 |
Helen |
Engineering |
7 |
9 |
Ivy |
Engineering |
7 |
10 |
John |
Sales |
3 |
11 |
Joe |
Engineering |
5 |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
7 |
Grace |
Engineering |
6 |
8 |
Helen |
Engineering |
7 |
9 |
Ivy |
Engineering |
7 |
10 |
John |
Sales |
3 |
11 |
Joe |
Engineering |
5 |
Clause Using¶
Cette clause introduit une liste de tables lorsque des tables supplémentaires sont référencées dans la condition de la clause WHERE. Cette clause est pleinement équivalente dans Snowflake.
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
7 |
Grace |
Engineering |
6 |
8 |
Helen |
Engineering |
7 |
9 |
Ivy |
Engineering |
7 |
11 |
Joe |
Engineering |
5 |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
7 |
Grace |
Engineering |
6 |
8 |
Helen |
Engineering |
7 |
9 |
Ivy |
Engineering |
7 |
11 |
Joe |
Engineering |
5 |
Clause WITH¶
Cette clause spécifie une ou plusieurs expressions de table communes (CTE). Les noms des colonnes de sortie sont facultatifs pour les CTEs non récursifs, mais obligatoires pour ceux qui sont récursifs.
Cette clause ne pouvant être utilisée dans une instruction DELETE, elle est transformée en tables temporaires avec leurs requêtes correspondantes. Après l’exécution de l’instruction DELETE, ces tables temporaires sont supprimées afin de faire le ménage, de libérer des ressources et d’éviter les collisions de noms lors de la création de tables au cours de la même session. En outre, s’il existe une table normale portant le même nom, elle sera à nouveau prioritaire, puisque la table temporaire a la priorité sur toute autre table portant le même nom dans la même session.
CTE non récursif¶
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
CTE récursif¶
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
10 |
John |
Sales |
3 |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
10 |
John |
Sales |
3 |
Supprimer une vue matérialisée¶
Dans Redshift, vous pouvez appliquer l’instruction DELETE aux vues matérialisées utilisées pour l”ingestion de flux. Dans Snowflake, ces vues sont transformées en tables dynamiques et l’instruction DELETE ne peut pas être utilisée sur des tables dynamiques. Pour cette raison, un EWI sera ajouté.
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
Problèmes connus ¶
La réplication de la fonctionnalité de la clause
WITHnécessite la création de tables temporaires reflétant chaque expression de table commune (CTE). Toutefois, cette approche échoue si une table temporaire portant le même nom existe déjà dans la session en cours, ce qui provoque une erreur.
EWIs connexes¶
SSC-FDM-0031 : Table dynamique paramètres requis définis par défaut.
SSC-EWI-RS0008: Materialized view is transformed into a dynamic table, and the DELETE statement cannot be used on dynamic tables in Snowflake.
EXECUTE¶
Description¶
L’instruction
EXECUTEIMMEDIATEconstruit et exécute une instruction dynamique SQL en une seule opération.Le SQL dynamique natif utilise l’instruction
EXECUTEIMMEDIATEpour traiter les instructions SQL les plus dynamiques. (Instruction EXECUTE de référence du langage Redshift)
Grammar Syntax¶
Modèles d’échantillons de sources¶
Exemple concaténé
Code d’entrée
Redshift¶
Code de sortie
Snowflake¶
Transformation de fonctions¶
Code d’entrée¶
Redshift¶
Code de sortie¶
Snowflake¶
Erreur dans l’analyse des requêtes¶
Code d’entrée¶
Redshift¶
Code de sortie¶
Snowflake¶
Clause INTO¶
Code d’entrée¶
Redshift¶
Code de sortie¶
Snowflake¶
Problèmes connus¶
1. Execution results cannot be stored in variables.¶
SnowScripting ne prend pas en charge les clauses INTO et BULK COLLECT INTO. Pour cette raison, les résultats devront être transmis par d’autres moyens.
2. Dynamic SQL Execution queries may be marked incorrectly as non-runnable.¶
Dans certains cas, une instruction d’exécution peut faire l’objet d’un commentaire, que son exécution soit sûre ou non, veuillez en tenir compte :
EWIs connexes¶
SSC-EWI-0027: Variable avec requête non valide.
SSC-EWI-0030 : l’instruction ci-dessous a des utilisations de SQL dynamique.
INSERT¶
Description¶
Insère de nouvelles lignes dans une table.(Référence linguistique Redshift SQL instruction Insert).
Avertissement
Cette syntaxe est partiellement prise en charge par Snowflake.
Grammar Syntax¶
Modèles d’échantillons de sources¶
Données de configuration¶
Redshift¶
Valeurs par défaut¶
Cela insère une ligne complète avec ses valeurs par défaut. Si certaines colonnes n’ont pas de valeurs par défaut, les valeurs NULL sont insérées dans ces colonnes.
Cette clause ne peut pas spécifier de colonnes individuelles ; elle insère toujours une ligne complète avec ses valeurs par défaut. En outre, les colonnes avec la contrainte NOT NULL ne peuvent pas être incluses dans la définition de table. Pour reproduire ce comportement dans Snowflake, SnowConvert AI insère une colonne avec une valeur DEFAULT dans la table. Cette action insère une ligne complète, en utilisant la valeur par défaut pour chaque colonne.
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
Marketing |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
Marketing |
Requête¶
Insérez une ou plusieurs lignes dans la table à l’aide d’une requête. Toutes les lignes produites par la requête seront insérées dans la table. La requête doit renvoyer une liste de colonnes compatible avec les colonnes de la table, bien que les noms des colonnes ne doivent pas nécessairement correspondre. Cette fonctionnalité est entièrement équivalente dans Snowflake.
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
Opérations |
2 |
Hannah Gray |
26000 |
Finances |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
Opérations |
2 |
Hannah Gray |
26000 |
Finances |
Problèmes connus ¶
Certaines expressions ne peuvent pas être utilisées dans la clause VALUES de Snowflake. Par exemple, dans Redshift, la fonction JSON_PARSE peut être utilisée dans la clause VALUES pour insérer une valeur JSON dans un type de données SUPER. Dans Snowflake, cependant, la fonction PARSE_JSON ne peut pas être utilisée dans la clause VALUES pour insérer une valeur JSON dans un type de données VARIANT. Une requête peut être utilisée à la place de la clause VALUES. Pour plus de références, veuillez vous référer à la documentation de Snowflake. Vous pouvez également consulter l”article suivant pour de plus amples informations.
EWIs connexes¶
Il n’y a pas de problème connu.
MERGE¶
Grammar Syntax¶
Pour plus d’informations, veuillez vous référer à la documentation MERGE de Redshift.
Modèles d’échantillons de sources¶
UPDATE - INSERT¶
Il n’y a pas de différences entre les deux langues. Le code est conservé dans sa forme originale.
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
DELETE - INSERT¶
Il n’y a pas de différences entre les deux langues. Le code est conservé dans sa forme originale.
Code d’entrée :¶
Redshift¶
Code de sortie :¶
Snowflake¶
REMOVE DUPLICATES¶
La clause REMOVE DUPLICATES n’est pas prise en charge dans Snowflake, mais il existe une solution de contournement qui permet d’émuler le comportement original.
Le code de sortie comportera trois nouvelles instructions :
Une page TEMPORARY TABLE contenant les valeurs en double des tables source et cible qui correspondent à la condition
Une instruction INSERT qui ajoute les valeurs en attente à la table cible après la fusion
Une instruction DROP qui supprime la table temporaire générée.
Celles-ci sont nécessaires car le comportement DROP DUPLICATES supprime les valeurs en double de la table cible et insère ensuite les valeurs correspondant à la condition dans la table source.
Code d’entrée :¶
Redshift¶
Résultats¶
ID |
NAME |
|---|---|
30 |
Daisy |
22 |
Clarence |
30 |
Tony |
11 |
Alice |
23 |
David |
Code de sortie :¶
Snowflake¶
Résultats¶
ID |
NAME |
|---|---|
22 |
Clarence |
30 |
Tony |
30 |
Daisy |
11 |
Alice |
23 |
David |
Problèmes connus¶
Il n’y a pas de problème connu.
EWIs connexes¶
SSC-EWI-RS0009 : information sémantique non trouvée pour le tableau source.
SSC-FDM-RS0005: Redshift MERGE rejects duplicate source rows. Snowflake allows them, which may produce different results.
UPDATE¶
Description¶
Met à jour les valeurs d’une ou plusieurs colonnes de la table lorsqu’une condition est remplie. (Référence linguistique Redshift SQL instruction Update).
Remarque
Cette syntaxe est entièrement prise en charge par Snowflake.
Grammar Syntax¶
Modèles d’échantillons de sources¶
Données de configuration¶
Redshift¶
Alias¶
Bien que la grammaire de Snowflake ne spécifie pas qu’un alias de table peut être utilisé, c’est un code valide dans Snowflake.
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
505000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
405000 |
Marketing |
5 |
Eve |
455000 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
395000 |
Marketing |
9 |
Ivy |
485000 |
HR |
10 |
Jack |
425000 |
Engineering |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
475000 |
HR |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
505000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
405000 |
Marketing |
5 |
Eve |
455000 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
395000 |
Marketing |
9 |
Ivy |
485000 |
HR |
10 |
Jack |
425000 |
Engineering |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
475000 |
HR |
Clause WITH¶
Cette clause spécifie une ou plusieurs expressions de table communes (CTE). Les noms des colonnes de sortie sont facultatifs pour les CTEs non récursifs, mais obligatoires pour ceux qui sont récursifs.
Cette clause ne pouvant être utilisée dans une instruction UPDATE, elle est transformée en tables temporaires avec leurs requêtes correspondantes. Après l’exécution de l’instruction UPDATE, ces tables temporaires sont supprimées afin de faire le ménage, de libérer des ressources et d’éviter les collisions de noms lors de la création de tables au cours de la même session. En outre, s’il existe une table normale portant le même nom, elle sera à nouveau prioritaire, puisque la table temporaire a la priorité sur toute autre table portant le même nom dans la même session.
CTE non récursif¶
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
500000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
546923 |
Marketing |
5 |
Eve |
546923 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
546923 |
Marketing |
9 |
Ivy |
546923 |
HR |
10 |
Jack |
546923 |
Engineering |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
546923 |
HR |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
500000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
546923 |
Marketing |
5 |
Eve |
546923 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
546923 |
Marketing |
9 |
Ivy |
546923 |
HR |
10 |
Jack |
546923 |
Engineering |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
546923 |
HR |
CTE récursif¶
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
526666 |
HR |
2 |
Bob |
670000 |
Engineering |
3 |
Charlie |
773333 |
Engineering |
4 |
David |
433333 |
Marketing |
5 |
Eve |
475000 |
HR |
6 |
Frank |
825000 |
Engineering |
7 |
Grace |
721666 |
Engineering |
8 |
Helen |
423000 |
Marketing |
9 |
Ivy |
506000 |
HR |
10 |
Jack |
484000 |
Engineering |
11 |
Ken |
743333 |
Marketing |
12 |
Liam |
670000 |
Engineering |
13 |
Mona |
495668 |
HR |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
526667 |
HR |
2 |
Bob |
670000 |
Engineering |
3 |
Charlie |
773333 |
Engineering |
4 |
David |
433333 |
Marketing |
5 |
Eve |
475000 |
HR |
6 |
Frank |
825000 |
Engineering |
7 |
Grace |
721667 |
Engineering |
8 |
Helen |
423000 |
Marketing |
9 |
Ivy |
506000 |
HR |
10 |
Jack |
484000 |
Engineering |
11 |
Ken |
743333 |
Marketing |
12 |
Liam |
670000 |
Engineering |
13 |
Mona |
495667 |
HR |
Valeurs SET DEFAULT¶
Code d’entrée :¶
Redshift¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
20000 |
Sales |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
400000 |
Marketing |
5 |
Eve |
20000 |
Sales |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
390000 |
Marketing |
9 |
Ivy |
20000 |
Sales |
10 |
Jack |
420000 |
Engineering |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
20000 |
Sales |
Code de sortie :¶
Snowflake¶
Résultat¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
20000 |
Sales |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
400000 |
Marketing |
5 |
Eve |
20000 |
Sales |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
390000 |
Marketing |
9 |
Ivy |
20000 |
Sales |
10 |
Jack |
420000 |
Engineering |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
20000 |
Sales |
Clause SET¶
Il est responsable de la modification des valeurs dans les colonnes. Comme pour Snowflake, les requêtes de mise à jour avec des correspondances multiples par ligne génèrent une erreur lorsque le paramètre de configuration ERROR_ON_NONDETERMINISTIC_UPDATE est défini sur True. Cet indicateur fonctionne de la même manière dans Snowflake, et il utilise même le même nom, ERROR_ON_NONDETERMINISTIC_UPDATE.
Toutefois, lorsque cet indicateur est désactivé, aucune erreur n’est renvoyée et l’une des lignes correspondantes est utilisée pour mettre à jour la ligne cible. La ligne jointe sélectionnée est non déterministe et arbitraire dans les deux langues ; le comportement peut ne pas être cohérent d’une exécution à l’autre, ce qui pourrait entraîner des incohérences dans les données.
Données de configuration :¶
Redshift¶
Code d’entrée :¶
Redshift¶
Résultat¶
K |
V |
|---|---|
0 |
16 |
Code de sortie :¶
Snowflake¶
Résultat¶
K |
V |
|---|---|
0 |
14 |
Problèmes connus ¶
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.
La réplication de la fonctionnalité de la clause
WITHnécessite la création de tables temporaires reflétant chaque expression de table commune (CTE). Toutefois, cette approche échoue si une table temporaire portant le même nom existe déjà dans la session en cours, ce qui provoque une erreur.
EWIs connexes¶
Il n’y a pas de problème connu.