SnowConvert AI - Redshift - SQL Statements¶
Translation reference for all the supported statements by SnowConvert AI for Redshift.
CALL¶
描述¶
运行存储过程。CALL 命令必须包含过程名称和输入实参值。必须使用 CALL 语句调用存储过程。(Redshift SQL 语言参考 CALL (https://docs.aws.amazon.com/redshift/latest/dg/r_CALL_procedure.html))。
语法¶
示例源模式¶
基本场景¶
输入代码:¶
Redshift¶
输出代码:¶
Redshift¶
使用输出参数模式调用(INOUT、OUT)¶
输入代码:¶
Redshift¶
输出代码:¶
Redshift¶
已知问题¶
Output parameters from calls outside procedures won't work.
CREATE DATABASE¶
语法¶
有关更多信息,请参阅 Redshift CREATE DATABASE 文档 (https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html)。
示例源模式¶
基本示例¶
输入代码:¶
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 资源 (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html),在 Snowflake 中无效。
Owner 子句¶
输入代码¶
Redshift¶
输出代码¶
Snowflake¶
警告
请注意,在这种情况下,owner 子句已从代码中删除,因为 Snowflake 数据库归角色所有,而不是个人用户所有。有关更多信息,请参阅 Snowflake GRANT OWNERSHIP 文档。
Isolation Level 子句¶
输入代码¶
Redshift¶
输出代码¶
Snowflake¶
备注
Isolation Level 的转换计划在未来实现。
相关的 EWIs¶
SSC-EWI-0073:待进行功能等效性审查
CREATE EXTERNAL TABLE¶
描述 ¶
Currently SnowConvert AI is transforming CREATE EXTERNAL TABLES to regular tables, that implies additional effort because data stored in external RedShift tables must be transferred to the Snowflake database.
语法 ¶
See the Redshift CREATE EXTERNAL TABLE specification (https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html) for this syntax.
示例源模式¶
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
Create External Table AS¶
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
建议¶
有关 Create External Table 在 Snowflake 中的用法,可以参阅 Snowflake 文档。
相关的 EWIs¶
SSC-FDM-0004:外部表已转换为常规表
CREATE MATERIALIZED VIEW¶
描述¶
In SnowConvert AI, Redshift Materialized Views are transformed into Snowflake Dynamic Tables. To properly configure Dynamic Tables, two essential parameters must be defined: TARGET_LAG and WAREHOUSE. If these parameters are left unspecified in the configuration options, SnowConvert AI will default to preassigned values during the conversion, as demonstrated in the example below.
For more information, see the Redshift CREATE MATERIALIZED VIEW documentation (https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html).
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 (https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html) for this syntax.
示例源模式¶
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
警告
BACKUP 和 AUTO REFRESH 子句已删除,因为它们不适用于 Snowflake 的动态表
相关的 EWI¶
SSC-FDM-0031:默认设置动态表必填参数
CREATE SCHEMA¶
语法¶
有关更多信息,请参阅 Redshift CREATE SCHEMA 文档 (https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_SCHEMA.html)。
示例源模式¶
基本示例¶
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
Quota 子句¶
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
备注
在 Snowflake 中,不允许按方案定义配额。存储管理是在账户和仓库层面完成的,Snowflake 会自动处理。因此,它已从代码中删除。
相关的 EWIs¶
没有已知问题。
CREATE FUNCTION¶
描述¶
This command defines a user-defined function (UDF) within the database. These functions encapsulate reusable logic that can be invoked within SQL queries.
语法¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification (https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html) for this syntax.
SQL Language¶
Volatility category¶
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 Language¶
Within the SnowConvert AI scope, the Python language for CREATE FUNCTION statements is not supported. Consequently, the language plpythonu will be flagged with an EWI (SSC-EWI-0073), and its body could appear with parsing errors.
输入代码:¶
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 (https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html) for this syntax.
示例源模式¶
考虑到 Redshift 命令中的必需子句与可选子句,迁移到 Snowflake 后的输出非常相似。
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
不过,也有一些例外情况,即 Redshift 中存在一些不受支持的子句,因此实施了 EWI 来涵盖这种情况。
相关的 EWIs¶
SSC-EWI-RS0003:Snowflake 不支持 With no schema binding 语句。
DELETE¶
描述¶
从表中删除行。(Redshift SQL 语言参考 Delete 语句 (https://docs.aws.amazon.com/redshift/latest/dg/r_DELETE.html))。
Note
Snowflake 完全支持此语法。
语法¶
示例源模式¶
Setup data¶
Redshift¶
From 子句¶
通过引用其他表中的信息来更新表。在 Redshift 中,FROM 关键字是可选的,但在 Snowflake 中,它是强制性的。因此,如果缺失则会将其添加。
输入代码:¶
Redshift¶
Result¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
输出代码:¶
Snowflake¶
Result¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Where 子句¶
限制对符合条件的行的更新。当条件返回 true 时,将更新指定的 SET 列。条件可以是列的简单谓词,也可以是基于子查询结果的条件。此子句在 Snowflake 中完全等效。
输入代码:¶
Redshift¶
Result¶
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 |
输出代码:¶
Snowflake¶
Result¶
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 |
Using 子句¶
在 WHERE 子句条件中引用其他表时,此子句引入表列表。此子句在 Snowflake 中完全等效。
输入代码:¶
Redshift¶
Result¶
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 |
输出代码:¶
Snowflake¶
Result¶
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 |
WITH 子句¶
此子句指定一个或多个公用表表达式 (CTE)。对于非递归 CTEs,输出列名是可选的,但对于递归列名是强制性的。
由于此子句不能在 DELETE 语句中使用,因此使用相应的查询将其转换为临时表。执行 DELETE 语句后,删除这些临时表以清理、释放资源,并避免在同一会话中创建表时发生名称冲突。此外,如果存在同名的常规表,它将再次获得优先权,因为该临时表 优先级 高于同一个会话中的任何其他同名表。
非递归 CTE¶
输入代码:¶
Redshift¶
Result¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
输出代码:¶
Snowflake¶
Result¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
递归 CTE¶
输入代码:¶
Redshift¶
Result¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
10 |
John |
Sales |
3 |
输出代码:¶
Snowflake¶
Result¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
10 |
John |
Sales |
3 |
删除物化视图¶
在 Redshift 中,可以对用于 流式引入 (https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html) 的物化视图应用 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¶
描述¶
The
EXECUTEIMMEDIATEstatement builds and runs a dynamic SQL statement in a single operation.Native dynamic SQL uses the
EXECUTEIMMEDIATEstatement to process most dynamic SQL statements. (Redshift Language Reference EXECUTE Statement (https://docs.aws.amazon.com/redshift/latest/dg/c_PLpgSQL-statements.html#r_PLpgSQL-dynamic-sql))
语法¶
示例源模式¶
Concated Example
输入代码
Redshift¶
输出代码
Snowflake¶
Function Transformation¶
输入代码¶
Redshift¶
输出代码¶
Snowflake¶
Error In Query Parsing¶
输入代码¶
Redshift¶
输出代码¶
Snowflake¶
INTO Clause¶
输入代码¶
Redshift¶
输出代码¶
Snowflake¶
已知问题¶
1. Execution results cannot be stored in variables.¶
SnowScripting does not support INTO nor BULK COLLECT INTO clauses. For this reason, results will need to be passed through other means.
2. Dynamic SQL Execution queries may be marked incorrectly as non-runnable.¶
In some scenarios there an execute statement may be commented regardless of being safe or non-safe to run so please take this into account:
相关的 EWIs¶
SSC-EWI-0027: Variable with invalid query.
SSC-EWI-0030: The statement below has usages of dynamic SQL.
INSERT¶
描述¶
在表中插入新行。(Redshift SQL 语言参考 Insert 语句 (https://docs.aws.amazon.com/redshift/latest/dg/r_INSERT_30.html#r_INSERT_30-synopsis))。
警告
Snowflake 部分支持此语法。
语法¶
示例源模式¶
Setup data¶
Redshift¶
默认值¶
该操作会插入包含默认值的完整行。如果有任何列没有默认值,则会在这些列中插入 NULL 值。
This clause cannot specify individual columns; it always inserts a complete row with its default values. Additionally, columns with the NOT NULL constraint cannot be included in the table definition. To replicate this behavior in Snowflake, SnowConvert AI insert a column with a DEFAULT value in the table. This action inserts a complete row, using the default value for every column.
输入代码:¶
Redshift¶
Result¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
Marketing |
输出代码:¶
Snowflake¶
Result¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
Marketing |
查询¶
使用查询向表中插入一行或多行。查询生成的所有行都将插入到表中。尽管列名不需要匹配,但查询必须返回与表列兼容的列列表。此功能在 Snowflake 中完全等效。
输入代码:¶
Redshift¶
Result¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
操作 |
2 |
Hannah Gray |
26000 |
财务 |
输出代码:¶
Snowflake¶
Result¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
操作 |
2 |
Hannah Gray |
26000 |
财务 |
已知问题 ¶
某些表达式不能在 Snowflake 的 VALUES 子句中使用。例如,在 Redshift 中,可以在 VALUES 子句中使用 JSON_PARSE (https://docs.aws.amazon.com/redshift/latest/dg/JSON_PARSE.html) 函数将 JSON 值插入到 SUPER 数据类型中。但是,在 Snowflake 中,不能在 VALUES 子句中使用 PARSE_JSON 函数将 JSON 值插入到 VARIANT 数据类型中。相反,可以使用查询来代替 VALUES 子句。有关更多详情,请参阅 Snowflake 文档。您还可以查看 以下文章 (https://community.snowflake.com/s/article/Cannot-use-DATE-FROM-PARTS-function-inside-the-VALUES-clause) 了解更多信息。
相关的 EWIs¶
没有已知问题。
MERGE¶
语法¶
有关更多信息,请参阅 Redshift MERGE 文档 (https://docs.aws.amazon.com/redshift/latest/dg/r_MERGE.html)。
示例源模式¶
UPDATE - INSERT¶
两种语言之间没有区别。该代码以其原始形式保存。
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
DELETE - INSERT¶
两种语言之间没有区别。该代码以其原始形式保存。
输入代码:¶
Redshift¶
输出代码:¶
Snowflake¶
REMOVE DUPLICATES¶
Snowflake 不支持 REMOVE DUPLICATES 子句,但有一种替代方案可以模拟原始行为。
输出代码将包含三个新语句:
TEMPORARY TABLE,其中包含源表和目标表中符合条件的重复值
INSERT 语句,用于合并后将待处理的值添加到目标表中
DROP 语句,用于删除生成的临时表。
这些是必要的,因为 DROP DUPLICATES 行为会从目标表中删除重复值,然后从源表中插入符合条件的值。
输入代码:¶
Redshift¶
Results¶
ID |
NAME |
|---|---|
30 |
Daisy |
22 |
Clarence |
30 |
Tony |
11 |
Alice |
23 |
David |
输出代码:¶
Snowflake¶
Results¶
ID |
NAME |
|---|---|
22 |
Clarence |
30 |
Tony |
30 |
Daisy |
11 |
Alice |
23 |
David |
已知问题¶
没有已知问题。
相关的 EWIs¶
SSC-EWI-RS0009:找不到源表的语义信息。
SSC-FDM-RS0005: Redshift MERGE rejects duplicate source rows. Snowflake allows them, which may produce different results.
UPDATE¶
描述¶
满足条件时更新一个或多个表列中的值。(Redshift SQL 语言参考 Update 语句 (https://docs.aws.amazon.com/redshift/latest/dg/r_UPDATE.html))。
Note
Snowflake 完全支持此语法。
语法¶
示例源模式¶
Setup data¶
Redshift¶
别名¶
尽管 Snowflake 的语法没有指定可以使用表别名,但它是 Snowflake 中的有效代码。
输入代码:¶
Redshift¶
Result¶
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 |
输出代码:¶
Snowflake¶
Result¶
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 |
WITH 子句¶
此子句指定一个或多个公用表表达式 (CTE)。对于非递归 CTEs,输出列名是可选的,但对于递归列名是强制性的。
由于此子句不能在 UPDATE 语句中使用,因此使用相应的查询将其转换为临时表。执行 UPDATE 语句后,删除这些临时表以清理、释放资源,并避免在同一会话中创建表时发生名称冲突。此外,如果存在同名的常规表,它将再次获得优先权,因为该临时表 优先级 高于同一个会话中的任何其他同名表。
非递归 CTE¶
输入代码:¶
Redshift¶
Result¶
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 |
输出代码:¶
Snowflake¶
Result¶
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¶
输入代码:¶
Redshift¶
Result¶
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 |
输出代码:¶
Snowflake¶
Result¶
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 |
SET DEFAULT 值¶
输入代码:¶
Redshift¶
Result¶
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 |
输出代码:¶
Snowflake¶
Result¶
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 |
SET 子句¶
它负责修改列中的值。与 Snowflake 类似,当配置参数 ERROR_ON_NONDETERMINISTIC_UPDATE (https://docs.aws.amazon.com/redshift/latest/dg/r_error_on_nondeterministic_update.html) 设置为 true 时,每行有多个匹配项的更新查询将引发错误。此标志在 Snowflake 中的作用方式相同,甚至使用相同的名称:ERROR_ON_NONDETERMINISTIC_UPDATE。
但是,当关闭此标志时,不会返回错误,而是使用匹配行中的一行来更新目标行。选定的联接行在两种语言中都是非确定且随机的;执行过程中的行为可能不一致,从而可能导致数据不一致。
设置数据:¶
Redshift¶
输入代码:¶
Redshift¶
Result¶
K |
V |
|---|---|
0 |
16 |
输出代码:¶
Snowflake¶
Result¶
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 (https://docs.aws.amazon.com/redshift/latest/dg/r_error_on_nondeterministic_update.html), these values will always be nondeterministic. Snowflake offers recommendations for handling these scenarios. See the Snowflake UPDATE examples for more details.
要复制
WITH子句的功能,需要创建与每个公用表表达式 (CTE) 对应的临时表。但是,如果当前会话中已经存在同名的临时表,则此方法将失败,从而导致错误。
相关的 EWIs¶
没有已知问题。