SnowConvert AI - BigQuery 문제

참고

변환 범위

Google BigQuery용 SnowConvert AI는 현재 TABLES 및 VIEWS에 대한 평가 및 변환을 지원합니다. SnowConvert AI는 다른 유형의 문을 인식할 수 있지만, 이러한 문 유형이 완전히 지원되지는 않습니다.

이 페이지에서는 SnowConvert AI에서 Google BigQuery 문법 요소를 그와 동등한 Snowflake 문법 요소로 변환하는 방법에 대한 포괄적인 참조를 제공합니다. 이 변환 참조에서는 각 변환에 대한 코드 예제, 기능적 동등성 결과, 주요 차이점, 권장 사항, 알려진 문제, 설명을 찾을 수 있습니다.

SSC-EWI-BQ0001

Snowflake는 options 절을 지원하지 않습니다.

경고

이 EWI은 더 이상 사용되지 않습니다. EWI의 최신 버전은 SSC-EWI-0016을 참조하세요.

심각도

Medium

설명

이 EWI는 OPTIONS에 Snowflake에서 지원되지 않는 옵션이 있는 경우 DDL 문에 추가됩니다.

코드 예제

입력 코드:

BigQuery
 CREATE VIEW my_view
OPTIONS (
  expiration_timestamp=TIMESTAMP "2026-01-01 00:00:00 UTC",
  privacy_policy='{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_columns": "ID"}}'
) AS
SELECT column1, column2
FROM my_table;
Copy

출력 코드:

Snowflake
 CREATE VIEW my_view
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0001 - SNOWFLAKE DOES NOT SUPPORT THE OPTIONS: EXPIRATION_TIMESTAMP, PRIVACY_POLICY ***/!!!
OPTIONS(
  expiration_timestamp=TIMESTAMP "2026-01-01 00:00:00 UTC",
  privacy_policy='{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_columns": "ID"}}'
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "03/26/2025",  "domain": "test" }}'
AS
SELECT column1, column2
FROM
  my_table;
Copy
권장 사항
  • 변환되지 않은 식에 수동 변경 사항을 추가합니다.

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

SSC-EWI-BQ0002

마이크로 파티셔닝은 모든 Snowflake 테이블에서 자동으로 수행됩니다.

참고

이 문제는 더 이상 사용되지 않으며 SnowConvert AI에서 더 이상 생성되지 않습니다.

심각도

Medium

설명

이 경고는 partition by 절이 있는 경우 Create table에 추가됩니다. PARTITION BY테이블 분할을 제어하는 선택적 절이지만 Snowflake에서는 지원되지 않습니다.

Snowflake 테이블의 모든 데이터는 인접한 저장소 단위인 마이크로 파티션으로 자동 분할됩니다. 각 마이크로 파티션에는 50MB에서 500MB 사이의 압축되지 않은 데이터가 포함되어 있습니다. 이 크기와 구조는 수백만 또는 수억 개의 마이크로 파티션으로 구성될 수 있는 초대형 테이블의 매우 세분화된 정리를 허용합니다.

Snowflake는 다음을 포함하여 마이크로 파티션에 저장된 모든 행에 대한 메타데이터를 저장합니다.

  • 마이크로 파티션의 각 열에 대한 값 범위입니다.

  • 고유 값의 수입니다.

  • 최적화 및 효율적인 쿼리 처리에 사용되는 추가 속성입니다.

또한 테이블은 삽입/로드되는 데이터의 순서를 사용하여 투명하게 분할됩니다. 자세한 내용은 마이크로 파티셔닝의 이점을 참조하세요.

코드 예제

입력 코드:
BigQuery
 CREATE TABLE table1(
    transaction_id INT, 
    transaction_date DATE
)
PARTITION BY transaction_date;
Copy
생성된 코드:
Snowflake
 CREATE TABLE table1 (
    transaction_id INT,
  transaction_date DATE
)
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0002 - MICRO-PARTITIONING IS AUTOMATICALLY PERFORMED ON ALL SNOWFLAKE TABLES. ***/!!!
PARTITION BY transaction_date
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "04/09/2025",  "domain": "test" }}';
Copy

