SnowConvert AI - IBM DB2 문제

SSC-EWI-DB0001

WITH ROW ACCESS POLICY CLAUSE DOES NOT SUPPORT MULTIPLE DECLARATION

심각도

낮음

설명

이 메시지는 SnowConvert AI가 동일한 CREATE TABLE 절 내에서 여러 보안 레이블 열 옵션을 감지할 때마다 표시됩니다. 보안 레이블은 행 액세스 정책 절로 변환되며 Snowflake는 여러 행 액세스 정책 선언을 지원하지 않습니다. 따라서 둘 이상의 보안 레이블이 발견되면 EWI를 통해 주석 처리됩니다.

코드 예제

입력 코드:
 CREATE TABLE T1
(
COL1 VARCHAR(10) COLUMN SECURED WITH securityLabel1,
COL2 VARCHAR(10) COLUMN SECURED WITH securityLabel2
);
출력 코드:
CREATE TABLE T1
(
COL1 VARCHAR(10),
COL2 VARCHAR(10)
)
WITH ROW ACCESS POLICY securityLabel1 ON (
COL1
)
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0001 - WITH ROW ACCESS POLICY CLAUSE DOES NOT SUPPORT MULTIPLE DECLARATION IN SNOWFLAKE ***/!!!
WITH ROW ACCESS POLICY securityLabel2 ON (
COL2
)
;

권장 사항

  • 코드를 검토하고 CREATE TABLE 절 내부에 보안 레이블이 하나만 있는지 확인합니다.

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.

SSC-EWI-DB0003

PERIOD 정의는 SNOWFLAKE에서 지원되지 않습니다.

심각도

Medium

설명

DB2 temporal tables do not have a functional equivalent in Snowflake. When an application-period or system-period temporal table declaration is found in the CREATE TABLE columns, that column is commented out from the resulting script. The behavior of the SELECT statement will differ from Snowflake because temporal tables are not part of the Snowflake solution and this causes the result to be different if the Select statement is migrated partially, see the example below for more information about this.

Select 쿼리

 SELECT 
  ID,
  Start,
  END
FROM 
  timetable 
FOR system_time as of '2022-05-09-16.20.17.0';
결과

ID

START

END

1001

19:45.3

22:39.5

1002

19:45.5

22:39.6

1003

19:45.6

22:39.8

1004

19:45.7

00:00.0

1005

19:45.8

00:00.0

1006

19:46.0

00:00.0

7

16:21.8

00:00.0

SELECT 문이 부분적으로 마이그레이션되면 아래와 같이 매우 다른 결과가 표시됩니다.

Select 쿼리
 SELECT 
  ID,
  Start,
  END
FROM 
  timetable 
-- FOR system_time as of '2022-05-09-16.20.17.0';
결과

ID

START

END

2001

22:39.5

00:00.0

2002

22:39.6

00:00.0

2003

22:39.8

00:00.0

1004

19:45.7

00:00.0

1005

19:45.8

00:00.0

1006

19:46.0

00:00.0

7

16:21.8

00:00.0

코드 예제

