SnowConvert AI – BigQuery-Probleme

Bemerkung

Konvertierungsbereich

SnowConvert AI für Google BigQuery unterstützt derzeit die Bewertung und Übersetzung vonTABLES und VIEWS. Obwohl SnowConvert AI zwar andere Arten von Anweisungen erkennen kann, werden diese nicht vollständig unterstützt.

Diese Seite bietet eine umfassende Referenz darüber, wie SnowConvert AI grammatikalische Google BigQuery-Syntaxelemente in Snowflake-Äquivalente übersetzt. In dieser Übersetzungsreferenz finden Sie Codebeispiele, Ergebnisse der Funktionsäquivalenz, wichtige Unterschiede, Empfehlungen, bekannte Probleme und Beschreibungen der einzelnen Transformationen.

SSC-EWI-BQ0001

Snowflake unterstützt die OPTIONS-Klausel nicht.

Warnung

Dieses EWI ist veraltet. Die neueste Version für dieses EWI finden Sie unter SSC-EWI-0016.

Schweregrad

Medium

Beschreibung

Dieses EWI wird DDL-Anweisungen hinzugefügt, wenn OPTIONS über Optionen verfügt, die von Snowflake nicht unterstützt werden.

Codebeispiel

Eingabecode:

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;

Ausgabecode:

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;
Empfehlungen
  • Fügen Sie manuelle Änderungen an dem nicht transformierten Ausdruck hinzu.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-EWI-BQ0002

Die Mikropartitionierung wird automatisch für alle Snowflake-Tabellen durchgeführt.

Bemerkung

Dieses Problem ist veraltet und wird von SnowConvert AI nicht mehr erzeugt.

Schweregrad

Medium

Beschreibung

Diese Warnung wird der Create-Tabelle hinzugefügt, wenn die „partition by“-Klausel vorhanden ist. PARTITION BY ist eine optionale Klausel, die die Tabellenpartitionierung steuert, aber von Snowflake nicht unterstützt wird.

Alle Daten in Snowflake-Tabellen werden automatisch in Mikropartitionen unterteilt, bei denen es sich um zusammenhängende Speichereinheiten handelt. Jede Mikropartition enthält zwischen 50 MB und 500 MB unkomprimierter Daten. Diese Größe und Struktur ermöglicht ein äußerst granulares Verkürzen sehr großer Tabellen, die aus Millionen oder sogar Hunderten von Millionen von Mikropartitionen bestehen können.

Snowflake speichert Metadaten zu allen Zeilen, die in einer Mikropartition gespeichert sind, einschließlich:

  • Wertebereich jeder Spalte in der Mikropartition.

  • Anzahl unterschiedlicher Werte.

  • Zusätzliche Eigenschaften, die sowohl für die Optimierung als auch für die effiziente Abfrageverarbeitung verwendet werden.

Auch die Tabellen werden transparent in der Reihenfolge partitioniert, in der die Daten eingefügt/geladen werden. Weitere Informationen dazu finden Sie unter Vorteile der Mikropartitionierung.

Codebeispiel

Eingabecode:
BigQuery
 CREATE TABLE table1(
    transaction_id INT, 
    transaction_date DATE
)
PARTITION BY transaction_date;
Generierter Code:
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" }}';

Empfehlungen

  • Es sind keine zusätzlichen Benutzeraktionen erforderlich. Dies ist rein informativ.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-EWI-BQ0003

Pending SnowConvert AI translation for differential privacy.

Schweregrad

Medium

Beschreibung

BigQuery allows applying differential privacy over some statistical functions to introduce noise in the data, making it difficult to extract information about individuals when analyzing query results.

Snowflake now supports differential privacy natively. However, SnowConvert AI has not yet implemented the translation for this feature. Any use of differential privacy in BigQuery will be commented out and this issue will be generated to flag the need for manual conversion.

Codebeispiel

Eingabecode:
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;
Generierter Code:
Snowflake
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0003 - PENDING SNOWCONVERT AI TRANSLATION FOR 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 - PENDING SNOWCONVERT AI TRANSLATION FOR DIFFERENTIAL PRIVACY. ***/!!! contribution_bounds_per_group => (0,100)) total_quantity
FROM
  professors
GROUP BY item;