권장 사항

  • 추가적인 사용자 작업은 필요하지 않으며, 참고용일 뿐입니다.

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

SSC-EWI-BQ0003

Snowflake는 차등 개인정보 보호를 지원하지 않습니다.

심각도

Medium

설명

BigQuery를 사용하면 일부 통계 함수에 차등 개인정보 보호를 적용하여 데이터에 노이즈를 발생시키므로 쿼리 결과를 분석할 때 개인에 대한 정보를 빼기가 어려워집니다.

Snowflake에서는 차등 개인정보 보호가 지원되지 않으며, 이를 사용하면 주석으로 처리되고 이 오류가 생성되어 사용자에게 이를 알립니다.

코드 예제

입력 코드:
BigQuery
 SELECT
  WITH DIFFERENTIAL_PRIVACY
    OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=id)
    item,
    COUNT(quantity, contribution_bounds_per_group => (0,100)) total_quantity
FROM professors
GROUP BY item;
Copy
생성된 코드:
Snowflake
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0003 - SNOWFLAKE DOES NOT SUPPORT DIFFERENTIAL PRIVACY. ***/!!!
  WITH DIFFERENTIAL_PRIVACY
    OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=id)
    item,
    COUNT(quantity,
                    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0003 - SNOWFLAKE DOES NOT SUPPORT DIFFERENTIAL PRIVACY. ***/!!! contribution_bounds_per_group => (0,100)) total_quantity
FROM
  professors
GROUP BY item;
Copy

권장 사항

  • 차등 개인정보 보호를 사용하거나 사용하지 않는 쿼리 결과를 분석하면 데이터에 노이즈가 없으므로 결과가 약간 다를 수 있습니다.

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

SSC-EWI-BQ0004

Snowflake는 명명된 윈도우를 지원하지 않습니다.

심각도

Medium

설명

BigQuery는 집계 함수에서 명명된 윈도우의 정의 및 사용을 허용합니다. 이러한 윈도우는 쿼리의 WINDOW 절에 정의되며 해당 함수의 OVER 절 내부에서 사용할 수 있습니다.

Snowflake는 명명된 윈도우 선언을 지원하지 않습니다. 윈도우 정의를 가져와 함수의 OVER 절에서 해당 윈도우의 모든 용도에 직접 적용하는 것이 좋습니다.

코드 예제

입력 코드:
BigQuery
 SELECT 
    COUNT(col1) OVER(myWindow)
FROM 
    test.exampleTable
WINDOW 
    myWindow AS (ORDER BY col2);
Copy
생성된 코드:
Snowflake
 SELECT
    COUNT(col1)
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0004 - SNOWFLAKE DOES NOT SUPPORT NAMED WINDOWS. ***/!!! OVER(myWindow)
FROM
    test.exampleTable
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0004 - SNOWFLAKE DOES NOT SUPPORT NAMED WINDOWS. ***/!!!
WINDOW
    myWindow AS (ORDER BY col2);
Copy

권장 사항

  • 명명된 윈도우 정의를 검토하면 해당 정의를 가져와 정의가 사용되는 함수의 OVER 절에 적용할 수 있습니다. 그러나 BigQuery 및 Snowflake 윈도우 프레임 간의 기능적 차이는 계속 적용되며, 다음 사례를 예로 들어 보겠습니다.

BigQuery:

 SELECT 
    COUNT(col1) OVER(myWindow)
FROM 
    test.exampleTable
WINDOW 
    myWindow AS (ORDER BY col2);
Copy

Snowflake:

 SELECT 
    COUNT(col1) OVER(ORDER BY col2)
FROM 
    test.exampleTable;
Copy

