SnowConvert AI - Redshift - SQL 문¶
Redshift용 SnowConvert AI에서 지원되는 모든 문에 대한 변환 참조.
CALL¶
설명¶
저장 프로시저를 실행합니다. CALL 명령에는 프로시저 이름과 입력 인자 값이 포함되어야 합니다. CALL 문을 사용하여 저장 프로시저를 호출해야 합니다. (Redshift SQL Language Reference CALL).
문법 구문¶
샘플 소스 패턴¶
기본 시나리오¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
출력 매개 변수 모드(INOUT, OUT)를 사용하여 호출¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
프로시저 외부 호출의 출력 매개 변수는 작동하지 않습니다.
CREATE DATABASE¶
문법 구문¶
자세한 내용은 Redshift CREATE DATABASE 설명서를 참조하십시오.
샘플 소스 패턴¶
기본 샘플¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
데이터 정렬 절¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
연결 제한 절¶
입력 코드:¶
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 리소스 를 참조하는 데 사용되며, Snowflake에서는 유효하지 않으므로 제거되었습니다.
Owner 절¶
입력 코드¶
Redshift¶
출력 코드¶
Snowflake¶
경고
이 경우에는 개별 사용자가 아닌 역할별로 Snowflake 데이터베이스를 소유하기 때문에 코드에서 소유자 절이 제거됩니다. 자세한 내용은 Snowflake GRANT OWNERSHIP 설명서 를 참조하십시오.
Isolation Level 절¶
입력 코드¶
Redshift¶
출력 코드¶
Snowflake¶
참고
Isolation Level에 대한 변환은 향후 제공될 계획입니다.
관련 EWIs¶
SSC-EWI-0073: 보류 중 함수 동등성 검토
CREATE EXTERNAL TABLE¶
설명 ¶
현재 SnowConvert AI는 CREATE EXTERNAL TABLES를 정규 테이블로 변환합니다. 이 경우 외부 RedShift 테이블에 저장된 데이터가 Snowflake 데이터베이스로 전송되어야 하므로 추가적인 노력이 필요합니다.
문법 구문 ¶
See the Redshift CREATE EXTERNAL TABLE specification for this syntax.
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Create External Table AS¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
권장 사항¶
Snowflake에서 외부 테이블 생성 사용법은 Snowflake의 설명서를 참조하십시오.
관련 EWIs¶
SSC-FDM-0004: 외부 테이블이 일반 테이블로 변환되었습니다.
CREATE MATERIALIZED VIEW¶
설명¶
SnowConvert AI에서 Redshift의 구체화된 뷰는 Snowflake 동적 테이블로 변환됩니다. 동적 테이블을 올바르게 구성하려면 두 가지 필수 매개 변수인 TARGET_LAG 및 WAREHOUSE를 정의해야 합니다. 구성 옵션에서 이러한 매개 변수를 지정하지 않으면 SnowConvert AI는 아래 예에서 볼 수 있듯이 기본적으로 변환 중에 미리 할당된 값으로 설정됩니다.
For more information, see the Redshift CREATE MATERIALIZED VIEW documentation.
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 for this syntax.
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
경고
BACKUP 및 AUTO REFRESH 절은 Snowflake의 동적 테이블에 적용할 수 없으므로 삭제됩니다
관련 Ewis¶
SSC-FDM-0031: 기본적으로 설정된 동적 테이블 필수 매개 변수
CREATE SCHEMA¶
문법 구문¶
자세한 내용은 Redshift CREATE SCHEMA 설명서를 참조하십시오.
샘플 소스 패턴¶
기본 샘플¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Quota 절¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
참고
Snowflake에서는 계획당 할당량을 정의할 수 없습니다. 저장소 관리는 계정과 웨어하우스 수준에서 수행되며, Snowflake가 자동으로 처리합니다. 이러한 이유로 코드에서 제거되었습니다.
관련 EWIs¶
알려진 문제는 없습니다.
CREATE FUNCTION¶
설명¶
이 명령은 데이터베이스 내에서 UDF(사용자 정의 함수)를 정의합니다. 이러한 함수는 SQL 쿼리 내에서 호출할 수 있는 재사용 가능한 논리를 캡슐화합니다.
문법 구문¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
SQL 언어¶
휘발성 카테고리¶
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 언어¶
SnowConvert AI 범위 내에서 CREATE FUNCTION 문에 대한 Python 언어는 지원되지 않습니다. 결과적으로, 언어 plpythonu에는 EWI(SSC-EWI-0073) 플래그가 지정되고 해당 본문에 구문 분석 오류가 함께 표시될 수 있습니다.
입력 코드:¶
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 for this syntax.
샘플 소스 패턴¶
Redshifts 명령의 필수 절과 선택 절을 고려하면, Snowflake로 마이그레이션한 후의 출력은 매우 유사합니다.
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
그러나 Redshift에서 지원되지 않는 한 절의 예외가 있으므로 이 경우를 처리하기 위해 EWI 를 구현했습니다.
관련 EWIs¶
SSC-EWI-RS0003: 스키마 바인딩 문이 없는 경우 Snowflake에서 지원되지 않습니다.
DELETE¶
설명¶
테이블에서 행을 삭제합니다. (Redshift SQL Language Reference 삭제 문).
참고
이 구문은 Snowflake에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
From 절¶
다른 테이블의 정보를 참조하여 테이블을 업데이트합니다. Redshift에서 FROM 키워드는 선택 사항이지만 Snowflake에서는 필수입니다. 따라서 누락된 경우 추가됩니다.
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Where 절¶
조건과 일치하는 행으로 업데이트를 제한합니다. 조건이 true를 반환하면 지정된 SET 열이 업데이트됩니다. 조건은 열에 대한 단순한 조건자이거나 하위 쿼리 결과에 기반한 조건일 수 있습니다. 이 절은 Snowflake에서도 완전히 동일합니다.
입력 코드:¶
Redshift¶
결과¶
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¶
결과¶
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¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
마케팅 |
2 |
5 |
Eve |
마케팅 |
4 |
6 |
Frank |
마케팅 |
4 |
7 |
Grace |
Engineering |
6 |
8 |
Helen |
Engineering |
7 |
9 |
Ivy |
Engineering |
7 |
11 |
Joe |
Engineering |
5 |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
마케팅 |
2 |
5 |
Eve |
마케팅 |
4 |
6 |
Frank |
마케팅 |
4 |
7 |
Grace |
Engineering |
6 |
8 |
Helen |
Engineering |
7 |
9 |
Ivy |
Engineering |
7 |
11 |
Joe |
Engineering |
5 |
WITH 절¶
이 절은 1개 이상의 공통 테이블 식(CTE)을 지정합니다. 출력 열 이름은 비재귀적 CTEs 의 경우 선택 사항이지만 재귀적 열의 경우 필수입니다.
이 절은 DELETE 문에서는 사용할 수 없으므로 해당 쿼리와 함께 임시 테이블로 변환됩니다. DELETE 문이 실행되면 이러한 임시 테이블이 삭제되어 동일한 세션 내에서 테이블을 생성할 때 정리, 리소스 릴리스, 이름 충돌을 방지할 수 있습니다. 또한 같은 이름의 일반 테이블이 있는 경우 임시 테이블이 같은 세션에서 같은 이름의 다른 테이블보다 우선권 을 가지므로 임시 테이블이 다시 우선권을 갖습니다.
비재귀적 CTE¶
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
마케팅 |
2 |
5 |
Eve |
마케팅 |
4 |
6 |
Frank |
마케팅 |
4 |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
마케팅 |
2 |
5 |
Eve |
마케팅 |
4 |
6 |
Frank |
마케팅 |
4 |
재귀 CTE¶
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
10 |
John |
Sales |
3 |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Sales |
2 |
2 |
Bob |
Sales |
1 |
3 |
Charlie |
Sales |
1 |
10 |
John |
Sales |
3 |
구체화된 뷰 삭제하기¶
Redshift에서는 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¶
설명¶
EXECUTEIMMEDIATE문은 단일 작업으로 동적 SQL 문을 빌드하고 실행합니다.네이티브 동적 SQL은
EXECUTEIMMEDIATE문을 사용하여 대부분의 동적 SQL 문을 처리합니다. (Redshift 언어 참조 EXECUTE 문)
문법 구문¶
샘플 소스 패턴¶
연결된 예
입력 코드
Redshift¶
출력 코드
Snowflake¶
함수 변환¶
입력 코드¶
Redshift¶
출력 코드¶
Snowflake¶
쿼리 구문 분석 오류¶
입력 코드¶
Redshift¶
출력 코드¶
Snowflake¶
INTO 절¶
입력 코드¶
Redshift¶
출력 코드¶
Snowflake¶
Known Issues¶
1. Execution results cannot be stored in variables.¶
SnowScripting 은 INTO 또는 BULK COLLECT INTO 절을 지원하지 않습니다. 따라서 다른 수단을 통해 결과를 전달해야 합니다.
2. Dynamic SQL Execution queries may be marked incorrectly as non-runnable.¶
일부 시나리오에서는 실행이 안전하거나 안전하지 않은 것과 관계없이 실행 문에 설명이 붙을 수 있으므로 이를 고려하시기 바랍니다.
관련 EWIs¶
SSC-EWI-0027: 잘못된 쿼리가 있는 변수입니다.
SSC-EWI-0030: 아래 문에서는 동적 SQL이 사용됩니다.
INSERT¶
설명¶
테이블에 새 행을 삽입합니다. (Redshift SQL Language Reference Insert 문).
경고
이 구문은 Snowflake에서 부분적으로 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
기본값¶
기본값을 사용하여 전체 행을 삽입합니다. 기본값이 없는 열이 있는 경우 해당 열에 NULL 값이 삽입됩니다.
이 절은 개별 열을 지정할 수 없습니다. 항상 기본값이 있는 전체 행을 삽입합니다. 또한 NOT NULL 제약 조건이 있는 열은 테이블 정의에 포함할 수 없습니다. Snowflake에서 이 동작을 복제하기 위해 SnowConvert AI는 테이블에 DEFAULT 값이 있는 열을 삽입합니다. 이 작업을 수행하면 모든 열에 대해 기본값을 사용하여 전체 행이 삽입됩니다.
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
마케팅 |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
마케팅 |
쿼리¶
쿼리를 사용하여 테이블에 1개 이상의 행을 삽입합니다. 쿼리에 의해 생성된 모든 행이 테이블에 삽입됩니다. 쿼리는 테이블의 열과 호환되는 열 목록을 반환해야 하지만 열 이름이 일치할 필요는 없습니다. 이 기능은 Snowflake에서 완전히 동일합니다.
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
작업 |
2 |
Hannah Gray |
26000 |
Finance |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
작업 |
2 |
Hannah Gray |
26000 |
Finance |
알려진 문제 ¶
특정 식은 Snowflake의 VALUES 절에서 사용할 수 없습니다. 예를 들어, Redshift에서 JSON_PARSE 함수는 VALUES 절 내에서 JSON 값을 SUPER 데이터 타입에 삽입하는 데 사용할 수 있습니다. 그러나 Snowflake에서는 VALUES 절에서 PARSE_JSON 함수를 사용하여 JSON 값을 VARIANT 데이터 타입에 삽입할 수 없습니다. 대신에, VALUES 절 대신 쿼리를 사용할 수 있습니다. 자세한 내용은 Snowflake 설명서 를 참조하십시오. 자세한 내용은 다음 문서 에서도 확인할 수 있습니다.
관련 EWIs¶
알려진 문제는 없습니다.
MERGE¶
문법 구문¶
자세한 내용은 Redshift MERGE 설명서 를 참조하십시오.
샘플 소스 패턴¶
UPDATE - INSERT¶
두 언어 간에는 차이가 없습니다. 코드는 원래 형태로 유지됩니다.
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
DELETE - INSERT¶
두 언어 간에는 차이가 없습니다. 코드는 원래 형태로 유지됩니다.
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
REMOVE DUPLICATES¶
REMOVE DUPLICATES 절은 Snowflake에서 지원되지 않지만 원래 동작을 에뮬레이션할 수 있는 해결 방법이 있습니다.
출력 코드에는 세 개의 새로운 문이 추가됩니다.
조건과 일치하는 소스 및 대상 테이블의 중복 값이 있는 TEMPORARY TABLE
병합 후 보류 중인 값을 대상 테이블에 추가하는 INSERT 문입니다
생성된 임시 테이블을 삭제하는 DROP 문입니다.
DROP DUPLICATES 동작은 대상 테이블에서 중복 값을 제거한 다음 소스 테이블에서 조건과 일치하는 값을 삽입하므로 이러한 동작이 필요합니다.
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
|---|---|
30 |
Daisy |
22 |
Clarence |
30 |
Tony |
11 |
Alice |
23 |
David |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
|---|---|
22 |
Clarence |
30 |
Tony |
30 |
Daisy |
11 |
Alice |
23 |
David |
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SSC-EWI-RS0009: 소스 테이블에 대한 의미 체계 정보를 찾을 수 없습니다.
SSC-FDM-RS0005: Redshift MERGE rejects duplicate source rows. Snowflake allows them, which may produce different results.
UPDATE¶
설명¶
조건이 충족되면 1개 이상의 테이블 열의 값을 업데이트합니다. (Redshift SQL Language Reference Update 문).
참고
이 구문은 Snowflake에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
별칭¶
Snowflake의 문법에는 테이블 별칭을 사용할 수 있다고 명시되어 있지 않지만 Snowflake에서는 유효한 코드입니다.
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
505000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
405000 |
마케팅 |
5 |
Eve |
455000 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
395000 |
마케팅 |
9 |
Ivy |
485000 |
HR |
10 |
Jack |
425000 |
Engineering |
11 |
Ken |
700000 |
마케팅 |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
475000 |
HR |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
505000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
405000 |
마케팅 |
5 |
Eve |
455000 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
395000 |
마케팅 |
9 |
Ivy |
485000 |
HR |
10 |
Jack |
425000 |
Engineering |
11 |
Ken |
700000 |
마케팅 |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
475000 |
HR |
WITH 절¶
이 절은 1개 이상의 공통 테이블 식(CTE)을 지정합니다. 출력 열 이름은 비재귀적 CTEs 의 경우 선택 사항이지만 재귀적 열의 경우 필수입니다.
이 절은 UPDATE 문에서는 사용할 수 없으므로 해당 쿼리와 함께 임시 테이블로 변환됩니다. UPDATE 문이 실행되면 이러한 임시 테이블이 삭제되어 동일한 세션 내에서 테이블을 생성할 때 정리, 리소스 릴리스, 이름 충돌을 방지할 수 있습니다. 또한 같은 이름의 일반 테이블이 있는 경우 임시 테이블이 같은 세션에서 같은 이름의 다른 테이블보다 우선권 을 가지므로 임시 테이블이 다시 우선권을 갖습니다.
비재귀적 CTE¶
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
500000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
546923 |
마케팅 |
5 |
Eve |
546923 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
546923 |
마케팅 |
9 |
Ivy |
546923 |
HR |
10 |
Jack |
546923 |
Engineering |
11 |
Ken |
700000 |
마케팅 |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
546923 |
HR |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
500000 |
HR |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
546923 |
마케팅 |
5 |
Eve |
546923 |
HR |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
546923 |
마케팅 |
9 |
Ivy |
546923 |
HR |
10 |
Jack |
546923 |
Engineering |
11 |
Ken |
700000 |
마케팅 |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
546923 |
HR |
재귀 CTE¶
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
526666 |
HR |
2 |
Bob |
670000 |
Engineering |
3 |
Charlie |
773333 |
Engineering |
4 |
David |
433333 |
마케팅 |
5 |
Eve |
475000 |
HR |
6 |
Frank |
825000 |
Engineering |
7 |
Grace |
721666 |
Engineering |
8 |
Helen |
423000 |
마케팅 |
9 |
Ivy |
506000 |
HR |
10 |
Jack |
484000 |
Engineering |
11 |
Ken |
743333 |
마케팅 |
12 |
Liam |
670000 |
Engineering |
13 |
Mona |
495668 |
HR |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
526667 |
HR |
2 |
Bob |
670000 |
Engineering |
3 |
Charlie |
773333 |
Engineering |
4 |
David |
433333 |
마케팅 |
5 |
Eve |
475000 |
HR |
6 |
Frank |
825000 |
Engineering |
7 |
Grace |
721667 |
Engineering |
8 |
Helen |
423000 |
마케팅 |
9 |
Ivy |
506000 |
HR |
10 |
Jack |
484000 |
Engineering |
11 |
Ken |
743333 |
마케팅 |
12 |
Liam |
670000 |
Engineering |
13 |
Mona |
495667 |
HR |
SET DEFAULT 값¶
입력 코드:¶
Redshift¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
20000 |
Sales |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
400000 |
마케팅 |
5 |
Eve |
20000 |
Sales |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
390000 |
마케팅 |
9 |
Ivy |
20000 |
Sales |
10 |
Jack |
420000 |
Engineering |
11 |
Ken |
700000 |
마케팅 |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
20000 |
Sales |
출력 코드:¶
Snowflake¶
결과¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
20000 |
Sales |
2 |
Bob |
600000 |
Engineering |
3 |
Charlie |
700000 |
Engineering |
4 |
David |
400000 |
마케팅 |
5 |
Eve |
20000 |
Sales |
6 |
Frank |
750000 |
Engineering |
7 |
Grace |
650000 |
Engineering |
8 |
Helen |
390000 |
마케팅 |
9 |
Ivy |
20000 |
Sales |
10 |
Jack |
420000 |
Engineering |
11 |
Ken |
700000 |
마케팅 |
12 |
Liam |
600000 |
Engineering |
13 |
Mona |
20000 |
Sales |
SET 절¶
열의 값을 수정하는 역할을 합니다. Snowflake와 마찬가지로 행당 여러 개의 일치 항목이 있는 업데이트 쿼리는 구성 매개 변수 ERROR_ON_NONDETERMINISTIC_UPDATE 가 true로 설정된 경우 오류를 throw합니다. 이 플래그는 Snowflake에서도 동일한 방식으로 작동하며 ERROR_ON_NONDETERMINISTIC_UPDATE 라는 동일한 이름을 사용합니다.
그러나 이 플래그를 끄면 오류가 반환되지 않고 일치하는 행 중 하나가 대상 행을 업데이트하는 데 사용됩니다. 선택한 조인된 행은 두 언어 모두에서 비결정적이고 임의적이므로 동작이 실행 간에 일관되지 않을 수 있으며, 이로 인해 데이터 불일치가 발생할 수 있습니다.
설정 데이터:¶
Redshift¶
입력 코드:¶
Redshift¶
결과¶
K |
V |
|---|---|
0 |
16 |
출력 코드:¶
Snowflake¶
결과¶
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, these values will always be nondeterministic. Snowflake offers recommendations for handling these scenarios. See the Snowflake UPDATE examples for more details.
WITH절의 기능을 복제하려면 각 공통 테이블 기능(CTE)를 미러링하는 임시 테이블을 만들어야 합니다. 그러나 현재 세션 내에 같은 이름의 임시 테이블이 이미 존재하는 경우 이 접근법은 실패하여 오류가 발생합니다.
관련 EWIs¶
알려진 문제는 없습니다.