Empfehlungen

  1. Use native Snowflake support: Snowflake now supports differential privacy natively. Rewrite the BigQuery differential privacy syntax using Snowflake’s privacy policies and privacy budgets.

  2. Key differences: Snowflake’s differential privacy implementation uses privacy policies assigned to tables/views, privacy budgets to manage analyst queries, and privacy domains for fact and dimension columns. The syntax differs from BigQuery’s inline WITH DIFFERENTIAL_PRIVACY clause.

  3. Further reading: Snowflake Differential Privacy Overview

SSC-EWI-BQ0004

Snowflake unterstützt keine benannten Fenster.

Schweregrad

Medium

Beschreibung

BigQuery ermöglicht die Definition und Verwendung von benannten Fenstern in Aggregatfunktionen. Sie werden in der WINDOW-Klausel der Abfrage definiert, in der sie verwendet werden, und können innerhalb der OVER-Klausel dieser Funktionen verwendet werden.

Snowflake unterstützt nicht das Deklarieren benannter Fenster. Daher müssen Sie die Fensterdefinition verwenden und auf alle Verwendungen dieses Fensters direkt in der OVER-Klausel der Funktionen anwenden.

Codebeispiel

Eingabecode:
BigQuery
 SELECT 
    COUNT(col1) OVER(myWindow)
FROM 
    test.exampleTable
WINDOW 
    myWindow AS (ORDER BY col2);
Generierter Code:
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);

Empfehlungen

  • Überprüfen Sie Ihre Definitionen benannter Fenster. Möglicherweise können Sie die Definition übernehmen und auf die OVER-Klausel der Funktionen anwenden, in denen sie verwendet wird. Beachten Sie jedoch, dass die funktionalen Unterschiede zwischen BigQuery- und Snowflake-Fensterrahmen weiterhin gelten. Nehmen Sie den folgenden Fall als Beispiel:

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;

Diese beiden Abfragen erzeugen dieselben Zeilen, aber die Snowflake-Ergebnisse werden nicht angeordnet, da die ORDER BY-Klausel für Fensterrahmen sich nicht auf die gesamte Abfragereihenfolge auswirkt, wie dies bei BigQuery der Fall ist.

SSC-EWI-BQ0005

Javascript code has not been validated by SnowConvert AI.

Schweregrad

Hoch

Beschreibung

SnowConvert AI führt keine Transformation von Javascript-Code durch. Da der Javascript-Code, der aus BigQuery-Funktionen extrahiert wurde, sich gar nicht geändert hat, müssen für den Code möglicherweise einige Optimierungen vorgenommen werden, damit er in Snowflake funktioniert.

Codebeispiel

Eingabecode:
BigQuery
 CREATE FUNCTION test.languageJs (x integer, y integer)
RETURNS integer
LANGUAGE js
AS "return x * y;";
Generierter Code:
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 BY SNOWCONVERT AI. ***/!!!
AS
$$
return x * y;
$$;

Empfehlungen

  • Überprüfen Sie den gesamten Javascript-Code vor der Bereitstellung.

  • Javascript-Parameter in Snowflake müssen in Großbuchstaben geschrieben werden.

  • For more information, visit Snowflake’s Introduction to Javascript UDFs.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-EWI-BQ0006

Der ORIENTED-Parameter in der ST_GEOGFROMTEXT-Funktion wird von Snowflake nicht unterstützt.

Schweregrad

Niedrig

Beschreibung

Diese Warnung wird hinzugefügt, wenn der ORIENTED-Parameter in der ST_GEOGFROMTEXT-Funktion angegeben ist, da er in Snowflake nicht unterstützt wird. Wenn dieser Parameter auf TRUEfestgelegt ist, wird davon ausgegangen, dass jedes Polygon in der Eingabe wie folgt ausgerichtet ist: Wenn jemand die Polygongrenze in der Reihenfolge der Eingabepunkte entlanggeht, befindet sich das Innere des Polygons auf der linken Seite. Dies ermöglicht es WKT, Polygone darzustellen, die größer als eine Halbkugel sind. Wenn der ORIENTED-Parameter auf FALSE festgelegt ist oder weggelassen wird, gibt diese Funktion das Polygon mit der kleinsten Fläche zurück.

Codebeispiel

Eingabecode:
BigQuery
 SELECT ST_GEOGFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', TRUE);
Generierter Code:
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))');

Empfehlungen

  1. Review polygon orientation: If the oriented parameter was set to TRUE, verify that the polygon does not span more than a hemisphere. Snowflake’s ST_GEOGFROMTEXT always returns the polygon with the smallest area.

  2. Manual validation: For polygons larger than a hemisphere, consider splitting them into smaller polygons or using alternative geospatial representations.

  3. Remove the parameter: After manual review, remove the oriented parameter from the function call, as Snowflake’s ST_GEOGFROMTEXT accepts only the WKT string argument.