윈도우 프레임에 대한 ORDER BY 절은 BigQuery에서와 같이 전체 쿼리 순서에 영향을 미치지 않으므로 이 두 쿼리는 동일한 행을 생성하지만 Snowflake 결과는 정렬되지 않습니다.

권장 사항

SSC-EWI-BQ0005

Javascript 코드가 검증되지 않았습니다.

심각도

높음

설명

SnowConvert AI는 Javascript 코드를 변환하지 않습니다. BigQuery의 함수에서 추출된 Javascript 코드는 전혀 변경되지 않았으므로, 이 코드가 Snowflake에서 작동하려면 약간의 조정이 필요할 수 있습니다.

코드 예제

입력 코드:
BigQuery
 CREATE FUNCTION test.languageJs (x integer, y integer)
RETURNS integer
LANGUAGE js
AS "return x * y;";
Copy
생성된 코드:
Snowflake
 CREATE FUNCTION test.languageJs (x integer, y integer)
RETURNS DOUBLE
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "07/16/2025",  "domain": "no-domain-provided" }}'
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0005 - JAVASCRIPT CODE HAS NOT BEEN VALIDATED. ***/!!!
AS
$$
return x * y;
$$;
Copy

권장 사항

  • 배포하기 전에 모든 Javascript 코드를 검토합니다.

  • Snowflake의 Javascript 매개 변수는 대문자여야 합니다.

  • 자세한 내용은 Snowflake의 Javascript UDFs 소개를 참조하세요.

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

SSC-EWI-BQ0006

ST_GEOGFROMTEXT 함수의 지향 매개 변수는 Snowflake에서 지원되지 않습니다.

심각도

낮음

설명

이 경고는 Snowflake에서 지원되지 않는 지향 매개 변수가 ST_GEOGFROMTEXT 함수에 지정된 경우에 추가됩니다. 이 매개 변수가 TRUE로 설정된 경우 입력의 모든 다각형은 다음과 같이 방향이 지정되는 것으로 가정됩니다. 즉, 입력 꼭짓점의 순서로 다각형 경계를 따라 걷는 경우 다각형의 내부는 왼쪽에 있습니다. 이를 통해 WKT는 반구보다 큰 다각형을 나타낼 수 있습니다. 지향성이 FALSE이거나 생략된 경우, 이 함수는 면적이 가장 작은 다각형을 반환합니다.

코드 예제

입력 코드:
BigQuery
 SELECT ST_GEOGFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', TRUE);
Copy
생성된 코드:
Snowflake
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0006 - ORIENTED PARAMETER IN THE ST_GEOGFROMTEXT FUNCTION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
 ST_GEOGFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))');
Copy

권장 사항

SSC-EWI-BQ0007

이스케이프 시퀀스는 Snowflake에서 유효하지 않습니다.

심각도

낮음

설명

종형 문자(\a) 및 세로 문자(\v)는 BigQuery에서 유효한 이스케이프 시퀀스이지만, Snowflake에서는 유효하지 않습니다.

이 경고는 BigQuery 코드를 변환할 때 종형 문자 또는 세로 문자 이스케이프 시퀀스가 발견되는 경우에 추가됩니다. Snowflake 이스케이프 시퀀스에 대해 자세히 알아보세요.

코드 예제

입력 코드:
BigQuery
 SELECT "\a";
SELECT "\v";
Copy
생성된 코드:
Snowflake
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0007 - ESCAPE SEQUENCE \a IS NOT VALID IN SNOWFLAKE. ***/!!!
    '\a';
SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0007 - ESCAPE SEQUENCE \v IS NOT VALID IN SNOWFLAKE. ***/!!!
    '\v';
Copy

권장 사항

SSC-EWI-BQ0008

8자리 16진수 유니코드 이스케이프 시퀀스는 Snowflake에서 지원되지 않습니다.

심각도

낮음

설명

