SnowConvert: Redshift 문제¶
SSC-EWI-RS0008¶
심각도¶
높음
설명¶
이 문제는 Redshift가 스트림 수집 에 사용되는 구체화된 뷰에 대해 DELETE 문을 허용하기 때문에 발생합니다. Snowflake로 변환할 때 이러한 구체화된 뷰는 DELETE 작업을 지원하지 않는 동적 테이블이 됩니다.
코드 예제¶
입력 코드:¶
CREATE MATERIALIZED VIEW mv AS
SELECT id, name, department FROM employees WHERE department = 'Engineering';
DELETE FROM mv
WHERE id = 2;
출력 코드:¶
CREATE DYNAMIC TABLE mv
--** SSC-FDM-0031 - DYNAMIC TABLE REQUIRED PARAMETERS SET BY DEFAULT **
TARGET_LAG='1 day'
WAREHOUSE=UPDATE_DUMMY_WAREHOUSE
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/11/2025", "domain": "test" }}'
AS
SELECT id, name, department FROM
employees
WHERE
RTRIM( department) = RTRIM( 'Engineering');
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0008 - MATERIALIZED VIEW IS TRANSFORMED INTO A DYNAMIC TABLE, AND THE DELETE STATEMENT CANNOT BE USED ON DYNAMIC TABLES. ***/!!!
DELETE FROM mv
WHERE id = 2;
권장 사항¶
동적 테이블에서 레코드를 삭제하려면 전체 동적 테이블 정의를 새 정의로 바꿔야 합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-RS0009¶
심각도¶
낮음
설명¶
Snowflake에서 MERGE 문을 사용하는 경우 REMOVE DUPLICATES 절을 사용할 수 없습니다. 동일한 기능을 사용하려면 해결 방법을 구현해야 합니다. 여기에는 코드에 INSERT WHEN NOT MATCHED 절을 추가하는 것이 포함됩니다. 이 절에는 소스 테이블의 열 정보가 필요합니다. 마이그레이션 프로세스에서 소스 테이블의 위치를 찾을 수 없는 경우 필수 열을 생성할 수 없으므로 오류가 발생합니다.
코드 예제¶
입력 코드:¶
MERGE INTO target USING source ON target.id = source.id REMOVE DUPLICATES;
출력 코드:¶
CREATE TEMPORARY TABLE source_duplicates AS
SELECT DISTINCT
source.*
FROM
source
INNER JOIN
target
ON target.id = source.id;
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0009 - SEMANTIC INFORMATION NOT FOUND FOR THE SOURCE TABLE. COLUMNS TO BE INSERTED MAY BE ADDED MANUALLY. ***/!!!
MERGE INTO target
USING source ON target.id = source.id
WHEN MATCHED THEN
DELETE
WHEN NOT MATCHED THEN
INSERT
VALUES ();
INSERT INTO target
SELECT
*
FROM
source_duplicates;
DROP TABLE IF EXISTS source_duplicates CASCADE;
권장 사항¶
마이그레이션된 코드에 소스 테이블이 있는지 확인한 다음 누락된 열이 있으면 삽입 문에 수동으로 추가합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-RS0002¶
심각도¶
Medium
설명¶
Redshift에서 사용할 수 있는 SET 구성 매개 변수
기능은 Snowflake에서 지원되지 않습니다. 자세한 내용은 CREATE PROCEDURE 설명서 를 참조하십시오.
코드 예제¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE procedure2(
IN input_param INTEGER,
OUT output_param NUMERIC
)
AS $$
BEGIN
output_param := input_param * 1.7;
END;
$$
LANGUAGE plpgsql
SET enable_numeric_rounding to ON;
출력 코드:¶
CREATE OR REPLACE PROCEDURE procedure2 (
IN !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'InParameterMode' NODE ***/!!! input_param INTEGER,
OUT output_param NUMERIC
)
RETURNS VARCHAR
LANGUAGE SQL
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0002 - SET CONFIGURATION PARAMETER 'enable_numeric_rounding' IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
SET enable_numeric_rounding to ON
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "09/17/2024" }}'
AS $$
BEGIN
output_param := input_param * 1.7;
END;
$$;
권장 사항¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-RS0003¶
심각도¶
Medium
설명¶
Redshift의 CREATE VIEW
명령에는 뷰를 참조된 데이터베이스 오브젝트(예: 테이블 또는 함수)와 독립적으로 만드는 선택적 절이 포함되어 있습니다. 이 절을 사용할 때는 참조된 모든 오브젝트에 대한 스키마 이름을 포함해야 합니다. 이 기능을 사용하면 아직 존재하지 않는 오브젝트를 참조하는 뷰를 생성할 수 있습니다. 시스템은 뷰가 생성될 때가 아니라 뷰가 쿼리될 때만 참조된 오브젝트가 존재하는지 확인합니다.
현재 Snowflake는 이 기능을 구현할 수 있는 동등한 명령이나 명확한 대안을 제공하지 않습니다. Snowflake의 문서에 따르면, 뷰는 뷰 내에서 참조되는 오브젝트와 마찬가지로 스키마에 특별히 연결되어 있습니다.
뷰 문을 제거하려고 할 때 시스템은 입력 코드에서 참조된 모든 오브젝트를 확인합니다. 모든 참조가 발견되면 뷰 문이 성공적으로 제거됩니다. 참조가 누락된 경우 시스템은 누락된 종속성으로 인해 뷰를 제거할 수 없다는 경고 메시지를 표시합니다.
SnowConvert 는 공급자가 제공한 소스 코드만 분석하며, Snowflake 환경에 이미 존재하는 오브젝트는 확인하지 않습니다. 결과적으로 누락된 참조에 대한 오류 메시지가 표시될 수 있습니다. 이러한 오브젝트가 Snowflake 데이터베이스에 이미 존재하는 경우 이러한 오류를 무시하고 해당 문을 제거하면 됩니다.
코드 예제¶
입력 코드:¶
CREATE VIEW myView AS SELECT col1 FROM public.missingTable
WITH NO SCHEMA BINDING;
출력 코드:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "public.missingTable" **
CREATE VIEW myView
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "09/17/2024" }}'
AS SELECT col1 FROM
public.missingTable
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0003 - WITH NO SCHEMA BINDING STATEMENT CAN NOT BE REMOVED DUE TO MISSING REFERENCES. ***/!!!
WITH NO SCHEMA BINDING;
권장 사항¶
이 문제를 수정하려면 코드에 누락된 참조를 추가하십시오. 오브젝트가 이미 Snowflake 데이터베이스에 있는 경우 문을 안전하게 제거할 수 있습니다.
추가 지원이 필요하면 당사에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-RS0004¶
심각도¶
높음
설명¶
이 문제는 Snowflake가 HLLSKETCH 데이터 타입을 지원하지 않기 때문에 발생합니다.
코드 예제¶
입력 코드:¶
CREATE TABLE table1
(
col_hllsketch HLLSKETCH
);
출력 코드:¶
CREATE TABLE table1
(
col_hllsketch HLLSKETCH !!!RESOLVE EWI!!! /*** SSC-EWI-RS0004 - HLLSKETCH DATA TYPE NOT SUPPORTED IN SNOWFLAKE. ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "09/17/2024" }}';
권장 사항¶
HyperLogLog 를 사용하여 카디널리티를 추정하기 위해 Snowflake가 제공하는 모든 집계 함수 를 검토합니다
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-RS0005¶
심각도¶
높음
설명¶
이 문제는 Snowflake에서 PIVOT/UNPIVOT
작업의 IN 절에서 열 별칭을 사용할 수 없기 때문에 발생합니다. 자세한 내용은 Snowflake 설명서 를 참조하십시오.
코드 예제¶
입력 코드:¶
SELECT *
FROM count_by_color UNPIVOT (
cnt FOR color IN (red AS r, green AS g, blue AS b)
);
출력 코드:¶
SELECT *
FROM
count_by_color UNPIVOT (
cnt FOR color IN (red
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0005 - COLUMN ALIASES CANNOT BE USED IN THE IN CLAUSE OF THE PIVOT/UNPIVOT QUERY IN SNOWFLAKE. ***/!!! AS r, green
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0005 - COLUMN ALIASES CANNOT BE USED IN THE IN CLAUSE OF THE PIVOT/UNPIVOT QUERY IN SNOWFLAKE. ***/!!! AS g, blue
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0005 - COLUMN ALIASES CANNOT BE USED IN THE IN CLAUSE OF THE PIVOT/UNPIVOT QUERY IN SNOWFLAKE. ***/!!! AS b)
);
권장 사항¶
추가 지원이 필요하면 지원 팀에 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-EWI-RS0001¶
심각도¶
Medium
설명¶
Redshift의 CREATE PROCEDURE
문은 선택 사항인 NONATOMIC
트랜잭션 모드 절을 포함합니다. Snowflake에는 이 기능에 대한 직접적인 대응 기능이 없으므로 SMA 는 가능한 경우 변환된 코드를 수정하여 유사한 기능을 복제하려고 시도합니다.
프로시저 내에서 문을 자동으로 커밋하는 NONATOMIC
프로시저 동작은 수동으로 확인해야 합니다. Snowflake는 이 기능을 복제하기 위해 “자동 커밋”계정 매개 변수를 제공합니다. 자동 커밋에 대한 자세한 내용은 Snowflake 설명서 를 참조하십시오.
코드 예제¶
입력 코드:¶
CREATE OR REPLACE PROCEDURE procedure1(parameter int)
Nonatomic
AS
$$
SELECT * from my_table;
$$
LANGUAGE plpgsql;
출력 코드:¶
CREATE OR REPLACE PROCEDURE procedure1 (parameter int)
RETURNS VARCHAR
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0001 - THE NONATOMIC OPTION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
Nonatomic
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "09/17/2024" }}'
AS
$$
SELECT * from
my_table;
$$;
권장 사항¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.