SSC-EWI-BQ0007

Die Escape-Sequenz ist in Snowflake nicht gültig.

Schweregrad

Niedrig

Beschreibung

Das Bell-Zeichen (\a) und das vertikale Zeichen (\v) sind gültige Escape-Sequenzen in BigQuery, nicht aber in Snowflake.

This warning is added when a bell character or vertical character escape sequence is found when translating BigQuery code. For more information, see BigQuery Escape Sequences.

Codebeispiel

Eingabecode:
BigQuery
 SELECT "\a";
SELECT "\v";
Generierter Code:
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';

Empfehlungen

  1. Replace with Unicode escapes: Replace \a (bell character, U+0007) with \x07 and \v (vertical tab, U+000B) with \x0B, which are supported by Snowflake.

  2. Review usage: If the escape sequence was used for formatting purposes, consider whether it is still needed in the Snowflake context.

SSC-EWI-BQ0008

Die aus acht Hexadezimalstellen bestehende Unicode-Escape-Sequenz wird in Snowflake nicht unterstützt.

Schweregrad

Niedrig

Beschreibung

BigQuery unterstützt Unicode-Sequenzen von acht Hexadezimalstellen. Snowflake unterstützt diese Art von Unicode-Sequenzen nicht.

Diese Warnung wird hinzugefügt, wenn bei der Übersetzung von BigQuery-Code eine aus acht Hexadezimalstellen bestehende Unicode-Sequenz gefunden wird. Weitere Informationen zu BigQuery-Escape-Sequenzen.

Codebeispiel

Eingabecode:
BigQuery
 SELECT "\U00100000";
Generierter Code:
Snowflake
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
    '\U00100000';

Empfehlungen

  1. Use surrogate pairs: Convert the 8-hex-digit Unicode sequence into two 4-hex-digit surrogate pair sequences. For example, \U00100000 can be represented using surrogate pairs \uDBC0\uDC00.

  2. Use CHR function: Alternatively, use Snowflake’s CHR function with the Unicode code point to generate the character at runtime.

SSC-EWI-BQ0009

SnowConvert AI was unable to generate the correct return table clause. Missing symbol information.

Schweregrad

Hoch

Beschreibung

Snowflake benötigt eine gültige RETURNS TABLE-Klausel für CREATE TABLE FUNCTION-Anweisungen. SnowConvert AI muss eine von Grund auf neu erstellen. Zu diesem Zweck wird eine Analyse der CREATE TABLE FUNCTION-Abfrage durchgeführt, um die Arten der Spalten der resultierenden Tabelle ordnungsgemäß abzuleiten. Es kann jedoch Szenarien geben, in denen SnowConvert AI über eine Beschränkung verfügt, wenn es darum geht, die Rückgabeklausel ordnungsgemäß zu erstellen.

Diese Szenarien werden künftig berücksichtigt, in der Zwischenzeit wird jedoch dieser Fehler hinzugefügt.

Codebeispiel

Eingabecode:
BigQuery
 CREATE TABLE FUNCTION tableValueFunction2()
AS
SELECT *
REPLACE("John" AS employee_name)
FROM employees;
Generierter Code:
Snowflake
 CREATE FUNCTION tableValueFunction2 ()
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0009 - SNOWCONVERT AI WAS UNABLE TO GENERATE THE CORRECT RETURN TABLE CLAUSE. MISSING SYMBOL INFORMATION. ***/!!!
RETURNS TABLE (
)
AS
  $$
      SELECT
        * REPLACE("John" AS employee_name) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ExceptReplaceOperator' NODE ***/!!!
      FROM
        employees
  $$;

Empfehlungen

  1. Manually define the RETURNS TABLE clause: Inspect the original BigQuery TABLE FUNCTION body to determine the column names and types of the result set, then populate the empty RETURNS TABLE() clause with the correct column definitions.

  2. Provide source references: If the issue is caused by missing references, ensure all referenced tables and views are included in the input provided to SnowConvert AI.

SSC-EWI-BQ0010

The resulting table has no columns

Schweregrad

Medium

Beschreibung

This EWI is added when SnowConvert AI creates an external table whose definition has no columns. External tables in BigQuery can be defined using only OPTIONS (e.g., FORMAT and URIS) without explicit column definitions, relying on schema inference. When the resulting table structure has no columns after conversion, SnowConvert AI emits this EWI to flag that manual definition of the table schema may be required.