BigQuery는 8자리 16진수의 유니코드 시퀀스를 지원합니다. Snowflake는 이러한 종류의 유니코드 시퀀스를 지원하지 않습니다.

이 경고는 BigQuery 코드를 변환할 때 8자리 16진수 유니코드 시퀀스가 발견되는 경우에 추가됩니다. BigQuery 이스케이프 시퀀스에 대해 자세히 알아보세요.

코드 예제

입력 코드:
Snowflake
 SELECT "\U00100000";
Copy
생성된 코드:
첫 번째 탭
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
    '\U00100000';
Copy

권장 사항

SSC-EWI-BQ0009

SnowConvert AI가 올바른 반환 테이블 절을 생성할 수 없습니다.

심각도

높음

설명

Snowflake에는 CREATE TABLE FUNCTION 문에 유효한 RETURNS TABLE 절이 필요합니다. SnowConvert AI는 처음부터 새로 만들어야 합니다. 이를 수행하려면 결과 테이블의 열 유형을 올바르게 추론하기 위해 CREATE TABLE FUNCTION 쿼리에 대한 분석이 수행되지만, 현재 SnowConvert AI에 반환 절을 올바르게 작성하는 데 제한이 있는 시나리오가 있을 수 있습니다.

이러한 시나리오는 향후 고려될 예정이지만, 그동안 이 오류가 추가될 예정입니다.

코드 예제

입력 코드:
BigQuery
 CREATE TABLE FUNCTION tableValueFunction2()
AS
SELECT *
REPLACE("John" AS employee_name)
FROM employees;
Copy
생성된 코드:
Snowflake
 CREATE FUNCTION tableValueFunction2 ()
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0009 - SnowConvert AI WAS UNABLE TO GENERATE THE CORRECT RETURN TABLE CLAUSE, DUE TO MISSING REFERENCES. ***/!!!
RETURNS TABLE (
)
AS
  $$
      SELECT
        * REPLACE("John" AS employee_name) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ExceptReplaceOperator' NODE ***/!!!
      FROM
        employees
  $$;
Copy

권장 사항

SSC-EWI-BQ0011

복잡한 데이터 타입의 세션 변수 할당은 Snowflake에서 지원되지 않음

심각도

Medium

설명

BigQuery에서는 스크립트 수준에서 변수를 선언하면 전체 스크립트에서 변수를 사용할 수 있으며, Snowflake SQL 변수에서 이 동작을 복제하기 위해 사용됩니다.

그러나 ARRAY, GEOGRAPHY, STRUCT, JSON과 같이 복잡한 데이터 타입의 변수를 선언하면 Snowflake에서 SQL 변수에 값을 설정하려고 할 때 실패합니다. SnowConvert AI가 이러한 사례 중 하나를 감지하면 이 EWI가 SQL 변수 선언에 추가됩니다.

이러한 타입의 변수는 블록 문 및 기타 프로시저 문 내에서 문제 없이 선언할 수 있습니다. EWI는 스크립트 수준에서 선언된 변수에만 적용됩니다.

코드 예시

입력 코드:
BigQuery
 CREATE TABLE test.JsonTable
(
    col1 JSON
);

DECLARE myVar1 JSON DEFAULT JSON'{"name": "John", "age": 30}';

INSERT INTO test.JsonTable VALUES (myVar1);

BEGIN
    DECLARE myVar2 JSON DEFAULT JSON'{"name": "Mike", "age": 27}';
    INSERT INTO test.JsonTable VALUES (myVar2);
END;

SELECT col1 FROM test.JsonTable;
Copy
생성된 코드:
Snowflake
 CREATE TABLE test.JsonTable
(
    col1 VARIANT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "07/02/2025",  "domain": "no-domain-provided" }}';

!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0011 - SESSION VARIABLE ASSIGNMENT OF COMPLEX DATATYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
SET myVar1 = (
    SELECT
        PARSE_JSON('{"name": "John", "age": 30}')
);