DB2
테이블 만들기
CREATE TABLE TestTable (
COL1 DATE,
COL2 DATE,
PERIOD SYSTEM_TIME (COL1, COL2),
PERIOD BUSINESS_TIME (COL1, COL2)
Select 쿼리
SELECT
   *
FROM
   Table1
FOR SYSTEM_TIME AS of Value
Snowflake
Create Table
CREATE TABLE TestTable (
COL1 DATE,
COL2 DATE,
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0003 - PERIOD SPECIFICATION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
PERIOD SYSTEM_TIME (COL1, COL2),
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0003 - PERIOD SPECIFICATION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
PERIOD BUSINESS_TIME (COL1, COL2)
)
Select 쿼리
SELECT
   *
FROM
Table1
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0003 - PERIOD SPECIFICATION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
FOR SYSTEM_TIME AS of Value

권장 사항

SSC-EWI-DB0004

OUTER TABLE REFERENCE NOT APPLICABLE IN SNOWFLAKE

심각도

낮음

설명

이 메시지는 SELECT 문 내부의 FROM 절에서 OUTER 테이블 참조가 발견되는 경우에 표시됩니다. 이 절은 SELECT 문의 중간 결과 테이블에 FROM 하위 테이블을 포함하는 데 사용됩니다. 하위 테이블은 DB2 데이터베이스의 형식화된 테이블과 관련이 있으며, CREATE TABLE 문의 OF 절을 사용하여 생성됩니다. 이 역시 Snowflake에서 지원되지 않습니다.

코드 예제

입력 코드:
Select * from OUTER(ATable);
Select * from ONLY(ATable);
출력 코드:
Select * from
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0004 - OUTER TABLE REFERENCE IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
OUTER(ATable) AS AliasName;

Select * from
ATable;

권장 사항

SSC-EWI-DB0005

뷰에서 데이터 조작이 지원되지 않습니다

심각도

Medium

설명

이 메시지는 CREATE VIEW에서 CREATE VIEW의 행 데이터 조작관 관련된 노드 또는 절이 발견되는 경우에 표시됩니다. DB2에서는 VIEW에서 직접 행을 삽입하거나 업데이트할 수 있지만, Snowflake에서는 이 기능이 지원되지 않으므로 이 기능과 관련된 노드 또는 절이 주석 처리되고 이 EWI가 추가됩니다.

코드 예제

입력 코드:
CREATE VIEW TestTableId2 AS Select * from TestTableId1 WITH ROW MOVEMENT;
출력 코드:
 CREATE VIEW TestTableId2
 COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "db2",  "convertedOn": "09/02/2025",  "domain": "no-domain-provided" }}'
 AS Select * from
  TestTableId1
 !!!RESOLVE EWI!!! /*** SSC-EWI-DB0005 - MANIPULATION OF DATA IN VIEWS IS NOT SUPPORTED. ***/!!!
 WITH ROW MOVEMENT;

권장 사항

SSC-EWI-DB0006

INTERMEDIATE RESULT TABLE IS NOT SUPPORTED

심각도

Medium

설명

이 메시지는 FROM 절에서 DATA CHANGE TABLE REFERENCE가 발견된 경우에 표시됩니다. DATA CHANGE TABLE REFERENCE는 DATA CHANGE TABLE REFERENCE에 포함된 UPDATE, DELETE, INSERT 문에 의해 변경된 행으로 구성된 중간 테이블을 지정합니다.

Snowflake에서는 행을 수정하는 동시에 테이블의 결과 세트를 반환할 수 없으므로 이 기능이 지원되지 않으며, SELECT가 주석 처리됩니다.

코드 예제

DB2 입력 코드:
Select 문
 SELECT
   *
FROM
   OLD Table(UPDATE T1 SET NAME = 'Tony' where ID = 4)
Update 문
 UPDATE (SELECT EMPNO, SALARY, COMM,
     AVG(SALARY) OVER (PARTITION BY WORKDEPT),
     AVG(COMM) OVER (PARTITION BY WORKDEPT)
     FROM EMPLOYEE E) AS E(EMPNO, SALARY, COMM, AVGSAL, AVGCOMM)
   SET (SALARY, COMM) = (AVGSAL, AVGCOMM)
   WHERE EMPNO = '000120';
   
 UPDATE TABLE5
INCLUDE (col1 INT, col2 Varchar(10))
SET Column1 = 1;
Snowflake 출력 코드:
Select 문
SELECT
   *
FROM
   !!!RESOLVE EWI!!! /*** SSC-EWI-DB0006 - INTERMEDIATE RESULT TABLE IS NOT SUPPORTED. ***/!!!
   OLD Table(UPDATE T1 SET NAME = 'Tony' where ID = 4)
Update 문
UPDATE
       !!!RESOLVE EWI!!! /*** SSC-EWI-DB0006 - INTERMEDIATE RESULT TABLE IS NOT SUPPORTED. ***/!!!
 (SELECT EMPNO, SALARY, COMM,
       AVG(SALARY) OVER (PARTITION BY WORKDEPT),
       AVG(COMM) OVER (PARTITION BY WORKDEPT)
       FROM EMPLOYEE E) AS E(EMPNO, SALARY, COMM, AVGSAL, AVGCOMM)
       SET
       SALARY = AVGSAL,
       COMM = AVGCOMM
