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;
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](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;
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](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;
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](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);
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

これらの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;";
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](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);
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

推奨事項

  • さらにサポートが必要な場合は、[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";
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

推奨事項

  • さらにサポートが必要な場合は、[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";
Copy
生成されたコード:
最初のタブ
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
    '\U00100000';
Copy

推奨事項

  • さらにサポートが必要な場合は、[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;
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

推奨事項

  • さらにサポートが必要な場合は、[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;
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

推奨事項

  • 変数の用途が1つのスコープに限定されていたり、その値が変更されることがない場合は、その変数を使用するスコープでローカルに宣言することを検討してください。これにより、問題は解決します。

  • さらにサポートが必要な場合は、[snowconvert-support@snowflake.com](mailto: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));
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

推奨事項

  • さらにサポートが必要な場合は、[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
GOOGLE_SHEETS

CSV

NEWLINE_DELIMITED_JSON
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/*']
);
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

推奨事項

  • さらにサポートが必要な場合は、[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);
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

推奨事項

  • さらにサポートが必要な場合は、[snowconvert-support@snowflake.com](mailto: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( 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']
);
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](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;
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

構造体の配列のネスト解除はサポートされていません。

重大性

説明

構造体の配列のネスト解除時に、 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