INSERT INTO test.JsonTable
VALUES ($myVar1);

BEGIN
    LET myVar2 VARIANT DEFAULT PARSE_JSON('{"name": "Mike", "age": 27}');
    INSERT INTO test.JsonTable
    VALUES (:myVar2);
END;

SELECT col1 FROM
    test.JsonTable;
Copy

권장 사항

  • 변수 사용이 단일 범위로 제한되거나 해당 값이 수정되지 않는 경우 변수를 사용하는 범위에서 로컬로 변수를 선언하는 것이 좋습니다. 그러면 문제가 해결됩니다.

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

SSC-EWI-BQ0012

올바른 OBJECT_CONSTRUCT 매개 변수를 생성할 수 없음

심각도

높음

설명

SnowConvert AI는 기호가 올바르게 로드되지 않아 올바른 오브젝트 구문을 생성할 수 없습니다.

코드 예제

입력 코드:
BigQuery
 INSERT INTO test.tuple_sample
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));
Copy
생성된 코드:
Snowflake
 INSERT INTO test.tuple_sample
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0012 - UNABLE TO GENERATE CORRECT OBJECT_CONSTRUCT PARAMETER. SYMBOL INFORMATION COULD NOT BE COLLECTED. ***/!!!
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));
Copy

권장 사항

SSC-EWI-BQ0013

외부 테이블 데이터 형식은 Snowflake에서 지원되지 않습니다.

경고

이 EWI은 더 이상 사용되지 않습니다. EWI의 최신 버전은 SSC-EWI-0029를 참조하세요.

심각도

Medium

설명

Snowflake는 다음 BigQuery 형식을 지원합니다.

BigQuery

Snowflake

AVRO

AVRO

CSV
GOOGLE_SHEETS

CSV

NEWLINE_DELIMITED_JSON
JSON

JSON

ORC

ORC

PARQUET

PARQUET

외부 테이블에 위의 테이블에서 지정되지 않은 다른 FORMAT이 있는 경우, 이 EWI가 생성되어 사용자에게 FORMAT이 지원되지 않음을 알립니다.

코드 예제

입력 코드:
BigQuery
 CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
  format = 'DATASTORE_BACKUP',
  uris = ['gs://backup_bucket/backup_folder/*']
);
Copy
생성된 코드:
Snowflake
 !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0013 - EXTERNAL TABLE DATA FORMAT NOT SUPPORTED IN SNOWFLAKE ***/!!!
CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
  format = 'DATASTORE_BACKUP',
  uris = ['gs://backup_bucket/backup_folder/*']
);
Copy

권장 사항

SSC-EWI-BQ0014

Hive 분할 외부 테이블은 Snowflake에서 지원되지 않습니다.

심각도

Medium

설명

Snowflake는 외부 테이블에서 WITH PARTITION COLUMNS 절이 발견되는 경우 Hive 분할 외부 테이블을 지원하지 않으며, 이 EWI를 사용하여 지원되지 않는 것으로 표시됩니다.

코드 예제

입력 코드:
BigQuery
 CREATE EXTERNAL TABLE test.CustomHivePartitionedTable
WITH PARTITION COLUMNS (
  field_1 STRING,
  field_2 INT64)
OPTIONS (
  uris = ['gs://sc_external_table_bucket/folder_with_parquet/*'],
  format = 'PARQUET',
  hive_partition_uri_prefix = 'gs://sc_external_table_bucket/folder_with_parquet',
  require_hive_partition_filter = false);
Copy
생성된 코드:
Snowflake
 CREATE OR REPLACE TEMPORARY FILE FORMAT SC_TEST_CUSTOMHIVEPARTITIONEDTABLE_FORMAT
TYPE = PARQUET;

