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는 기호가 올바르게 로드되지 않아 올바른 오브젝트 구문을 생성할 수 없습니다.
코드 예제¶
입력 코드:¶
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 |
외부 테이블에 위의 테이블에서 지정되지 않은 다른 FORMAT이 있는 경우, 이 EWI가 생성되어 사용자에게 FORMAT이 지원되지 않음을 알립니다.
코드 예제¶
입력 코드:¶
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_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']
);
생성된 코드:¶
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;