WHERE EMPNO = '000120';

UPDATE TABLE5
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0006 - INTERMEDIATE RESULT TABLE IS NOT SUPPORTED. ***/!!!
INCLUDE (col1 INT, col2 Varchar(10))
SET Column1 = 1;

권장 사항

SSC-EWI-DB0007

INSERT 대상 이름으로 수행하는 쿼리는 지원되지 않습니다.

심각도

Medium

설명

DB2와 달리, Snowflake는 INSERT 문을 대상으로 SELECT 쿼리 결과를 사용할 수 없으며, 대신 데이터를 테이블 또는 구체화된 뷰에 직접 삽입해야 합니다.

코드 예제

DB2
쿼리
 INSERT INTO
   (SELECT * FROM SOMEOTHERTABLE)
VALUES
   (DEFAULT);
Snowflake
쿼리
 INSERT INTO
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0007 - QUERY AS INSERT TARGET NAME IS NOT SUPPORTED ***/!!!
   (SELECT * FROM SOMEOTHERTABLE)
VALUES
   (DEFAULT);

권장 사항

SSC-EWI-DB0008

DELETE 정의는 SUPPORTED에서 지원되지 않습니다.

심각도

Medium

설명

Snowflake는 DELETE 문의 FROM 절에서 SELECT 쿼리 사용을 지원하지 않습니다. DELETE 문이 부분적으로 마이그레이션되면 FROM 절이 비어 있으므로 불완전한 문이 표시됩니다.

코드 예제

DB2
Select 쿼리
 DELETE FROM (
SELECT * FROM table1
)
Snowflake
Select 쿼리
DELETE FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0008 - DELETE FROM SELECT STATEMENT IS NOT SUPPORTED. ***/!!!
 (
SELECT * FROM table1
)

권장 사항

SSC-EWI-DB0009

POSITIONED STATEMENT IS NOT SUPPORTED.

심각도

Medium

설명

Snowflake는 FROM 문 및 UDATE 문에서 커서 사용을 지원하지 않습니다. 해당 문이 부분적으로 마이그레이션되면 커서가 포함된 WHERE 절이 제거되므로 전체 테이블을 삭제하거나 업데이트하는 것이 위험해집니다.

코드 예제

DB2
Delete 문
 DELETE FROM table1 
WHERE CURRENT OF cursor1
Update 문
 UPDATE table1
     SET col1 = 1
     WHERE CURRENT OF cursor1
Snowflake
Delete 문
DELETE FROM
table1
WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0009 - POSITIONED CURRENT OF IS NOT SUPPORTED. ***/!!! CURRENT OF cursor1
Update 문
UPDATE TABLE1
SET Column1 = 1
WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0009 - POSITIONED CURRENT OF IS NOT SUPPORTED. ***/!!!
 CURRENT OF cursor1;

권장 사항

SSC-EWI-DB0010

ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE

심각도

Medium

설명

이 메시지는 설정 중인 정형화 타입의 특성을 지정하는 경우에 표시됩니다(특성 할당이라고 함). 정형화 타입은 상위 유형에서 속성을 상속할 수 있는 하위 유형일 수 있습니다.

Snowflake는 이러한 타입의 구조를 지원하지 않습니다.

For more information, see the DB2 CREATE TYPE (structured) documentation.

코드 예제

DB2
 UPDATE CIRCLES
     SET C..CENTER..X = C..CENTER..Y,
       C..CENTER..Y = C..CENTER..X
     WHERE ID = 999;
