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;
출력 코드:
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;
권장 사항¶
변환되지 않은 식에 수동 변경 사항을 추가합니다.
추가 지원이 필요한 경우 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;
생성된 코드:¶
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" }}';
권장 사항¶
추가적인 사용자 작업은 필요하지 않으며, 참고용일 뿐입니다.
추가 지원이 필요한 경우 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;
생성된 코드:¶
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;
권장 사항¶
차등 개인정보 보호를 사용하거나 사용하지 않는 쿼리 결과를 분석하면 데이터에 노이즈가 없으므로 결과가 약간 다를 수 있습니다.
추가 지원이 필요한 경우 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);
생성된 코드:¶
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);
권장 사항¶
명명된 윈도우 정의를 검토하면 해당 정의를 가져와 정의가 사용되는 함수의
OVER절에 적용할 수 있습니다. 그러나 BigQuery 및 Snowflake 윈도우 프레임 간의 기능적 차이는 계속 적용되며, 다음 사례를 예로 들어 보겠습니다.
BigQuery:
SELECT
COUNT(col1) OVER(myWindow)
FROM
test.exampleTable
WINDOW
myWindow AS (ORDER BY col2);
Snowflake:
SELECT
COUNT(col1) OVER(ORDER BY col2)
FROM
test.exampleTable;
윈도우 프레임에 대한 ORDER BY 절은 BigQuery에서와 같이 전체 쿼리 순서에 영향을 미치지 않으므로 이 두 쿼리는 동일한 행을 생성하지만 Snowflake 결과는 정렬되지 않습니다.
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
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;";
생성된 코드:¶
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;
$$;
권장 사항¶
배포하기 전에 모든 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);
생성된 코드:¶
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))');
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-BQ0007¶
이스케이프 시퀀스는 Snowflake에서 유효하지 않습니다.
심각도¶
낮음
설명¶
종형 문자(\a) 및 세로 문자(\v)는 BigQuery에서 유효한 이스케이프 시퀀스이지만, Snowflake에서는 유효하지 않습니다.
이 경고는 BigQuery 코드를 변환할 때 종형 문자 또는 세로 문자 이스케이프 시퀀스가 발견되는 경우에 추가됩니다. Snowflake 이스케이프 시퀀스에 대해 자세히 알아보세요.
코드 예제¶
입력 코드:¶
BigQuery¶
SELECT "\a";
SELECT "\v";
생성된 코드:¶
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';
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-BQ0008¶
8자리 16진수 유니코드 이스케이프 시퀀스는 Snowflake에서 지원되지 않습니다.
심각도¶
낮음
설명¶
BigQuery는 8자리 16진수의 유니코드 시퀀스를 지원합니다. Snowflake는 이러한 종류의 유니코드 시퀀스를 지원하지 않습니다.
이 경고는 BigQuery 코드를 변환할 때 8자리 16진수 유니코드 시퀀스가 발견되는 경우에 추가됩니다. BigQuery 이스케이프 시퀀스에 대해 자세히 알아보세요.
코드 예제¶
입력 코드:¶
Snowflake¶
SELECT "\U00100000";
생성된 코드:¶
첫 번째 탭¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
'\U00100000';
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
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;
생성된 코드:¶
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
$$;
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
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;
생성된 코드:¶
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;
권장 사항¶
변수 사용이 단일 범위로 제한되거나 해당 값이 수정되지 않는 경우 변수를 사용하는 범위에서 로컬로 변수를 선언하는 것이 좋습니다. 그러면 문제가 해결됩니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-BQ0012¶
올바른 OBJECT_CONSTRUCT 매개 변수를 생성할 수 없음
심각도¶
높음
설명¶
SnowConvert AI is not able to generate the correct object construct due to symbol not being loaded correctly.
코드 예제¶
입력 코드:¶
BigQuery¶
INSERT INTO test.tuple_sample
VALUES
((12, 34)),
((56, 78)),
((9, 99)),
((12, 35));
생성된 코드:¶
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));
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-BQ0013¶
외부 테이블 데이터 형식은 Snowflake에서 지원되지 않습니다.
경고
이 EWI은 더 이상 사용되지 않습니다. EWI의 최신 버전은 SSC-EWI-0029를 참조하세요.
심각도¶
Medium
설명¶
Snowflake는 다음 BigQuery 형식을 지원합니다.
BigQuery |
Snowflake |
|---|---|
AVRO |
AVRO |
CSV |
CSV |
NEWLINE_DELIMITED_JSON |
JSON |
ORC |
ORC |
PARQUET |
PARQUET |
When an external table has other FORMAT not specified in the above table, this EWI will be generated to inform the user that the FORMAT is not supported.
코드 예제¶
입력 코드:¶
BigQuery¶
CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
format = 'DATASTORE_BACKUP',
uris = ['gs://backup_bucket/backup_folder/*']
);
생성된 코드:¶
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/*']
);
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
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);
생성된 코드:¶
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" }}';
권장 사항¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-EWI-BQ0015¶
External table requires an external stage to access an external location, define and replace the EXTERNAL_STAGE placeholder
경고
이 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']
);
생성된 코드:¶
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;
생성된 코드:¶
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
);
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;
생성된 코드:¶
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;