CREATE EXTERNAL TABLE test.CustomHivePartitionedTable USING TEMPLATE (
SELECT
  ARRAY_AGG(OBJECT_CONSTRUCT('COLUMN_NAME', COLUMN_NAME, 'TYPE', TYPE, 'NULLABLE', NULLABLE, 'EXPRESSION', EXPRESSION))
FROM
  --** SSC-FDM-0035 - THE INFER_SCHEMA FUNCTION REQUIRES A FILE PATH WITHOUT WILDCARDS TO GENERATE THE TABLE TEMPLATE, REPLACE THE FILE_PATH PLACEHOLDER WITH IT **
  TABLE(INFER_SCHEMA(LOCATION => '@EXTERNAL_STAGE/FILE_PATH', FILE_FORMAT => 'SC_TEST_CUSTOMHIVEPARTITIONEDTABLE_FORMAT'))
)
!!!RESOLVE EWI!!! /*** SSC-EWI-0032 - EXTERNAL TABLE REQUIRES AN EXTERNAL STAGE TO ACCESS gs://sc_external_table_bucket, DEFINE AND REPLACE THE EXTERNAL_STAGE PLACEHOLDER ***/!!!
LOCATION = @EXTERNAL_STAGE
AUTO_REFRESH = false
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0014 - HIVE PARTITIONED EXTERNAL TABLES ARE NOT SUPPORTED IN SNOWFLAKE ***/!!!
WITH PARTITION COLUMNS (
  field_1 STRING,
  field_2 INT64)
PATTERN = 'folder_with_parquet/.*'
FILE_FORMAT = (TYPE = PARQUET)
!!!RESOLVE EWI!!! /*** SSC-EWI-0016 - SNOWFLAKE DOES NOT SUPPORT THE OPTIONS: HIVE_PARTITION_URI_PREFIX, REQUIRE_HIVE_PARTITION_FILTER. ***/!!!
OPTIONS(
  hive_partition_uri_prefix = 'gs://sc_external_table_bucket/folder_with_parquet',
  require_hive_partition_filter = false
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "07/02/2025",  "domain": "no-domain-provided" }}';
Copy

권장 사항

SSC-EWI-BQ0015

외부 테이블에는 외부 위치에 액세스하고 EXTERNAL_STAGE 자리 표시자를 정의하고 바꾸기 위한 외부 스테이지가 필요합니다.

경고

이 EWI은 더 이상 사용되지 않습니다. EWI의 최신 버전은 SSC-EWI-0032를 참조하세요.

설명

CREATE EXTERNAL TABLE 문을 변환할 때, SnowConvert AI는 Snowflake에서 외부 위치와 연결하기 위해 생성된 외부 스테이지로 바꿔야 하는 EXTERNAL_STAGE 자리 표시자를 생성합니다.

Snowflake 계정에서 필요한 저장소 통합 및 외부 스테이지를 설정하려면 다음 가이드를 참조하세요.

코드 예제

입력 코드:
BigQuery
 CREATE OR REPLACE EXTERNAL TABLE test.Employees_test
(
  Employee_id INTEGER,
  Name STRING,
  Mail STRING,
  Position STRING,
  Salary INTEGER
)
OPTIONS(
  FORMAT='CSV',
  SKIP_LEADING_ROWS=1,
  URIS=['gs://sc_external_table_bucket/folder_with_csv/Employees.csv']
);
Copy
생성된 코드:
Snowflake
CREATE OR REPLACE EXTERNAL TABLE test.Employees_test
(
  Employee_id INTEGER AS CAST(GET_IGNORE_CASE($1, 'c1') AS INTEGER),
  Name STRING AS CAST(GET_IGNORE_CASE($1, 'c2') AS STRING),
  Mail STRING AS CAST(GET_IGNORE_CASE($1, 'c3') AS STRING),
  Position STRING AS CAST(GET_IGNORE_CASE($1, 'c4') AS STRING),
  Salary INTEGER AS CAST(GET_IGNORE_CASE($1, 'c5') AS INTEGER)
)
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0015 - EXTERNAL TABLE REQUIRES AN EXTERNAL STAGE TO ACCESS gs://sc_external_table_bucket, DEFINE AND REPLACE THE EXTERNAL_STAGE PLACEHOLDER ***/!!!
LOCATION = @EXTERNAL_STAGE
AUTO_REFRESH = false
PATTERN = 'folder_with_csv/Employees.csv'
FILE_FORMAT = (TYPE = CSV SKIP_HEADER =1);