Snowflake
UPDATE CIRCLES
     SET
          !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!! C..CENTER..X =
          !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!! C..CENTER..Y,
          !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
       C..CENTER..Y =
                      !!!RESOLVE EWI!!! /*** SSC-EWI-DB0010 - ATTRIBUTE NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!! C..CENTER..X
     WHERE ID = 999

권장 사항

SSC-EWI-DB0011

뷰에서 데이터 조작이 지원되지 않습니다

심각도

Medium

설명

이 메시지는 할당 절에 Snowflake에서 지원하지 않는 식이 포함된 경우에 표시됩니다.

사례

Update 문

할당 절이 행 선택의 다중 열 할당을 제시하는 경우, 이에 대한 예제는 코드 예제 섹션에서 확인할 수 있습니다.

코드 예제

DB2
 UPDATE EMPLOYEE EU
    SET (EU.COM, EU.SALARY) = (SELECT ES.SALARY FROM EMPLOYEE ES WHERE ES.WORKDEPT = EU.WORKDEPT)
    WHERE EU.EMPNO = '000120';
Snowflake
UPDATE EMPLOYEE EU
    SET
        !!!RESOLVE EWI!!! /*** SSC-EWI-DB0011 - ASSIGNMENT CLAUSE TYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
 (EU.COM, EU.SALARY) = (SELECT ES.SALARY FROM
         EMPLOYEE ES WHERE ES.WORKDEPT = EU.WORKDEPT)
    WHERE EU.EMPNO = '000120';

권장 사항

SSC-EWI-DB0012

INSERTION 대상에 유효하지 않은 이름이 있습니다. 뷰 이름 사용은 SNOWFLAKE에서 지원되지 않습니다

심각도

Medium

설명

Snowflake는 INSERT 대상 이름 문에서 뷰 이름 사용을 지원하지 않습니다.

코드 예제

DB2
 CREATE VIEW VIEW1 AS SELECT * FROM T;
INSERT INTO VIEW1 (COL1, COL2) VALUES (NULL, DEFAULT);
Snowflake
 CREATE VIEW PUBLIC.VIEW1
AS SELECT * FROM
PUBLIC.T;

!!!RESOLVE EWI!!! /*** SSC-EWI-DB0012 - INVALID NAME AS INSERTION TARGET, USE OF VIEW NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
INSERT INTO VIEW1 (COL1, COL2) VALUES (NULL,DEFAULT);

권장 사항

SSC-EWI-DB0013

DELETE 대상에 유효하지 않은 이름이 있습니다. 뷰 이름 사용은 SNOWFLAKE에서 지원되지 않습니다

심각도

Medium

설명

Snowflake는 DELETE 대상 이름 문에서 뷰 이름 사용을 지원하지 않습니다. 이러한 이유로 결과 쿼리가 유효하지 않을 수 있습니다.

코드 예제

DB2
 CREATE VIEW VIEW1 AS SELECT * FROM T;
DELETE FROM VIEW1
Snowflake
 CREATE VIEW PUBLIC.VIEW1
AS SELECT * FROM
PUBLIC.T;


DELETE FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0013 - INVALID NAME AS DELETE TARGET, USE OF VIEW NAME IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
 VIEW1

권장 사항

SSC-EWI-DB0014

외부 테이블 참조의 사용은 SNOWFLAKE에서 지원되지 않습니다

심각도

Medium

설명

Snowflake는 SELECT 문에서 외부 테이블 사용을 지원하지 않습니다. 이러한 이유로 결과 쿼리가 유효하지 않을 수 있습니다.

코드 예제

DB2
 SELECT
   *
FROM
   EXTERNAL SOMENAME AS T1 LIKE TABLE2 USING(COMPRESS NO)
Snowflake
SELECT
   *
FROM
   !!!RESOLVE EWI!!! /*** SSC-EWI-DB0014 - THE USE OF EXTERNAL TABLE REFERENCES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
   EXTERNAL SOMENAME AS T1 LIKE TABLE2 USING(COMPRESS NO)

권장 사항

SSC-EWI-DB0015

The use of Create View Of Type is not supported in Snowflake

심각도

High

설명

This message is shown when SnowConvert AI detects a CREATE VIEW statement that uses the OF type clause. In DB2, typed views are created with the OF type MODE DB2SQL syntax and are based on structured types for object-relational modeling. Snowflake does not support typed views or structured types, so the view definition is marked with this EWI and marked as invalid.

코드 예제

DB2
CREATE VIEW testView
OF Rootview MODE DB2SQL(REF IS oidColumn USER GENERATED)
AS SELECT * FROM testTable;
Snowflake
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0015 - CREATE VIEW OF TYPE IS NOT SUPPORTED ***/!!!
CREATE VIEW testView
OF Rootview MODE DB2SQL(REF IS oidColumn USER GENERATED)
AS SELECT * FROM testTable;