Codebeispiel

Eingabecode:
BigQuery
 CREATE EXTERNAL TABLE my_dataset.sensor_readings
OPTIONS (
  format = 'PARQUET',
  uris = ['gs://my_bucket/sensors/*.parquet']
);
Generierter Code:
Snowflake
 !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0010 - THE RESULTING TABLE HAS NO COLUMNS ***/!!!
CREATE EXTERNAL TABLE my_dataset.sensor_readings
OPTIONS (
  format = 'PARQUET',
  uris = ['gs://my_bucket/sensors/*.parquet']
);

Empfehlungen

  1. Provide column definitions: If the source BigQuery external table uses inferred schema, manually add the expected column definitions to the generated Snowflake external table based on the actual file structure.

  2. Use INFER_SCHEMA: Consider using Snowflake’s INFER_SCHEMA function with a sample file path (without wildcards) to generate the table template.

  3. Include table definitions: Ensure all referenced table or view definitions are included in the input provided to SnowConvert AI so that symbol information can be collected.

SSC-EWI-BQ0011

Die Zuweisung von Sitzungsvariablen komplexer Datentypen wird in Snowflake nicht unterstützt.

Schweregrad

Medium

Beschreibung

Durch die Deklaration einer Variablen auf Skriptebene in BigQuery kann diese im gesamten Skript verwendet werden. Um dieses Verhalten in Snowflake zu replizieren, werden SQL-Variablen verwendet.

Allerdings schlägt das Deklarieren von Variablen von Datentypen, die komplex sind, wie z. B. ARRAY, GEOGRAPHY, STRUCT oder JSON, in Snowflake fehl, wenn versucht wird, den Wert auf die Variable SQL zu setzen. Wenn SnowConvert AI einen dieser Fälle erkennt, dann wird dieses EWI zur SQL-Variablendeklaration hinzugefügt.

Variablen dieser Art können ohne Probleme in Blockanweisungen und anderen prozeduralen Anweisungen deklariert werden. Dieses EWI gilt nur für Variablen, die auf Skriptebene deklariert sind.

Codebeispiel

Eingabecode:
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;
Generierter Code:
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;

Empfehlungen

  • Wenn die Verwendung der Variable auf einen einzigen Bereich beschränkt ist oder ihr Wert nie geändert wird, sollten Sie in Erwägung ziehen, die Variable lokal in den Bereichen zu deklarieren, in denen sie verwendet wird, wodurch das Problem gelöst wird.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-EWI-BQ0012

SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter. Missing symbol information.

Schweregrad

Hoch

Beschreibung

SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter due to missing symbol information. This typically occurs when the table definition is not included in the input provided to SnowConvert AI, or when the table uses complex types (such as STRUCT) whose field names are needed to build the OBJECT_CONSTRUCT call.

Codebeispiel

Eingabecode:
BigQuery
 INSERT INTO test.tuple_sample
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));
Generierter Code:
Snowflake
 INSERT INTO test.tuple_sample
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0012 - SNOWCONVERT AI WAS UNABLE TO GENERATE A CORRECT OBJECT_CONSTRUCT PARAMETER. MISSING SYMBOL INFORMATION. ***/!!!
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));

Empfehlungen

  1. Provide table definitions: Ensure all referenced table definitions (CREATE TABLE statements) are included in the input provided to SnowConvert AI so that symbol information can be collected.

  2. Manual replacement: Inspect the original BigQuery INSERT statement and manually construct the OBJECT_CONSTRUCT call with the correct field names and values matching the target table’s schema.

SSC-EWI-BQ0013

Externe Tabellendatenformate, die von Snowflake nicht unterstützt werden

Warnung

Dieses EWI ist veraltet. Die neueste Version für dieses EWI finden Sie unter SSC-EWI-0029.

Schweregrad

Medium

Beschreibung

Snowflake unterstützt die folgenden BigQuery-Formate:

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.

Codebeispiel