권장 사항

  • Snowflake 계정에서 외부 연결을 설정하고 EXTERNAL_STAGE 자리 표시자를 대체하여 변환을 완료합니다.

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

SSC-EWI-BQ0016

여러 UNNEST 연산자가 있는 Select *는 모호성을 생성합니다.

심각도

Medium

설명

UNNEST 연산자에 대한 SnowConvert 변환의 일부로 FLATTEN 함수가 사용되며, 이 함수는 THIS 또는 PATH 열과 같은 UNNEST 연산자 기능을 에뮬레이션하는 데 필요하지 않은 여러 열을 생성합니다.

UNNEST 연산자가 있는 SELECT *가 발견된 경우, SnowConvert는 EXCLUDE 키워드를 사용하여 불필요한 열을 제거합니다. 그러나 여러 UNNEST 연산자가 동일한 문에서 사용되는 경우, 모호성 문제로 인해 열을 제거할 수 없으며 이러한 케이스를 표시하기 위해 EWI가 생성됩니다.

필요한 열만 지정하고 이 문제를 해결하기 위해 SELECT 식 목록을 확장하는 것이 좋습니다.

코드 예제

입력 코드:
BigQuery
SELECT * FROM UNNEST ([10,20,30]);

SELECT * FROM UNNEST ([10,20,30]) AS numbers, UNNEST(['Hi', 'Hello', 'Bye']) AS words;
Copy
생성된 코드:
Snowflake
SELECT
* EXCLUDE(SEQ, KEY, PATH, THIS, INDEX)
FROM
TABLE(FLATTEN(INPUT => [10,20,30])) AS F0_ (
SEQ,
KEY,
PATH,
INDEX,
F0_,
THIS
);

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0016 - SELECT * WITH MULTIPLE UNNEST OPERATORS WILL RESULT IN COLUMN AMBIGUITY IN SNOWFLAKE ***/!!!
 * FROM
TABLE(FLATTEN(INPUT => [10,20,30])) AS numbers (
SEQ,
KEY,
PATH,
INDEX,
numbers,
THIS
),
TABLE(FLATTEN(INPUT => ['Hi', 'Hello', 'Bye'])) AS words (
SEQ,
KEY,
PATH,
INDEX,
words,
THIS
);
Copy

SSC-EWI-BQ0017

구조체 배열의 중첩 해제는 지원되지 않습니다.

심각도

Medium

설명

구조체 BigQuery 배열의 중첩을 해제하면 각 구조체 필드에 대한 열을 생성하고 구조체 값을 해당 열로 분할하지만, 이 동작은 현재 지원되지 않습니다. SnowConvert에서 UNNEST 연산자가 구조체 배열에 적용되는 것을 감지할 때마다 이 EWI가 생성됩니다.

코드 예제

입력 코드:
BigQuery
CREATE TABLE test.myTestTable
(
  column1 ARRAY<STRUCT<x INT64, y STRING, z STRUCT<a INT64, b INT64>>>
);

SELECT structValues FROM test.myTestTable AS someTable, UNNEST(someTable.column1) AS structValues;
Copy
생성된 코드:
Snowflake
CREATE TABLE test.myTestTable
(
  column1 ARRAY DEFAULT []
);

SELECT structValues FROM
  test.myTestTable AS someTable,
  !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0017 - UNNEST OF AN ARRAY OF STRUCTS IS NOT SUPPORTED ***/!!! UNNEST(someTable.column1) AS structValues;
Copy