권장 사항

  • Refactor the typed view into a standard view or materialized view that selects from the underlying table(s)

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.

SSC-EWI-DB0016

The use of Unnest Function is not supported in Snowflake

심각도

High

설명

This message is shown when SnowConvert AI detects the UNNEST or TABLE function in a FROM clause. In DB2, these table functions expand arrays or collections into rows (optionally with WITH ORDINALITY for row numbering). Snowflake has different syntax and semantics for array unnesting—FLATTEN is the equivalent—so the DB2 UNNEST/TABLE usage is marked as not supported.

코드 예제

DB2
SELECT
   *
FROM
   UNNEST(arrray) WITH ORDINALITY
Snowflake
SELECT
   *
FROM
   !!!RESOLVE EWI!!! /*** SSC-EWI-DB0016 - UNNEST FUNCTION IS NOT SUPPORTED ***/!!!
   UNNEST(arrray) WITH ORDINALITY;

권장 사항

  • Replace DB2 UNNEST or TABLE with Snowflake FLATTEN to expand arrays into rows. Use FLATTEN(input => array_column) with appropriate column references

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.

SSC-EWI-DB0017

The use of Typed Tables is not supported in Snowflake

심각도

High

설명

This message is shown when SnowConvert AI detects a CREATE TABLE statement that uses the OF type or UNDER clause. In DB2, typed tables are defined with a structured type hierarchy (e.g., OF Student_t UNDER Person) and support inheritance. Snowflake does not support typed tables or structured types, so the table definition is marked with this EWI.

코드 예제

DB2
CREATE TABLE Student OF Student_t UNDER Person
INHERIT SELECT PRIVILEGES;
Snowflake
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0017 - TYPED TABLES ARE NOT SUPPORTED ***/!!!
CREATE TABLE Student OF Student_t UNDER Person
INHERIT SELECT PRIVILEGES;

권장 사항

  • Refactor typed tables into standard tables. Model the type hierarchy with separate tables and foreign keys if inheritance relationships need to be preserved

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.

SSC-EWI-DB0018

The use of Staging Tables is not supported in Snowflake

심각도

High

설명

This message is shown when SnowConvert AI detects a CREATE TABLE statement that defines a staging table using the FOR clause (e.g., CREATE TABLE emp_summary_s FOR emp_summary PROPAGATE IMMEDIATE). In DB2, staging tables are used for materialized query table propagation. Snowflake does not support this construct, so the table definition is marked with this EWI.

코드 예제

DB2
CREATE TABLE emp_summary_s FOR emp_summary PROPAGATE IMMEDIATE;
Snowflake
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0018 - STAGING TABLES ARE NOT SUPPORTED ***/!!!
CREATE TABLE emp_summary_s FOR emp_summary PROPAGATE IMMEDIATE;

권장 사항

  • Use Snowflake streams and tasks, or materialized views with refresh logic, to achieve similar incremental propagation behavior

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.

SSC-EWI-DB0019

The use of Analyze Table Factor is not supported in Snowflake

심각도

낮음

설명

This message is shown when SnowConvert AI detects an ANALYZE_TABLE table factor in a FROM clause. In DB2, ANALYZE_TABLE invokes external analytics (e.g., SAS routines) inline in a query. Snowflake does not support this DB2-specific analytics integration, so the table reference is marked with this EWI.

코드 예제

DB2
SELECT
   *
FROM v1 ANALYZE_TABLE(
   IMPLEMENTATION 'PROVIDER=SAS; ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE; ROUTINE_SOURCE_NAME=SCORING_FUN3;')
ORDER BY 1;
Snowflake
SELECT
   *
FROM
   !!!RESOLVE EWI!!! /*** SSC-EWI-DB0019 - ANALYZE TABLE FACTOR IS NOT SUPPORTED ***/!!!
   v1 ANALYZE_TABLE(
   IMPLEMENTATION 'PROVIDER=SAS; ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE; ROUTINE_SOURCE_NAME=SCORING_FUN3;')