Eingabecode:
BigQuery
 CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
  format = 'DATASTORE_BACKUP',
  uris = ['gs://backup_bucket/backup_folder/*']
);
Generierter Code:
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/*']
);

Empfehlungen

SSC-EWI-BQ0014

Hive partitioned external tables are not supported in Snowflake

Schweregrad

Medium

Beschreibung

Snowflake unterstützt keine partitionierten externen Hive-Tabellen. Wenn die WITH PARTITION COLUMNS-Klausel in der externen Tabelle gefunden wird, wird sie mit diesem EWI als nicht unterstützt markiert.

Codebeispiel

Eingabecode:
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);
Generierter Code:
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" }}';

Empfehlungen

  1. Remove the WITH PARTITION COLUMNS clause: Snowflake external tables use automatic partitioning based on the file path. Remove the WITH PARTITION COLUMNS clause from the generated code.

  2. Use Snowflake partitioning: Define partition columns using expressions in the external table’s column definitions. Snowflake can automatically infer partition columns from the directory structure.

  3. Hive metastore integration: If you use a Hive metastore, consider integrating it with Snowflake to synchronize external table metadata automatically.

SSC-EWI-BQ0015

External table requires an external stage to access an external location, define and replace the EXTERNAL_STAGE placeholder

Warnung

Dieses EWI ist veraltet. Die neueste Version für dieses EWI finden Sie unter SSC-EWI-0032.

Beschreibung

Bei der Transformation der CREATE EXTERNAL TABLE-Anweisung generiertSnowConvert AI einenEXTERNAL_STAGE-Platzhalter, der durch den externen Stagingbereich ersetzt werden muss, der für die Verbindung mit dem externen Speicherort von Snowflake erstellt wurde.

Beachten Sie die folgenden Anleitungen, um die erforderliche Speicherintegration und den externen Stagingbereich in Ihrem Snowflake-Konto einzurichten:

Codebeispiel

Eingabecode:
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']
);
Generierter Code:
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);

Empfehlungen

  • Richten Sie Ihre externe Verbindung im Snowflake-Konto ein, und ersetzen Sie den EXTERNAL_STAGE-Platzhalter, um die Transformation abzuschließen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-EWI-BQ0016

„Select *“ mit mehreren UNNEST-Operatoren führt zu Mehrdeutigkeiten in Spalten

Warnung

This EWI is deprecated; please refer to SSC-FDM-0012 for the latest version of this issue.

Schweregrad

Medium

Beschreibung

Als Teil der SnowConvert-Transformation für den UNNEST-Operator wird die Funktion FLATTEN verwendet. Diese Funktion generiert mehrere Spalten, die nicht erforderlich sind, um die UNNEST-Operatorfunktionalität wie die Spalten THIS oder PATH zu emulieren.

Wenn eine SELECT * mit dem UNNEST-Operator gefunden wurde, entfernt SnowConvert die unnötigen Spalten mit dem Schlüsselwort EXCLUDE. Wenn jedoch mehrere UNNEST-Operatoren in der gleichen Anweisung verwendet werden, können die Spalten aufgrund von Mehrdeutigkeitsproblemen nicht entfernt werden. Dieses EWI wird erzeugt, um diese Fälle zu kennzeichnen.

Es wird empfohlen, die SELECT-Ausdrucksliste zu erweitern, um nur die erwarteten Spalten anzugeben und dieses Problem zu lösen.

Codebeispiel

Eingabecode:
BigQuery
SELECT * FROM UNNEST ([10,20,30]);

SELECT * FROM UNNEST ([10,20,30]) AS numbers, UNNEST(['Hi', 'Hello', 'Bye']) AS words;
Generierter Code:
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

Pending SnowConvert AI translation for UNNEST of an array of structs

Schweregrad

Medium

Beschreibung

When unnesting an array of structs, BigQuery generates a column for each struct field and splits the struct values into their corresponding columns. SnowConvert AI does not yet support this transformation. Whenever SnowConvert AI detects that the UNNEST operator is applied over an array of structs, this EWI is generated to flag the need for manual conversion.

Codebeispiel

Eingabecode:
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;
Generierter Code:
Snowflake
CREATE TABLE test.myTestTable
(
  column1 ARRAY DEFAULT []
);

SELECT structValues FROM
  test.myTestTable AS someTable,
  !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0017 - PENDING SNOWCONVERT AI TRANSLATION FOR UNNEST OF AN ARRAY OF STRUCTS ***/!!! UNNEST(someTable.column1) AS structValues;

Empfehlungen

  1. Use FLATTEN with LATERAL: Manually flatten the array column using Snowflake’s FLATTEN function, then extract individual struct fields using dot notation or GET on the VALUE column.

  2. Example workaround:

    SELECT f.VALUE:x::INT64 AS x, f.VALUE:y::STRING AS y
    FROM test.myTestTable AS t, LATERAL FLATTEN(INPUT => t.column1) AS f;