SnowConvert AI - BigQuery 問題¶
注釈
変換範囲
SnowConvert AI for Google BigQuery は現在、TABLES とVIEWS の評価と変換をサポートしています。SnowConvert AI は他のタイプのステートメントも認識できますが、完全にはサポートしていません。
このページでは、 SnowConvert AI がGoogle BigQuery の文法要素をSnowflakeの同等要素に変換する方法について包括的なリファレンスを提供します。この変換リファレンスでは、コード例、機能的同等性の結果、主な相違点、推奨事項、既知の問題、および各変換の説明をご覧いただけます。
SSC-EWI-BQ0001¶
Snowflakeはオプション句をサポートしていません。
警告
この EWI は非推奨です。この EWI の最新バージョンについては、[SSC-EWI-0016]( generalEWI.md#ssc-ewi-0016)をご参照ください。
重大度¶
中
説明¶
この 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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0002¶
すべてのSnowflakeテーブルでマイクロパーティションが自動的に実行されます。
注釈
この問題は非推奨となり、 SnowConvert AI によって生成されなくなりました。
重大性¶
Medium
説明¶
この警告は、partition by句が存在する場合にCreate tableに追加されます。PARTITION BY は、[テーブルパーティショニング](https://cloud.google.com/bigquery/docs/partitioned-tables)を制御するオプションの句ですが、Snowflakeではサポートされていません。
Snowflakeテーブル内のすべてのデータは、連続したストレージ単位であるマイクロパーティションに自動的に分割されます。各マイクロパーティションには、50 MB から500 MB の非圧縮データが含まれます。このサイズと構造により、非常に大きなテーブルの非常にきめ細かなプルーニングが可能になります。これは数百万、または数億のマイクロパーティションで構成することができます。
Snowflakeは、以下を含む、マイクロパーティションに保存されているすべての行に関するメタデータを保存します:
マイクロパーティションの各列の値の範囲。
個別の値の数。
最適化と効率的なクエリ処理の両方に使用される追加のプロパティ。
また、テーブルは、挿入/ロードされるデータの順序を使用して透過的にパーティション分割されます。詳細については、[マイクロパーティショニングのメリット](https://docs.snowflake.com/en/user-guide/tables-clustering-micropartitions#benefits-of-micro-partitioninghttps://docs.snowflake.com/en/user-guide/tables-clustering-micropartitions#benefits-of-micro-partitioning)をご参照ください。
コード例¶
入力コード:¶
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0003¶
Snowflakeは差分プライバシーをサポートしていません。
重大性¶
中
説明¶
BigQuery では、一部の統計関数に対して[差分プライバシー](https://cloud.google.com/bigquery/docs/differential-privacy#what_is_differential_privacy)を適用してデータにノイズを加えることができ、クエリ結果を分析する際に個人に関する情報を引き出すことを困難にします。
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0004¶
Snowflakeは名前付きウィンドウをサポートしていません。
重大性¶
中
説明¶
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;
これらの2つのクエリは同じ行を生成しますが、Snowflakeの結果は順序付けされません。これは、ウィンドウフレームの ORDER BY 句が、 BigQuery のようにクエリ全体の順序付けに**影響しないためです。
推奨事項¶
さらにサポートが必要な場合は、[snowconvert-support@snowflake.com](mailto: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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0006¶
ST_GEOGFROMTEXT 関数の指向パラメーターはSnowflakeではサポートされていません。
重大性¶
低
説明¶
この警告は、[ST_GEOGFROMTEXT](https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#st_geogfromtext)関数で指向パラメーターが指定されている場合に追加されます。これは、Snowflakeではサポートされていないためです。このパラメーターが TRUE に設定されている場合、入力内のポリゴンは次のような方向を向いていると想定されます。誰かが入力頂点の順序でポリゴンの境界に沿って歩くと、ポリゴンの内部は左側になります。これにより、 WKT は半球よりも大きなポリゴンを表現できるようになります。oriented が 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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0007¶
エスケープシーケンスはSnowflakeでは無効です。
重大性¶
低
説明¶
ベル文字(\a)と垂直文字(\v)は、 BigQuery では有効なエスケープシーケンスですが、Snowflakeでは有効ではありません。
この警告は、 BigQuery コードの変換時にベル文字または垂直文字のエスケープシーケンスが見つかった場合に追加されます。[Snowflakeエスケープシーケンス](https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#escape_sequences)の詳細。
コード例¶
入力コード:¶
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0008¶
8桁の16進数によるUnicodeエスケープシーケンスはSnowflakeではサポートされていません。
重大性¶
低
説明¶
BigQuery は8桁の16進数によるUnicodeシーケンスをサポートしています。Snowflakeはこの種のUnicodeシーケンスをサポートしていません。
この警告は、 BigQuery コードの変換時に8桁の16進数によるUnicodeシーケンスが見つかった場合に追加されます。[BigQuery エスケープシーケンス](https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#escape_sequences)の詳細。
コード例¶
入力コード:¶
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0009¶
SnowConvert AI は正しい戻りテーブル句を生成できませんでした。
重大性¶
高
説明¶
Snowflakeでは、 CREATE TABLE FUNCTION ステートメントに有効な RETURNS TABLE 句が必要です。SnowConvert AI は、一から新しく構築する必要があります。これを行うには、結果のテーブルの列の型を適切に推論するために、 CREATE TABLE FUNCTION クエリに対して分析が行われます。しかし、シナリオによっては、 SnowConvert AI に現在 return 句を適切に構築できる制限がある場合があります。
これらのシナリオは将来的に検討される予定ですが、その間このエラーが追加されます。
コード例¶
入力コード:¶
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0011¶
Snowflakeでは、複雑なデータ型のセッション変数への代入はサポートされていません。
重大性¶
中
説明¶
BigQuery では、スクリプトレベルで変数を宣言すると、スクリプト全体で使用できるようになり、Snowflakeでこの動作を再現するには[SQL 変数](https://docs.snowflake.com/en/sql-reference/session-variables)が使用されます。
しかし、 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;
推奨事項¶
変数の用途が1つのスコープに限定されていたり、その値が変更されることがない場合は、その変数を使用するスコープでローカルに宣言することを検討してください。これにより、問題は解決します。
さらにサポートが必要な場合は、[snowconvert-support@snowflake.com](mailto: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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0013¶
snowflakeでサポートされていない外部テーブルデータ形式
警告
この EWI は非推奨です。この EWI の最新バージョンについては、[SSC-EWI-0029](generalEWI.md#ssc-ewi-0029))ご参照ください。
重大性¶
中
説明¶
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0014¶
Hiveパーティション外部テーブルは、Snowflakeではサポートされていません。
重大性¶
中
説明¶
Snowflakeは、Hiveパーティション化された外部テーブルをサポートしていません。外部テーブルで WITH PARTITION COLUMNS 句が見つかった場合、この 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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0015¶
外部テーブルは、外部の場所にアクセスし、 EXTERNAL_STAGE プレースホルダーを定義して置き換えるための外部ステージが必要です
警告
この EWI は非推奨です。この EWI の最新バージョンについては、[SSC-EWI-0032( generalEWI.md#ssc-ewi-0032)ご参照ください。
説明¶
CREATE EXTERNAL TABLE ステートメントを変換すると、 SnowConvert AI は EXTERNAL _STAGE プレースホルダーを生成します。これは、Snowflakeから外部の場所に接続するために作成された外部ステージに置き換える必要があります。
以下のガイドを参照して、Snowflakeアカウントで必要なストレージ統合と外部ステージを設定してください。
[Amazon S3を参照する外部テーブルの場合](https://docs.snowflake.com/ja/user-guide/tables-external-s3)
[Google Cloud Storageを参照する外部テーブルの場合](https://docs.snowflake.com/ja/user-guide/tables-external-gcs)
[Azure Blob Storageを参照する外部テーブルの場合](https://docs.snowflake.com/ja/user-guide/tables-external-azure)
コード例¶
入力コード:¶
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](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-EWI-BQ0016¶
複数の UNNEST 演算子を使用したSelect * は、列のあいまいさを引き起こします。
重大性¶
中
説明¶
UNNEST 演算子の SnowConvert 変換の一部として、[FLATTEN](../../../../../../sql-reference/functions/flatten.rst)関数が使用されます。この関数は、 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¶
構造体の配列のネスト解除はサポートされていません。
重大性¶
中
説明¶
構造体の配列のネスト解除時に、 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;