ORDER BY 1;

권장 사항

  • Implement the analytics logic in Snowflake using Snowpark (Python/Java), stored procedures, or external functions, and restructure the query accordingly

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.

SSC-EWI-DB0020

The use of Data Capture is not supported in Snowflake

심각도

High

설명

This message is shown when SnowConvert AI detects the DATA CAPTURE CHANGES (or DATA CAPTURE NONE) clause in a CREATE TABLE statement. In DB2, this clause controls whether changed data is captured for replication (e.g., Q Replication). Snowflake does not support this DB2-specific clause, so it is marked with this EWI.

코드 예제

DB2
CREATE TABLE TestTable
(
   COL1 INT
) DATA CAPTURE CHANGES;
Snowflake
CREATE TABLE TestTable
(
   COL1 INT
)
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0020 - DATA CAPTURE IS NOT SUPPORTED ***/!!!
 DATA CAPTURE CHANGES
;

권장 사항

SSC-EWI-DB0021

The use of Materialized Query is not supported in Snowflake

심각도

낮음

설명

This message is shown when SnowConvert AI detects a CREATE TABLE ... AS statement with materialized query options such as DATA INITIALLY DEFERRED, REFRESH DEFERRED, MAINTAINED BY SYSTEM, or ENABLE QUERY OPTIMIZATION. In DB2, these options define a refreshable materialized query table. Snowflake materialized views use different syntax and semantics, so these options are marked with this EWI.

코드 예제

DB2
CREATE TABLE TRANSCNT (ACCTID, LOCID, YEAR, CNT) AS
  (SELECT ACCOUNTID, LOCATIONID, YEAR, COUNT(*)
     FROM TRANS
     GROUP BY ACCOUNTID, LOCATIONID, YEAR )
     DATA INITIALLY DEFERRED
     REFRESH DEFERRED
     MAINTAINED BY SYSTEM
     ENABLE QUERY OPTIMIZATION;
Snowflake
CREATE TABLE TRANSCNT (ACCTID, LOCID, YEAR, CNT) AS
  (SELECT ACCOUNTID, LOCATIONID, YEAR, COUNT(*)
     FROM TRANS
     GROUP BY ACCOUNTID, LOCATIONID, YEAR )
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0021 - MATERIALIZED QUERY IS NOT SUPPORTED ***/!!!
     DATA INITIALLY DEFERRED
     REFRESH DEFERRED
     MAINTAINED BY SYSTEM
     ENABLE QUERY OPTIMIZATION
;

권장 사항

SSC-EWI-DB0022

The use of With Select Analyzed Table is not supported in Snowflake

심각도

High

설명

This message is shown when SnowConvert AI detects a WITH (CTE) query in which the main SELECT references a table using the ANALYZE_TABLE table factor. DB2 allows inline analytics (e.g., SAS routines) via ANALYZE_TABLE in such contexts. Snowflake does not support this, so the entire WITH query is marked with this EWI.

코드 예제

DB2
WITH sas_score_in (c1,c2) AS
  (SELECT c1,c2 FROM t1)
  SELECT *
    FROM sas_score_in ANALYZE_TABLE(
    IMPLEMENTATION 'PROVIDER=SAS; ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE; ROUTINE_SOURCE_NAME=SCORING_FUN3;');
Snowflake
!!!RESOLVE EWI!!! /*** SSC-EWI-DB0022 - WITH SELECT ANALYZED TABLE IS NOT SUPPORTED ***/!!!
WITH sas_score_in (c1,c2) AS
  (SELECT c1,c2 FROM t1)
  SELECT *
    FROM sas_score_in ANALYZE_TABLE(
    IMPLEMENTATION 'PROVIDER=SAS; ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE; ROUTINE_SOURCE_NAME=SCORING_FUN3;');

권장 사항

  • Refactor the query to remove ANALYZE_TABLE. Implement the analytics logic in Snowflake using Snowpark, stored procedures, or external functions, then integrate results via a separate step or view

  • 추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.