SnowConvert AI - BigQuery 기능적 차이¶
참고
변환 범위
Google BigQuery용 SnowConvert AI는 현재 TABLES 및 VIEWS에 대한 평가 및 변환을 지원합니다. SnowConvert AI는 다른 유형의 문을 인식할 수 있지만, 이러한 문 유형이 완전히 지원되지는 않습니다.
SSC-FDM-BQ0001¶
Snowflake에서 배열에 액세스할 때 범위를 벗어난 양수 인덱스의 경우 오류 대신 NULL이 반환됩니다.
설명¶
Snowflake에서 인덱스로 ARRAY 오브젝트에 액세스할 때 배열 크기보다 큰 인덱스를 지정하면 NULL 값이 반환됩니다. 이는 BigQuery의 동작에 따라 다릅니다. SAFE_OFFSET 또는 SAFE_ORDINAL 함수를 사용하지 않는 한, 범위를 벗어난 인덱스로 ARRAY에 액세스하면 오류가 발생합니다.
This FDM is added to any ARRAY access that is not safe.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
모범 사례¶
Analyze the uses of array access in the code. If there was never the risk of getting an out of bounds error in the original code, no difference will be observed and this FDM can be safely ignored.
If the original code relies on out-of-bounds access raising an error (e.g., for flow control), add explicit bounds checking in Snowflake using
ARRAY_SIZEbefore accessing the array.
SSC-FDM-BQ0002¶
예외 시스템 변수는 Snowflake에서 지원되지 않습니다.
설명¶
BigQuery’s exception system variables (@@error.message, @@error.stack_trace, @@error.statement_text, @@error.formatted_stack_trace) have no direct equivalent in Snowflake. SnowConvert AI replaces exception variable references with OBJECT_CONSTRUCT('SQLERRM', SQLERRM, 'SQLCODE', SQLCODE, 'SQLSTATE', SQLSTATE) as a workaround. This workaround provides basic error information but does not include stack trace or statement text details available in BigQuery. For more information, see Handling Exceptions in Snowflake.
코드 예제¶
입력 코드:¶
BigQuery¶
결과¶
생성된 코드:¶
Snowflake¶
결과¶
모범 사례¶
Snowflake provides three built-in exception variables as an alternative to BigQuery’s
@@errorsystem variables:BigQuery Variable
Snowflake Equivalent
Notes
@@error.messageSQLERRMError message text
@@error.statement_textN/A
No direct equivalent in Snowflake
@@error.stack_traceN/A
No direct equivalent in Snowflake
@@error.formatted_stack_traceN/A
No direct equivalent in Snowflake
N/A
SQLSTATE5-character ANSI SQL state code
N/A
SQLCODE5-digit signed integer error code
Review the generated
OBJECT_CONSTRUCT('SQLERRM', SQLERRM, 'SQLCODE', SQLCODE, 'SQLSTATE', SQLSTATE)workaround and adjust it based on your specific error-handling requirements.For more information, see Handling Exceptions in Snowflake.
SSC-FDM-BQ0003¶
종속 오브젝트 정보가 누락되어 올바른 returns table 절을 생성할 수 없습니다.
참고
This issue is deprecated and no longer generated by SnowConvert AI. Check SSC-EWI-BQ0009 for the issue now generated for this scenario
설명¶
Snowflake에는 CREATE TABLE FUNCTION 문에 유효한 RETURNS TABLE 절이 필요합니다.
If the original BigQuery source code does not have a RETURNS TABLE clause, SnowConvert AI must build one. To do this, an analysis is made to the CREATE TABLE FUNCTION query to properly infer the types of the columns of the resulting table. When SnowConvert AI cannot gather the required information, this EWI is added.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
모범 사례¶
SnowConvert AI가 중요한 정보에 액세스할 수 있도록 항상 입력 코드에 종속 오브젝트 정의를 포함합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-BQ0004¶
INFER_SCHEMA 함수는 테이블 템플릿을 생성하고 FILE_PATH 자리 표시자로 교체하기 위해 와일드카드가 없는 파일 경로가 필요합니다.
경고
이 FDM은 더 이상 사용되지 않습니다. FDM의 최신 버전은 SSC-FDM-0035를 참조하세요.
설명¶
INFER_SCHEMA 함수는 Snowflake에서 파일 구조를 기반으로 테이블의 열 정의를 생성하는 데 사용되며, 테이블 열을 구성하는 데 사용할 파일 또는 폴더의 경로를 지정하는 LOCATION 매개 변수가 필요합니다. 그러나 이 경로는 정규식을 지원하지 않으므로 와일드카드 * 문자는 지원되지 않습니다.
When the table has no columns, SnowConvert AI will check all URIS to find one that does not use wildcards and use it in the INFER_SCHEMA function. When no URI meets such criteria, this FDM and a FILE_PATH placeholder is generated, and the placeholder has to be replaced with the path of one of the files referenced by the external table to generate the table columns.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-BQ0005¶
CSV 헤더 구문 분석은 외부 테이블에서 지원되지 않습니다. 원래 이름과 일치하도록 열의 이름을 바꿔야 합니다.
설명¶
Snowflake external tables do not support parsing the header of CSV files. SKIP_HEADER is used as a workaround to avoid runtime errors, but the resulting table column names will have auto-generated names (c1, c2, …, cN) instead of the original header names.
When SnowConvert AI detects an external table with CSV file format and no explicit column list, it adds the SKIP_HEADER = 1 file format option. The columns must be manually renamed to match the original names from the CSV header.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
모범 사례¶
Rename the auto-generated column names (
c1,c2, …,cN) back to the original column names from the CSV file header.If the original column names are known, use
ALTER TABLE ... RENAME COLUMNor recreate the external table with explicit column definitions.For non-external-table loading scenarios, consider using
MATCH_BY_COLUMN_NAMEwithPARSE_HEADER = TRUEin the file format to automatically match columns by header names.
SSC-FDM-BQ0006¶
Google Drive에서 읽기 기능은 Snowflake에서 지원되지 않습니다. 외부 위치에 파일을 업로드하고 FILE_PATH 자리 표시자를 바꿉니다
설명¶
Snowflake는 Google Drive에 호스팅된 파일에서 데이터 읽기를 지원하지 않으므로, 이 FDM은 이에 대해 알리기 위해 생성됩니다. 외부 스테이지를 통해 액세스할 수 있도록 Google 드라이브 파일을 외부 위치에 업로드합니다.
PATTERN 절은 자동 생성된 FILE_PATH0, FILE_PATH1, …, FILE_PATHN 자리 표시자를 보유합니다. 파일을 외부 위치로 이동한 후 해당 파일 및 폴더 경로로 바꿔야 합니다.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
모범 사례¶
Download the files from Google Drive and upload them to a cloud storage location accessible by Snowflake (e.g., Amazon S3, Azure Blob Storage, or Google Cloud Storage).
Create or configure an external stage in Snowflake pointing to the cloud storage location.
Replace the
FILE_PATHplaceholders in thePATTERNclause with the actual file or folder paths relative to the external stage.
SSC-FDM-BQ0007¶
The GOOGLE_SHEETS format is not supported in Snowflake. CSV file type is used as a workaround.
설명¶
The GOOGLE_SHEETS format is not supported in Snowflake. CSV file type is used as a workaround because the structure of Google Sheets data is similar to CSV.
When SnowConvert AI detects an external table using the GOOGLE_SHEETS format, it produces an external table with the CSV file format instead. The resulting table expects a CSV file rather than a Google Sheets source.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
모범 사례¶
Export the Google Sheets data as CSV files and upload them to a cloud storage location accessible by Snowflake.
Verify that the CSV export preserves the expected data types and formatting, especially for dates, numbers, and text fields with commas.
If the external table also references Google Drive URIs, see SSC-FDM-BQ0006 for instructions on migrating the files to an external stage.
SSC-FDM-BQ0008¶
Where clause references a column of STRUCT type. Comparison operations may produce different results in Snowflake.
설명¶
BigQuery STRUCT types have no direct equivalent in Snowflake. VARIANT is used as a workaround (see SSC-FDM-0034). When a comparison involves a Snowflake VARIANT created from a BigQuery STRUCT, the results may differ because Snowflake compares both keys and values, whereas BigQuery compares only values regardless of field names.
This FDM is added when a WHERE clause comparison involves a column of STRUCT type that was converted to VARIANT.
코드 예제¶
입력 코드:¶
BigQuery¶
Output Code:¶
Snowflake¶
모범 사례¶
Review WHERE clause comparisons involving STRUCT-derived VARIANT columns. If the original BigQuery query compared STRUCTs by value only, extract and compare individual fields explicitly in Snowflake.
For example, replace
WHERE col1 <> col2withWHERE col1:sc1 <> col2:sc2to compare specific field values instead of the entire VARIANT object.For more information on VARIANT comparison behavior, see the Snowflake VARIANT documentation.
SSC-FDM-BQ0010¶
Snowflake에는 geographic 함수가 필요하지 않습니다.
설명¶
Snowflake automatically detects GEOGRAPHY data from WGS 84 formatted strings (WKT, WKB, GeoJSON), so explicit geography conversion functions like ST_GEOGFROMTEXT are not required in VALUES clause inserts. SnowConvert AI removes the function call and passes the string literal directly. This FDM is added to notify that the geography function was removed.
코드 예제¶
입력 코드:¶
BigQuery¶
Output Code:¶
Snowflake¶
모범 사례¶
This FDM can be safely ignored in most cases. Snowflake natively supports GEOGRAPHY data from WKT, WKB, and GeoJSON string formats without requiring explicit conversion functions.
If the removed function performed validation or transformation beyond simple type casting, verify that the inserted data is valid GEOGRAPHY data in Snowflake.
For more information, see the Snowflake GEOGRAPHY data type documentation.
SSC-FDM-BQ0011¶
이 스크립트의 명명된 매개 변수는 Snowflake CLI 변수로 변환되었습니다.
설명¶
BigQuery supports named parameters using the @parameter_name syntax in queries. SnowConvert AI transforms these named parameters to Snowflake CLI variables using the <% parameter_name %> syntax.
To execute the transformed .sql scripts containing named parameters, use Snowflake CLI with variable substitution.
For more information on how to set up and use Snowflake CLI, see What is Snowflake CLI?
코드 예제¶
입력 코드:¶
BigQuery¶
실행 예(bq 쿼리 명령 사용)¶
Output Code:¶
Snowflake¶
실행 예(Snowflake CLI)¶
모범 사례¶
Install and configure Snowflake CLI to execute the transformed scripts with variable substitution using the
-Dflag (e.g.,snow sql -f script.sql -D "param=value").Review each transformed
<% parameter_name %>variable to ensure the parameter name and intended value match the original BigQuery@parameter_nameusage.If the transformed script will be executed outside of Snowflake CLI (e.g., in a Snowflake worksheet), replace
<% parameter_name %>variables with literal values or session variables as appropriate.
SSC-FDM-BQ0012¶
Select * with multiple UNNEST operators will produce column ambiguity in Snowflake
설명¶
As part of the SnowConvert transformation for the UNNEST operator, the FLATTEN function is used, this function generates multiple columns not required to emulate the UNNEST operator functionality like the THIS or PATH columns.
When a SELECT * with the UNNEST operator is found, SnowConvert will remove the unnecessary columns using the EXCLUDE keyword, however, when multiple UNNEST operators are used in the same statement, the columns can not be removed due to ambiguity problems, this FDM will be generated to mark these cases.
It is recommended to expand the SELECT expression list in order to specify only the expected columns and solve this issue.
코드 예제¶
입력 코드:¶
BigQuery¶
생성된 코드:¶
Snowflake¶
권장 사항¶
Expand the SELECT list: Replace
SELECT *with an explicit column list specifying only the columns you need from each UNNEST/FLATTEN result. This eliminates the ambiguity caused by duplicate metadata columns.Use table aliases: Qualify each column reference with the corresponding table alias to avoid ambiguity between the FLATTEN results.