Leitfaden zur Snowflake SQL-Übersetzung
In diesem Dokument werden die Ähnlichkeiten und Unterschiede in der SQL-Syntax zwischen Snowflake und BigQuery beschrieben, um die Planung und Ausführung der Verlagerung Ihres Enterprise Data Warehouse (EDW) nach BigQuery zu beschleunigen. Snowflake für Data Warehousing wurde für die SQL-Syntax von Snowflake entwickelt. Für Snowflake geschriebene Skripts müssen möglicherweise geändert werden, bevor Sie sie in BigQuery verwenden können, da die SQL-Dialekte zwischen den Diensten variieren. Verwenden Sie die Batch-SQL-Übersetzung, um Ihre SQL-Skripts im Bulk zu migrieren, oder die interaktive SQL-Übersetzung, um Ad-hoc-Abfragen zu übersetzen. Snowflake SQL wird von beiden Tools in der Vorabversion unterstützt.
Datentypen
In diesem Abschnitt werden die Entsprechungen zwischen den Datentypen in Snowflake und BigQuery beschrieben.
Snowflake | BigQuery | Hinweise |
---|---|---|
NUMBER/
DECIMAL/NUMERIC |
NUMERIC |
Der Datentyp NUMBER in Snowflake unterstützt eine Genauigkeit von 38 Ziffern und 37 Dezimalstellen. Die Genauigkeit und Skalierung können durch den Nutzer festgelegt werden.BigQuery unterstützt NUMERIC und BIGNUMERIC mit optional angegebener Genauigkeit und Skalierung innerhalb bestimmter Grenzen. |
INT/INTEGER |
BIGNUMERIC |
INT/INTEGER und alle anderen INT -ähnlichen Datentypen wie BIGINT, TINYINT, SMALLINT, BYTEINT sind ein Alias für den Datentyp NUMBER , bei dem Genauigkeit und Skalierung nicht angegeben werden können und immer NUMBER(38, 0) ist. |
BIGINT |
BIGNUMERIC |
|
SMALLINT |
BIGNUMERIC |
|
TINYINT |
BIGNUMERIC |
|
BYTEINT |
BIGNUMERIC |
|
FLOAT/ |
FLOAT64 |
Der Datentyp FLOAT in Snowflake legt „NaN“ als > X fest, wobei X ein beliebiger FLOAT-Wert (außer „NaN“ selbst) ist.Der Datentyp FLOAT in BigQuery legt „NaN“ als < X fest, wobei X ein beliebiger FLOAT-Wert (außer „NaN“ selbst) ist. |
DOUBLE/ REAL |
FLOAT64 |
Der Datentyp DOUBLE in Snowflake ist mit dem Datentyp FLOAT in Snowflake identisch, wird aber häufig fälschlicherweise als FLOAT angezeigt. Er wird ordnungsgemäß als DOUBLE gespeichert. |
VARCHAR |
STRING |
Der Datentyp VARCHAR in Snowflake hat eine maximale Länge von 16 MB (unkomprimiert). Wenn keine Länge angegeben ist, wird die standardmäßig die maximale Länge verwendet.Der Datentyp STRING in BigQuery wird als UTF-8-codierter Unicode mit variabler Länge gespeichert. Die maximale Länge beträgt 16.000 Zeichen. |
CHAR/CHARACTER |
STRING |
Der Datentyp CHAR in Snowflake hat eine maximale Länge von 1. |
STRING/TEXT |
STRING |
Der Datentyp STRING in Snowflake entspricht dem VARCHAR von Snowflake. |
BINARY |
BYTES |
|
VARBINARY |
BYTES |
|
BOOLEAN |
BOOL |
Der Datentyp BOOL in BigQuery kann nur TRUE/FALSE akzeptieren, im Gegensatz zum Datentyp BOOL in Snowflake, der TRUE/FALSE/NULL akzeptieren kann. |
DATE |
DATE |
Der Typ DATE in Snowflake akzeptiert die meisten gängigen Datumsformate im Gegensatz zum Typ DATE in BigQuery, der nur Datumsangaben im Format „JJJJ-[M]M-[D]D“ akzeptiert. |
TIME |
TIME |
Der TIME-Typ in Snowflake unterstützt eine Genauigkeit von 0 bis 9 Nanosekunden, während der Typ TIME in BigQuery eine Genauigkeit von 0 bis 6 Nanosekunden unterstützt. |
TIMESTAMP |
DATETIME |
TIMESTAMP ist ein benutzerkonfigurierbarer Alias, der standardmäßig TIMESTAMP_NTZ entspricht, was in BigQuery DATETIME entspricht. |
TIMESTAMP_LTZ |
TIMESTAMP |
|
TIMESTAMP_NTZ/DATETIME |
DATETIME |
|
TIMESTAMP_TZ |
TIMESTAMP |
|
OBJECT |
JSON |
Der Typ OBJECT in Snowflake unterstützt keine explizit typisierten Werte. Werte entsprechen dem Typ VARIANT . |
VARIANT |
JSON |
Der Typ OBJECT in Snowflake unterstützt keine explizit typisierten Werte. Werte entsprechen dem Typ VARIANT . |
ARRAY |
ARRAY<JSON> |
Der ARRAY -Typ in Snowflake kann nur VARIANT -Typen unterstützen, während der ARRAY-Typ in BigQuery alle Datentypen mit Ausnahme eines Arrays selbst unterstützen kann. |
BigQuery verfügt auch über die folgenden Datentypen, die kein direktes Snowflake-Analog haben:
Abfragesyntax und Abfrageoperatoren
In diesem Abschnitt werden Unterschiede in der Abfragesyntax zwischen Snowflake und BigQuery behandelt.
SELECT
-Anweisung
Die meisten Snowflake-SELECT
-Anweisungen sind mit BigQuery kompatibel. Die folgende Tabelle enthält eine Liste mit geringfügigen Unterschieden.
Snowflake | BigQuery | |
---|---|---|
|
|
|
Hinweis: Snowflake unterstützt das Erstellen und Referenzieren eines Alias in derselben SELECT -Anweisung. |
|
|
|
|
Bei Snowflake-Aliassen und ‑Kennzeichnungen wird standardmäßig nicht zwischen Groß- und Kleinschreibung unterschieden. Um die Groß- und Kleinschreibung beizubehalten, setzen Sie Aliasse und Kennungen in doppelte Anführungszeichen (").
FROM
-Klausel
Eine FROM
-Klausel in einer Abfrage gibt die möglichen Tabellen, Ansichten, Unterabfragen oder Tabellenfunktionen an, die in einer SELECT-Anweisung verwendet werden sollen. Alle diese Tabellenreferenzen werden in BigQuery unterstützt.
Die folgende Tabelle enthält eine Liste mit geringfügigen Unterschieden.
Snowflake | BigQuery | |
---|---|---|
|
WITH table1 AS |
|
|
|
|
|
Hinweis. BigQuery hat keine direkte Alternative zu Snowflakes BEFORE unter Verwendung einer Anweisungs-ID. Der Wert von timestamp darf nicht mehr als sieben Tage vor dem aktuellen Zeitstempel liegen. |
|
|
BigQuery unterstützt das Konzept bereitgestellter Dateien nicht. |
|
|
BigQuery bietet keine direkte Alternative zum |
Auf BigQuery-Tabellen kann in der FROM
-Klausel durch Folgendes verwiesen werden:
[project_id].[dataset_id].[table_name]
[dataset_id].[table_name]
[table_name]
BigQuery unterstützt auch zusätzliche Tabellenreferenzen:
- Frühere Versionen der Tabellendefinition und der Zeilen mit
FOR SYSTEM_TIME AS OF
. - Feldpfade oder jeder Pfad, der in ein Feld innerhalb eines Datentyps aufgelöst wird (d. h. ein
STRUCT
) - Vereinfachte Arrays
WHERE
-Klausel
Die Snowflake-Klausel WHERE
und die BigQuery-Klausel WHERE
sind identisch, bis auf die folgenden Elemente:
Snowflake | BigQuery | |
---|---|---|
|
SELECT col1, col2 Hinweis: BigQuery unterstützt die (+) -Syntax für JOIN s nicht. |
JOIN
-Typen
Sowohl Snowflake als auch BigQuery unterstützen die folgenden Join-Typen:
[INNER] JOIN
LEFT [OUTER] JOIN
RIGHT [OUTER] JOIN
FULL [OUTER] JOIN
CROSS JOIN
und der entsprechende implizite „durch Komma getrenntes Cross Join“
Sowohl Snowflake als auch BigQuery unterstützen die Klausel ON
und USING
.
Die folgende Tabelle enthält eine Liste mit geringfügigen Unterschieden.
Snowflake | BigQuery | |
---|---|---|
|
Hinweis: In BigQuery erfordern JOIN -Klauseln eine JOIN-Bedingung, es sei denn, es handelt sich um eine CROSS JOIN-Klausel oder eine der verknüpften Tabellen ist ein Feld innerhalb eines Datentyps oder eines Arrays. |
|
Hinweis: Im Gegensatz zur Ausgabe eines nicht lateralen Joins enthält die Ausgabe eines „Lateral Join“ nur die Zeilen, die aus der Inline-Ansicht generiert wurden. Die Zeilen auf der linken Seite müssen nicht mit der rechten Seite verknüpft sein, da die Zeilen auf der linken Seite bereits berücksichtigt wurden, indem sie in die Inline-Ansicht übergeben wurden. |
LATERAL JOIN s. |
WITH
-Klausel
Eine BigQuery-WITH
-Klausel enthält eine oder mehrere Unterabfragen, die jedes Mal ausgeführt werden, wenn eine nachfolgende SELECT
-Anweisung auf sie verweist. Snowflake-WITH
-Klauseln funktionieren genauso wie in BigQuery, mit der Ausnahme, dass BigQuery WITH RECURSIVE
nicht unterstützt.
GROUP BY
-Klausel
Die Snowflake-Klausel GROUP BY
unterstützt GROUP
BY
,
GROUP BY
ROLLUP
,
GROUP BY GROUPING
SETS
und GROUP BY
CUBE
, während die BigQuery-Klausel GROUP BY
GROUP
BY
, GROUP BY
ALL
, GROUP
BY ROLLUP
, GROUP BY GROUPING
SETS
und GROUP BY
CUBE
unterstützt.
Snowflake
HAVING
und BigQuery
HAVING
sind synonym. Beachten Sie, dass HAVING
nach GROUP BY
und der Aggregation und vor ORDER BY
kommt.
Snowflake | BigQuery | |
---|---|---|
|
|
|
|
|
|
Hinweis: Snowflake erlaubt bis zu 128 Gruppierungssätze im selben Abfrageblock. |
|
|
Hinweis: Snowflake erlaubt in jedem Cube bis zu 7 Elemente (128 Gruppierungssätze) |
|
ORDER BY
-Klausel
Es gibt einige kleinere Unterschiede zwischen Snowflake-ORDER BY
-Klauseln und BigQuery ORDER BY
-Klauseln.
Snowflake | BigQuery | |
---|---|---|
In Snowflake werden NULL s standardmäßig am niedrigsten eingestuft (aufsteigende Reihenfolge). |
In BigQuery werden NULLS s standardmäßig am höchsten eingestuft (aufsteigende Reihenfolge). |
|
Sie können mit NULLS FIRST bzw. NULLS LAST angeben, ob NULL -Werte zuerst oder zuletzt sortiert werden sollen. |
Es gibt keine Möglichkeit, anzugeben, ob NULL -Werte in BigQuery zuerst oder zuletzt stehen sollen. |
LIMIT/FETCH
-Klausel
Mit der Klausel LIMIT/FETCH
in Snowflake wird die maximale Anzahl von Zeilen begrenzt, die von einem Ausdruck oder einer Unterabfrage zurückgegeben werden.
LIMIT
(Postgres-Syntax) und FETCH
(ANSI-Syntax) führen zum selben Ergebnis.
In Snowflake und BigQuery hat die Anwendung einer LIMIT
-Klausel auf eine Abfrage keine Auswirkungen auf den Umfang der gelesenen Daten.
Snowflake | BigQuery | |
---|---|---|
Hinweis: NULL , leere String ('') und $$$$ -Werte werden akzeptiert und werden als „unbegrenzt“ behandelt. Sie wird hauptsächlich für Connectors und Treiber verwendet. |
Hinweis: FETCH wird von BigQuery nicht unterstützt. LIMIT ersetzt FETCH .Hinweis: In BigQuery muss OFFSET zusammen mit einem LIMIT count verwendet werden. Achten Sie darauf, dass der Wert für count INT64 auf die mindestens erforderlichen geordneten Zeilen festgelegt wird, um die bestmögliche Leistung zu erzielen. Das Sortieren aller Ergebniszeilen führt zu einer unnötigen Verschlechterung der Abfrageausführungsleistung. |
QUALIFY
-Klausel
Die QUALIFY
-Klausel in Snowflake gestattet Ihnen, Ergebnisse für Fensterfunktionen zu filtern, die dem ähnlich sind, was HAVING
mit Aggregatfunktionen und GROUP BY
-Klauseln macht.
Snowflake | BigQuery | |
---|---|---|
|
Die Snowflake QUALIFY -Klausel mit einer Analysefunktion wie ROW_NUMBER() , COUNT() und mit OVER PARTITION BY wird in BigQuery als WHERE -Klausel für eine Unterabfrage ausgedrückt, die den Analysewert enthält.Mit ROW_NUMBER() :SELECT col1, col2
Verwendung von ARRAY_AGG() , das größere Partitionen unterstützt:
|
Funktionen
In den folgenden Abschnitten werden die Snowflake-Funktionen und ihre BigQuery-Entsprechungen aufgeführt.
Aggregatfunktionen
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen Snowflake-Aggregat-, Aggregatanalyse- und ungefähren Aggregatfunktionen mit ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
Hinweis: DISTINCT hat keine Auswirkungen. |
|
Hinweis: DISTINCT hat keine Auswirkungen. |
Hinweis: APPROX_COUNT_DISTINCT wird in BigQuery nicht mit Fensterfunktionen unterstützt. |
Hinweis: In Snowflake ist die Option RESPECT NULLS nicht verfügbar. |
Hinweis: APPROX_QUANTILES wird in BigQuery nicht mit Fensterfunktionen unterstützt. |
|
BigQuery unterstützt nicht die Möglichkeit, Zwischenstatus beim Vorhersagen von ungefähren Werten zu speichern. |
|
BigQuery unterstützt nicht die Möglichkeit, Zwischenstatus beim Vorhersagen von ungefähren Werten zu speichern. |
|
BigQuery unterstützt nicht die Möglichkeit, Zwischenstatus beim Vorhersagen von ungefähren Werten zu speichern. |
Hinweis: Wenn kein Zahlenparameter angegeben wird, ist der Standardwert 1. Zähler sollten deutlich größer als die Anzahl sein. |
Hinweis: APPROX_TOP_COUNT wird in BigQuery nicht mit Fensterfunktionen unterstützt. |
|
BigQuery unterstützt nicht die Möglichkeit, Zwischenstatus beim Vorhersagen von ungefähren Werten zu speichern. |
|
BigQuery unterstützt nicht die Möglichkeit, Zwischenstatus beim Vorhersagen von ungefähren Werten zu speichern. |
|
BigQuery unterstützt nicht die Möglichkeit, Zwischenstatus beim Vorhersagen von ungefähren Werten zu speichern. |
|
Mit einer benutzerdefinierten UDF können Sie MINHASH mit k verschiedenen Hash-Funktionen implementieren. Ein weiterer Ansatz zur Reduzierung der Varianz in MINHASH besteht darin,k der Mindestwerte einer Hash-Funktion beizubehalten. In diesem Fall kann der Jaccard-Index so approximiert werden:
|
|
Ist ein Synonym für APPROXIMATE_JACCARD_INDEX und kann auf dieselbe Weise implementiert werden. |
|
|
|
Hinweis: AVG in BigQuery führt keine automatische Umwandlung von STRING s aus. |
|
INTEGER um. |
|
Hinweis: BigQuery wandelt Zeichen-/Textspalten nicht implizit in die nächste INTEGER um. |
|
Hinweis: BigQuery wandelt Zeichen-/Textspalten nicht implizit in die nächste INTEGER um. |
Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
|
Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
|
Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
Für numerischen Ausdruck:
Zur Verwendung von OVER können Sie Folgendes ausführen (boolesches Beispiel bereitgestellt):
|
|
|
|
|
|
|
|
|
|
BigQuery unterstützt keine direkte Alternative zu den GROUPING von Snowflake. Verfügbar über eine benutzerdefinierte Funktion. |
|
BigQuery unterstützt keine direkte Alternative zu den GROUPING_ID von Snowflake. Verfügbar über eine benutzerdefinierte Funktion. |
|
BIT_XOR( FARM_FINGERPRINT( TO_JSON_STRING(t))) [OVER] AUS t AUSWÄHLEN |
Hinweis: In Snowflake können Sie keine Genauigkeit angeben. |
Hinweis: HLL_COUNT… mit Fensterfunktionen wird von BigQuery nicht unterstützt. Nutzer können in einer einzelnen HLL_COUNT... -Funktion nicht mehrere Ausdrücke angeben. |
Hinweis: In Snowflake können Sie keine Genauigkeit angeben. |
HLL_COUNT.INIT (expression [, precision]) |
|
HLL_COUNT.MERGE_PARTIAL (Skizze) |
|
|
|
BigQuery unterstützt keine direkte Alternative zu den HLL_EXPORT von Snowflake. |
|
BigQuery unterstützt keine direkte Alternative zu den HLL_IMPORT von Snowflake. |
|
BigQuery unterstützt keine direkte Alternative zu den KURTOSIS von Snowflake. |
|
|
Hinweis: Snowflake unterstützt nicht die Möglichkeit, IGNORE|RESPECT NULLS und LIMIT direkt in ARRAY_AGG. zu verwalten. |
|
|
|
|
Mit einer benutzerdefinierten UDF können Sie MINHASH mit k verschiedenen Hash-Funktionen implementieren. Ein weiterer Ansatz zur Reduzierung der Varianz in MINHASH besteht darin, k der Mindestwerte einer Hash-Funktion beizubehalten: SELECT DISTINCT FARM_FINGERPRINT( TO_JSON_STRING(t)) AS MINHASH
|
|
<code<select FROM ( SELECT DISTINCT FARM_FINGERPRINT( TO_JSON_STRING(t)) AS h FROM TA AS t ORDER BY h LIMIT k UNION SELECT DISTINCT FARM_FINGERPRINT( TO_JSON_STRING(t)) AS h FROM TB AS t ORDER BY h LIMIT k ) ORDER BY h LIMIT k |
|
|
|
Sie können TO_JSON_STRING verwenden, um einen Wert in einen JSON-formatierten String umzuwandeln. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigQuery unterstützt keine direkte Alternative zum SKEW von Snowflake. |
|
|
|
|
|
|
|
|
Hinweis: In Snowflake können VARCHAR in Gleitkommawerte umgewandelt werden. |
|
Hinweis: In Snowflake können VARCHAR in Gleitkommawerte umgewandelt werden. |
|
Hinweis: In Snowflake können VARCHAR in Gleitkommawerte umgewandelt werden. |
|
Hinweis: In Snowflake können VARCHAR in Gleitkommawerte umgewandelt werden. |
|
BigQuery bietet auch die folgenden Aggregat-, Aggregatanalyse- und ungefähren Aggregatfunktionen, die kein direktes Äquivalent in Snowflake haben:
Funktionen für bitweise Ausdrücke
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen bitweisen Snowflake-Ausdrucksfunktionen mit ihren BigQuery-Entsprechungen.
Wenn der Datentyp eines Ausdrucks nicht INTEGER
ist, versucht Snowflake, ihn in INTEGER
umzuwandeln. In BigQuery wird jedoch keine Umwandlung in INTEGER
versucht.
Snowflake | BigQuery |
---|---|
|
|
|
|
|
|
|
|
BITSHIFTRIGHT
|
|
Hinweis: DISTINCT. wird von Snowflake nicht unterstützt. |
|
Funktionen für bedingte Ausdrücke
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen bedingten Snowflake-Ausdrücken und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
|
|
Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
|
Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
|
BOOLOR Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
|
BOOLXOR Hinweis: In Snowflake können numerische, Dezimal- und Gleitkommawerte als TRUE behandelt werden, wenn sie nicht null sind. |
BigQuery unterstützt keine direkte Alternative zum BOOLXOR. von Snowflake. |
|
|
Hinweis: Für Snowflake sind mindestens zwei Ausdrücke erforderlich. BigQuery benötigt nur einen. |
|
|
DECODE von Snowflake reproduzieren. Der Nutzer muss IS NULL anstelle von = NULL verwenden, um NULL -Auswahlausdrücke mit NULL -Suchausdrücken abzugleichen. |
|
BigQuery unterstützt keine direkte Alternative zum EQUAL_NULL. von Snowflake. |
|
|
|
|
|
|
|
|
|
BigQuery unterstützt keine direkte Alternative zum IS [ NOT ] DISTINCT FROM. von Snowflake. |
|
|
|
VARIANT -Datentypen werden von BigQuery nicht unterstützt. |
|
|
|
|
|
|
|
|
|
REGR... -Funktionen von Snowflake. |
|
Hinweis: BigQuery unterstützt keine direkte Alternative zu den REGR... -Funktionen von Snowflake. |
|
|
Kontextfunktionen
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen Snowflake-Kontextfunktionen und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
Hinweis: Kein direkter Vergleich. Snowflake gibt die Konto-ID zurück, BigQuery die E-Mail-Adresse des Nutzers. |
|
Konzept wird in BigQuery nicht verwendet |
|
Dadurch wird eine Tabelle mit Projektnamen zurückgegeben. Kein direkter Vergleich. |
|
Hinweis: Snowflake erzwingt „()“ nach dem Befehl CURRENT_DATE nicht, um ANSI-Standards zu erfüllen. |
Hinweis: Der BigQuery-Befehl CURRENT_DATE unterstützt die optionale Angabe einer Zeitzone. |
Hinweis: INFORMATION_SCHEMA.SCHEMATA in BigQuery gibt allgemeinere Standortreferenzen zurück als CURRENT_REGION() in Snowflake. Kein direkter Vergleich. |
|
Konzept wird in BigQuery nicht verwendet |
|
Dadurch wird eine Tabelle mit allen Datasets (auch Schemas genannt) zurückgegeben, die im Projekt oder in der Region verfügbar sind. Kein direkter Vergleich. |
|
Konzept wird in BigQuery nicht verwendet |
|
Konzept wird in BigQuery nicht verwendet |
|
Hinweis: Mit INFORMATION_SCHEMA.JOBS_BY_* in BigQuery können Sie nach Abfragen nach Jobtyp, Start-/Endtyp usw. suchen. |
|
Hinweis: Snowflake ermöglicht eine optionale Genauigkeit mit Bruchteilen einer Sekunde. Gültige Werte reichen von 0 bis 9 Nanosekunden. Der Standardwert ist 9. Zur Einhaltung von ANSI kann dies ohne „()“ aufgerufen werden. |
|
Hinweis: Snowflake ermöglicht eine optionale Genauigkeit mit Bruchteilen einer Sekunde. Gültige Werte reichen von 0 bis 9 Nanosekunden. Der Standardwert ist 9. Zur Einhaltung von ANSI kann dies ohne „()“ aufgerufen werden. Legen Sie TIMEZONE als Sitzungsparameter fest. |
Hinweis:
CURRENT_DATETIME gibt den Datentyp DATETIME zurück, der in Snowflake nicht unterstützt wird. CURRENT_TIMESTAMP gibt den Datentyp TIMESTAMP zurück. |
INFORMATION_SCHEMA.JOBS_BY_* in BigQuery können Sie nach Job-IDs nach Jobtyp, Start-/Endtyp usw. suchen. |
|
Hinweis: Snowflake erzwingt „()“ nach dem Befehl CURRENT_USER nicht, um ANSI-Standards zu erfüllen. |
|
Konzept wird in BigQuery nicht verwendet |
|
|
|
|
Hinweis: Mit INFORMATION_SCHEMA.JOBS_BY_* in BigQuery können Sie nach Job-IDs nach Jobtyp, Start-/Endtyp usw. suchen. |
Hinweis: Mit INFORMATION_SCHEMA.JOBS_BY_* in BigQuery können Sie nach Job-IDs nach Jobtyp, Start-/Endtyp usw. suchen. |
|
Hinweis: Snowflake erzwingt „()“ nach dem Befehl LOCALTIME nicht, um ANSI-Standards zu erfüllen. |
|
Hinweis:
CURRENT_DATETIME gibt den Datentyp DATETIME zurück, der in Snowflake nicht unterstützt wird. CURRENT_TIMESTAMP gibt den Datentyp TIMESTAMP zurück. |
Umrechnungsfunktionen
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen Snowflake-Konvertierungsfunktionen und ihren BigQuery-Entsprechungen.
Beachten Sie, dass Funktionen, die in Snowflake und BigQuery identisch erscheinen, unterschiedliche Datentypen zurückgeben können.
Snowflake | BigQuery |
---|---|
|
|
|
|
Hinweis: Snowflake unterstützt die Konvertierung von HEX , BASE64 und UTF-8 . Snowflake unterstützt auch TO_BINARY mit dem Datentyp VARIANT . BigQuery hat keine Alternative zum Datentyp VARIANT . |
Hinweis: Für die standardmäßige STRING -Codierung in BigQuery wird die UTF-8 -Codierung verwendet. Snowflake unterstützt keine BASE32 -Codierung. |
Hinweis:
|
Hinweis:
|
Hinweis: Die Formatmodelle von Snowflake finden Sie in diesem Artikel. BigQuery hat keine Alternative zum Datentyp VARIANT . |
Hinweis: Der Eingabeausdruck von BigQuery kann mit FORMAT_DATE , FORMAT_DATETIME , FORMAT_TIME oder FORMAT_TIMESTAMP formatiert werden. |
Hinweis: In Snowflake können INTEGER -Typen direkt in DATE -Typen konvertiert werden. Die Formatmodelle von Snowflake finden Sie hier. BigQuery hat keine Alternative zum Datentyp VARIANT . |
Hinweis: Der Eingabeausdruck in BigQuery kann mit FORMAT , FORMAT_DATETIME oder FORMAT_TIMESTAMP formatiert werden. |
Hinweis: Die Formatmodelle von Snowflake für die Datentypen DECIMAL , NUMBER und NUMERIC finden Sie hier. BigQuery hat keine Alternative zum Datentyp VARIANT . |
Hinweis: Der Eingabeausdruck von BigQuery kann mit FORMAT. formatiert werden. |
Hinweis: Die Formatmodelle von Snowflake für die DOUBLE -Datentypen finden Sie hier. BigQuery hat keine Alternative zum Datentyp VARIANT . |
Hinweis: Der Eingabeausdruck von BigQuery kann mit FORMAT. formatiert werden. |
|
BigQuery hat keine Alternative zum Datentyp VARIANT von Snowflake. |
|
BigQuery hat keine Alternative zum Datentyp VARIANT von Snowflake. |
Hinweis: Die Formatmodelle von Snowflake für die STRING -Datentypen finden Sie hier. BigQuery hat keine Alternative zum Datentyp VARIANT . |
Hinweis: BigQuery hat keine Alternative zum Datentyp VARIANT von Snowflake. Der BigQuery-Eingabeausdruck kann mit FORMAT , FORMAT_DATETIME , FORMAT_TIMESTAMP oder FORMAT_TIME formatiert werden. |
Hinweis: BigQuery bietet keine Alternative zum Datentyp VARIANT . |
Hinweis: Der Eingabeausdruck in BigQuery kann mit FORMAT , FORMAT_DATE , FORMAT_DATETIME und FORMAT_TIME formatiert werden. Die Zeitzone kann über FORMAT_TIMESTAMP -Parameter einbezogen oder nicht einbezogen werden. |
|
BigQuery hat keine Alternative zum Datentyp VARIANT von Snowflake. |
|
BigQuery hat keine Alternative zum Datentyp VARIANT von Snowflake. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigQuery bietet außerdem die folgenden Conversion-Funktionen, die in Snowflake keine direkte Entsprechung haben:
CODE_POINTS_TO_BYTES
CODE_POINTS_TO_STRING
FORMAT
FROM_BASE32
FROM_BASE64
FROM_HEX
SAFE_CONVERT_BYTES_TO_STRING
TO_BASE32
TO_CODE_POINTS
Funktionen zur Datengenerierung
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen Snowflake-Funktionen zur Datengenerierung und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
|
BigQuery unterstützt keinen direkten Vergleich mit NORMAL. von Snowflake. |
|
Hinweis: BigQuery unterstützt keine Auslöser. |
|
BigQuery unterstützt keinen direkten Vergleich mit RANDSTR. von Snowflake. |
SEQ1 / SEQ2 / SEQ4 / SEQ8 |
BigQuery unterstützt keinen direkten Vergleich mit SEQ_. von Snowflake. |
|
Hinweis:Mithilfe von persistenten UDFs können Sie ein Äquivalent zu UNIFORM in Snowflake erstellen. Beispiel hier. |
UUID_STRING([uuid, name]) Hinweis: Snowflake gibt 128 zufällige Bits zurück. Snowflake unterstützt UUIDs Version 4 (zufällig) und Version 5 (benannt) |
Hinweis: BigQuery gibt 122 zufällige Bits zurück. BigQuery unterstützt nur UUIDs der Version 4. |
|
BigQuery unterstützt keinen direkten Vergleich mit ZIPF. von Snowflake. |
Funktionen für Datum und Uhrzeit
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen Snowflake-Datums- und -Uhrzeitfunktionen mit ihren BigQuery-Entsprechungen. BigQuery-Datums- und -Uhrzeitfunktionen umfassen Datumsfunktionen, Datums-/Uhrzeitfunktionen, Uhrzeitfunktionen und Zeitstempelfunktionen.
Snowflake | BigQuery |
---|---|
|
|
|
Hinweis: „source_timezone“ ist in BigQuery immer UTC. |
Hinweis: Snowflake unterstützt Überlauf und negative Datumsangaben. Zum Beispiel gibt DATE_FROM_PARTS(2000, 1 + 24, 1) den 1. Januar 2002 zurück. Dies wird in BigQuery nicht unterstützt. |
|
Hinweis: Snowflake unterstützt die Teiletypen ISO-Wochentag, Nanosekunde und Epochensekunde/Millisekunde/Mikrosekunde/Nanosekunde. BigQuery tut dies nicht. Eine vollständige Liste der Snowflake-Teiletypen finden Sie hier
. . |
Hinweis: BigQuery unterstützt die Teiletypen "Woche(<Wochentag>)", "Mikrosekunde" und "Millisekunden". Snowflake tut dies nicht. Die vollständige Liste der BigQuery-Teiletypen finden Sie hier und hier. |
Hinweis: Snowflake unterstützt den Typ „Nanosekunden“. BigQuery tut dies nicht. Eine vollständige Liste der Snowflake-Teiletypen finden Sie hier
. . |
Hinweis: BigQuery unterstützt die Teiletypen "Woche(<Wochentag>)", ISO-Woche und ISO-Jahre. Snowflake tut dies nicht. |
|
|
Hinweis: In Snowflake wird mit dieser Funktion die Differenz zwischen zwei Datums-, Uhrzeit- und Zeitstempeltypen berechnet. |
Hinweis: BigQuery unterstützt die Teiletypen "week(<weekday>)" und "ISO-Jahre". |
|
|
Hinweis: Snowflake unterstützt die Teiletypen ISO-Wochentag, Nanosekunde und Epochensekunde/Millisekunde/Mikrosekunde/Nanosekunde. BigQuery tut dies nicht. Eine vollständige Liste der Snowflake-Teiletypen finden Sie hier
. . |
Hinweis: BigQuery unterstützt die Teiletypen "Woche(<Wochentag>)", "Mikrosekunde" und "Millisekunden". Snowflake tut dies nicht. Die vollständige Liste der BigQuery-Teiletypen finden Sie hier und hier. |
|
|
|
|
|
|
|
Hinweis: Möglicherweise muss „dowString“ neu formatiert werden. Zum Beispiel ist „su“ von Snowflake der „SUNDAY“ von BigQuery. |
|
Hinweis: Möglicherweise muss „dowString“ neu formatiert werden. Zum Beispiel ist „su“ von Snowflake der „SUNDAY“ von BigQuery. |
Hinweis: Snowflake unterstützt Überlaufzeiten. Beispiel: TIME_FROM_PARTS(0, 100, 0) gibt 01:40:00 zurück...
Dies wird in BigQuery nicht unterstützt. Nanosekunden werden in BigQuery nicht unterstützt. |
|
|
Hinweis: BigQuery unterstützt keinen direkten, genauen Vergleich mit TIME_SLICE von Snowflake. Verwenden Sie DATETINE_TRUNC , TIME_TRUNC oder TIMESTAMP_TRUNC für den entsprechenden Datentyp. |
|
|
Hinweis: In Snowflake wird mit dieser Funktion die Differenz zwischen zwei Datums-, Uhrzeit- und Zeitstempeltypen berechnet. |
Hinweis: BigQuery unterstützt die Teiletypen "week(<weekday>)" und "ISO-Jahre". |
|
Hinweis: In BigQuery müssen Zeitstempel als STRING -Typen eingegeben werden. Beispiel: "2008-12-25 15:30:00" |
|
|
Hinweis: In Snowflake wird mit dieser Funktion die Differenz zwischen zwei Datums-, Uhrzeit- und Zeitstempeltypen berechnet. |
Hinweis: BigQuery unterstützt die Teiletypen "week(<weekday>)" und "ISO-Jahre". |
Hinweis: Snowflake unterstützt den Typ „Nanosekunden“. BigQuery tut dies nicht. Eine vollständige Liste der Snowflake-Teiletypen finden Sie hier
. . |
Hinweis: BigQuery unterstützt die Teiletypen "Woche(<Wochentag>)", ISO-Woche und ISO-Jahre. Snowflake tut dies nicht. |
|
|
BigQuery bietet außerdem die folgenden Datums- und Uhrzeitfunktionen, die in Snowflake keine direkte Entsprechung haben:
Informationsschema- und Tabellenfunktionen
Viele der Informationsschema- und Tabellenfunktionen von Snowflake werden in BigQuery nicht unterstützt. Snowflake bietet die folgenden Schema- und Tabellenfunktionen, die in BigQuery keine direkte Entsprechung haben:
AUTOMATIC_CLUSTERING_HISTORY
COPY_HISTORY
DATA_TRANSFER_HISTORY
DATABASE_REFRESH_HISTORY
DATABASE_REFRESH_PROGRESS, DATABASE_REFRESH_PROGRESS_BY_JOB
DATABASE_STORAGE_USAGE_HISTORY
EXTERNAL_TABLE_FILES
EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY
LOGIN_HISTORY
,LOGIN_HISTORY_BY_USER
MATERIALIZED_VIEW_REFRESH_HISTORY
PIPE_USAGE_HISTORY
REPLICATION_USAGE_HISTORY
STAGE_STORAGE_USAGE_HISTORY
TASK_DEPENDENTS
VALIDATE_PIPE_LOAD
WAREHOUSE_LOAD_HISTORY
WAREHOUSE_METERING_HISTORY
Unten finden Sie eine Liste der zugehörigen BigQuery- und Snowflake-Informationsschema- und Tabellenfunktionen.
Snowflake | BigQuery |
---|---|
QUERY_HISTORY QUERY_HISTORY_BY_* |
INFORMATION_SCHEMA.JOBS_BY_* Hinweis: Keine direkte Alternative. |
TASK_HISTORY |
INFORMATION_SCHEMA.JOBS_BY_* Hinweis: Keine direkte Alternative. |
BigQuery bietet die folgenden Schema- und Tabellenfunktionen, die in Snowflake keine direkte Entsprechung haben:
INFORMATION_SCHEMA.SCHEMATA
INFORMATION_SCHEMA.ROUTINES
INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.VIEWS
Numerische Funktionen
Die folgende Tabelle zeigt Zuordnungen zwischen gängigen Snowflake-Zahlenfunktionen und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hinweis: CEIL von BigQuery unterstützt keine Möglichkeit, die Genauigkeit oder Skalierung anzugeben. In ROUND können Sie keine Rundung festlegen. |
|
|
|
|
|
|
|
|
|
|
|
BigQuery hat keine direkte Alternative zum FACTORIAL von Snowflake. Verwenden Sie eine benutzerdefinierte Funktion. |
|
Hinweis: FLOOR von BigQuery unterstützt keine Möglichkeit, die Genauigkeit oder Skalierung anzugeben. In ROUND können Sie keine Rundung festlegen. TRUNC funktioniert für positive Zahlen, aber nicht für negative Zahlen, da der Absolutwert berechnet wird. |
|
Hinweis: Keine genaue Übereinstimmung, aber nah dran. |
|
|
|
Hinweis: Die Standardbasis für LOG ist 10. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hinweis: Der zurückgegebene Wert von BigQuery muss kleiner sein als der Ausdruck. Er unterstützt nicht „ist gleich mit“. |
BigQuery bietet außerdem die folgenden mathematischen Funktionen, die in Snowflake kein direktes Äquivalent haben:
IS_INF
IS_NAN
IEEE_DIVIDE
DIV
SAFE_DIVIDE
SAFE_MULTIPLY
SAFE_NEGATE
SAFE_ADD
SAFE_SUBTRACT
RANGE_BUCKET
Funktionen für semistrukturierte Daten
Snowflake | BigQuery |
---|---|
ARRAY_APPEND |
Benutzerdefinierte Funktion |
ARRAY_CAT |
ARRAY_CONCAT |
ARRAY_COMPACT |
Benutzerdefinierte Funktion |
ARRAY_CONSTRUCT |
[ ] |
ARRAY_CONSTRUCT_COMPACT |
Benutzerdefinierte Funktion |
ARRAY_CONTAINS |
Benutzerdefinierte Funktion |
ARRAY_INSERT |
Benutzerdefinierte Funktion |
ARRAY_INTERSECTION |
Benutzerdefinierte Funktion |
ARRAY_POSITION |
Benutzerdefinierte Funktion |
ARRAY_PREPEND |
Benutzerdefinierte Funktion |
ARRAY_SIZE |
ARRAY_LENGTH |
ARRAY_SLICE |
Benutzerdefinierte Funktion |
ARRAY_TO_STRING |
ARRAY_TO_STRING |
ARRAYS_OVERLAP |
Benutzerdefinierte Funktion |
AS_<object_type> |
CAST |
AS_ARRAY |
CAST |
AS_BINARY |
CAST |
AS_BOOLEAN |
CAST |
AS_CHAR , AS_VARCHAR |
CAST |
AS_DATE |
CAST |
AS_DECIMAL , AS_NUMBER |
CAST |
AS_DOUBLE , AS_REAL |
CAST |
AS_INTEGER |
CAST |
AS_OBJECT |
CAST |
AS_TIME |
CAST |
AS_TIMESTAMP_* |
CAST |
CHECK_JSON |
Benutzerdefinierte Funktion |
CHECK_XML |
Benutzerdefinierte Funktion |
FLATTEN |
UNNEST |
GET |
Benutzerdefinierte Funktion |
GET_IGNORE_CASE |
Benutzerdefinierte Funktion |
|
Benutzerdefinierte Funktion |
IS_<object_type> |
Benutzerdefinierte Funktion |
IS_ARRAY |
Benutzerdefinierte Funktion |
IS_BINARY |
Benutzerdefinierte Funktion |
IS_BOOLEAN |
Benutzerdefinierte Funktion |
IS_CHAR , IS_VARCHAR |
Benutzerdefinierte Funktion |
IS_DATE , IS_DATE_VALUE |
Benutzerdefinierte Funktion |
IS_DECIMAL |
Benutzerdefinierte Funktion |
IS_DOUBLE , IS_REAL |
Benutzerdefinierte Funktion |
IS_INTEGER |
Benutzerdefinierte Funktion |
IS_OBJECT |
Benutzerdefinierte Funktion |
IS_TIME |
Benutzerdefinierte Funktion |
IS_TIMESTAMP_* |
Benutzerdefinierte Funktion |
OBJECT_CONSTRUCT |
Benutzerdefinierte Funktion |
OBJECT_DELETE |
Benutzerdefinierte Funktion |
OBJECT_INSERT |
Benutzerdefinierte Funktion |
PARSE_JSON |
JSON_EXTRACT |
PARSE_XML |
Benutzerdefinierte Funktion |
STRIP_NULL_VALUE |
Benutzerdefinierte Funktion |
STRTOK_TO_ARRAY |
SPLIT |
TRY_PARSE_JSON |
Benutzerdefinierte Funktion |
TYPEOF |
Benutzerdefinierte Funktion |
XMLGET |
Benutzerdefinierte Funktion |
String- und Binärfunktionen
Snowflake | BigQuery |
---|---|
|
|
ASCII |
|
BASE64_DECODE_BINARY |
|
BASE64_DECODE_STRING |
|
BASE64_ENCODE |
|
BIT_LENGTH |
CHARACTER_LENGTH |
|
|
CHR,CHAR |
|
COLLATE |
Benutzerdefinierte Funktion |
COLLATION |
Benutzerdefinierte Funktion |
COMPRESS |
Benutzerdefinierte Funktion |
|
CONCAT (...) in BigQuery unterstützt die Verkettung einer beliebigen Anzahl von Strings. |
CONTAINS |
Benutzerdefinierte Funktion |
DECOMPRESS_BINARY |
Benutzerdefinierte Funktion |
DECOMPRESS_STRING |
Benutzerdefinierte Funktion |
EDITDISTANCE |
EDIT_DISTANCE |
ENDSWITH |
Benutzerdefinierte Funktion |
HEX_DECODE_BINARY |
|
HEX_DECODE_STRING |
|
HEX_ENCODE |
|
ILIKE |
Benutzerdefinierte Funktion |
ILIKE ANY |
Benutzerdefinierte Funktion |
INITCAP |
INITCAP |
INSERT |
Benutzerdefinierte Funktion |
LEFT |
Benutzerdefinierte Funktion |
LENGTH |
|
LIKE |
LIKE |
LIKE ALL |
Benutzerdefinierte Funktion |
LIKE ANY |
Benutzerdefinierte Funktion |
LOWER |
|
LPAD |
|
LTRIM |
|
|
|
MD5_BINARY |
Benutzerdefinierte Funktion |
OCTET_LENGTH |
Benutzerdefinierte Funktion |
PARSE_IP |
Benutzerdefinierte Funktion |
PARSE_URL |
Benutzerdefinierte Funktion |
POSITION |
|
REPEAT |
|
REPLACE |
|
REVERSE
|
|
RIGHT |
Benutzerdefinierte Funktion |
RPAD |
RPAD |
RTRIM |
|
RTRIMMED_LENGTH |
Benutzerdefinierte Funktion |
SHA1,SHA1_HEX |
|
SHA1_BINARY |
Benutzerdefinierte Funktion |
SHA2,SHA2_HEX |
Benutzerdefinierte Funktion |
SHA2_BINARY |
Benutzerdefinierte Funktion |
SOUNDEX |
Benutzerdefinierte Funktion |
SPACE |
Benutzerdefinierte Funktion |
SPLIT |
SPLIT |
SPLIT_PART |
Benutzerdefinierte Funktion |
SPLIT_TO_TABLE |
Benutzerdefinierte Funktion |
STARTSWITH |
Benutzerdefinierte Funktion |
STRTOK |
Hinweis: Das gesamte delimiter-Stringargument wird als einzelnes Trennzeichen verwendet. Das Standardtrennzeichen ist ein Komma. |
STRTOK_SPLIT_TO_TABLE |
Benutzerdefinierte Funktion |
SUBSTR,SUBSTRING |
SUBSTR |
TRANSLATE |
Benutzerdefinierte Funktion |
TRIM |
TRIM |
TRY_BASE64_DECODE_BINARY |
Benutzerdefinierte Funktion |
TRY_BASE64_DECODE_STRING |
|
TRY_HEX_DECODE_BINARY |
|
TRY_HEX_DECODE_STRING |
|
UNICODE |
Benutzerdefinierte Funktion |
|
UPPER |
Stringfunktionen (reguläre Ausdrücke)
Snowflake | BigQuery |
---|---|
REGEXP |
|
REGEXP_COUNT |
Wenn position angegeben ist
Hinweis: BigQuery unterstützt reguläre Ausdrücke mithilfe der re2-Bibliothek; in der jeweiligen Dokumentation finden Sie weitere Informationen zur Syntax der regulären Ausdrücke. |
REGEXP_INSTR |
Wenn position angegeben ist:
Wenn occurrence angegeben ist
Hinweis: BigQuery unterstützt reguläre Ausdrücke mithilfe der re2-Bibliothek; in der jeweiligen Dokumentation finden Sie weitere Informationen zur Syntax der regulären Ausdrücke. |
|
|
REGEXP_REPLACE |
Wenn replace_string angegeben ist
Wenn position angegeben ist
Hinweis: BigQuery unterstützt reguläre Ausdrücke mithilfe der re2-Bibliothek; in der jeweiligen Dokumentation finden Sie weitere Informationen zur Syntax der regulären Ausdrücke. |
REGEXP_SUBSTR |
Wenn position angegeben ist
Wenn occurrence angegeben ist
Hinweis: BigQuery unterstützt reguläre Ausdrücke mithilfe der re2-Bibliothek; in der jeweiligen Dokumentation finden Sie weitere Informationen zur Syntax der regulären Ausdrücke. |
RLIKE |
|
Systemfunktionen
Snowflake | BigQuery |
---|---|
SYSTEM$ABORT_SESSION |
Benutzerdefinierte Funktion |
SYSTEM$ABORT_TRANSACTION |
Benutzerdefinierte Funktion |
SYSTEM$CANCEL_ALL_QUERIES |
Benutzerdefinierte Funktion |
SYSTEM$CANCEL_QUERY |
Benutzerdefinierte Funktion |
SYSTEM$CLUSTERING_DEPTH |
Benutzerdefinierte Funktion |
SYSTEM$CLUSTERING_INFORMATION |
Benutzerdefinierte Funktion |
SYSTEM$CLUSTERING_RATIO — Deprecated |
Benutzerdefinierte Funktion |
SYSTEM$CURRENT_USER_TASK_NAME |
Benutzerdefinierte Funktion |
SYSTEM$DATABASE_REFRESH_HISTORY |
Benutzerdefinierte Funktion |
SYSTEM$DATABASE_REFRESH_PROGRESS , SYSTEM$DATABASE_REFRESH_PROGRESS_BY_JOB |
Benutzerdefinierte Funktion |
SYSTEM$GET_AWS_SNS_IAM_POLICY |
Benutzerdefinierte Funktion |
SYSTEM$GET_PREDECESSOR_RETURN_VALUE |
Benutzerdefinierte Funktion |
SYSTEM$LAST_CHANGE_COMMIT_TIME |
Benutzerdefinierte Funktion |
SYSTEM$PIPE_FORCE_RESUME |
Benutzerdefinierte Funktion |
SYSTEM$PIPE_STATUS |
Benutzerdefinierte Funktion |
SYSTEM$SET_RETURN_VALUE |
Benutzerdefinierte Funktion |
SYSTEM$SHOW_OAUTH_CLIENT_SECRETS |
Benutzerdefinierte Funktion |
SYSTEM$STREAM_GET_TABLE_TIMESTAMP |
Benutzerdefinierte Funktion |
SYSTEM$STREAM_HAS_DATA |
Benutzerdefinierte Funktion |
SYSTEM$TASK_DEPENDENTS_ENABLE |
Benutzerdefinierte Funktion |
SYSTEM$TYPEOF |
Benutzerdefinierte Funktion |
SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS |
Benutzerdefinierte Funktion |
SYSTEM$WAIT |
Benutzerdefinierte Funktion |
SYSTEM$WHITELIST |
Benutzerdefinierte Funktion |
SYSTEM$WHITELIST_PRIVATELINK |
Benutzerdefinierte Funktion |
Tabellenfunktionen
Snowflake | BigQuery | |
---|---|---|
GENERATOR |
Benutzerdefinierte Funktion | |
GET_OBJECT_REFERENCES |
Benutzerdefinierte Funktion | |
RESULT_SCAN |
Benutzerdefinierte Funktion | |
VALIDATE |
Benutzerdefinierte Funktion |
Hilfs- und Hash-Funktionen
Snowflake | BigQuery | |
---|---|---|
GET_DDL |
Funktionsanfrage | |
HASH |
HASH ist eine proprietäre Snowflake-Funktion. Kann nicht übersetzt werden, ohne die zugrunde liegende Logik von Snowflake zu kennen. |
Fensterfunktionen
Snowflake | BigQuery | |
---|---|---|
CONDITIONAL_CHANGE_EVENT |
Benutzerdefinierte Funktion | |
CONDITIONAL_TRUE_EVENT |
Benutzerdefinierte Funktion | |
CUME_DIST |
CUME_DIST |
|
DENSE_RANK |
DENSE_RANK |
|
FIRST_VALUE |
FIRST_VALUE |
|
LAG |
LAG |
|
LAST_VALUE |
LAST_VALUE |
|
LEAD |
LEAD |
|
NTH_VALUE |
NTH_VALUE |
|
NTILE |
NTILE |
|
PERCENT_RANK |
PERCENT_RANK |
|
RANK |
RANK |
|
RATIO_TO_REPORT |
Benutzerdefinierte Funktion | |
ROW_NUMBER |
ROW_NUMBER |
|
WIDTH_BUCKET |
Benutzerdefinierte Funktion |
BigQuery unterstützt auch SAFE_CAST
(ASN-Typname). Dieser gibt NULL zurück, wenn BigQuery keine Umwandlung durchführen kann (z. B. SAFE_CAST
(„apple“ AS INT64) gibt NULL zurück).
Operatoren
In den folgenden Abschnitten werden die Snowflake-Operatoren und ihre BigQuery-Entsprechungen aufgeführt.
Arithmetischer Operator
Die folgende Tabelle zeigt Zuordnungen zwischen den arithmetischen Operatoren von Snowflake und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
|
|
|
|
|
Hinweis: BigQuery unterstützt das standardmäßige unäre Minuszeichen, konvertiert aber keine Ganzzahlen im Stringformat in den Typ INT64 , NUMERIC oder FLOAT64 . |
|
|
|
|
|
|
|
|
|
|
Details zu Skalierung und Genauigkeit bei arithmetischen Vorgängen in Snowflake finden Sie in der Snowflake-Dokumentation.
Vergleichsoperator
Vergleichsoperatoren von Snowflake und Vergleichsoperatoren von BigQuery sind identisch.
Logische/boolesche Operatoren
Logische/boolesche Operatoren von Snowflake und logische/boolesche Operatoren von BigQuery sind identisch.
Set-Operatoren
Die folgende Tabelle zeigt Zuordnungen zwischen den Set-Operatoren von Snowflake und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
|
INTERSECT DISTINCT
|
Hinweis: MINUS und EXCEPT sind Synonyme. |
|
|
|
Operatoren für untergeordnete Abfragen
Die folgende Tabelle zeigt Zuordnungen zwischen den Subquery-Operatoren von Snowflake und ihren BigQuery-Entsprechungen.
Snowflake | BigQuery |
---|---|
|
BigQuery unterstützt keine direkte Alternative zu ALL/ANY von Snowflake. |
|
|
|
|
|
Hinweis: BigQuery benötigt Klammern, um verschiedene Set-Vorgänge zu trennen. Wenn derselbe Set-Operator wiederholt wird, sind keine Klammern erforderlich. |
DML-Syntax
In diesem Abschnitt werden Unterschiede in der Syntax der Datenverwaltungssprache zwischen Snowflake und BigQuery behandelt.
INSERT
-Anweisung
Snowflake bietet ein konfigurierbares DEFAULT
-Schlüsselwort für Spalten. In BigQuery lautet der DEFAULT
-Wert für Spalten mit zulässigen Nullwerten NULL und DEFAULT
wird für die erforderlichen Spalten nicht unterstützt. Die meisten Snowflake-INSERT
-Anweisungen sind mit BigQuery kompatibel. Die folgende Tabelle enthält Ausnahmen.
Snowflake | BigQuery |
---|---|
Hinweis: BigQuery unterstützt nicht das Einfügen von JSON -Objekten mit einer INSERT -Anweisung. |
VALUES (DEFAULT [, ...]) Hinweis: BigQuery unterstützt keine direkte Alternative zum OVERWRITE von Snowflake. Verwenden Sie stattdessen DELETE . |
|
|
... Hinweis:
<intoClause> steht für die oben aufgeführte Standard-INSERT statement . |
In BigQuery werden keine bedingten und unbedingten INSERTs für mehrere Tabellen unterstützt. |
BigQuery unterstützt auch das Einfügen von Werten mithilfe einer Unterabfrage (wobei einer der Werte mithilfe einer Unterabfrage berechnet wird), was in Snowflake nicht unterstützt wird. Beispiel:
INSERT INTO table (column1, column2)
VALUES ('value_1', (
SELECT column2
FROM table2
))
COPY
-Anweisung
Snowflake unterstützt das Kopieren von Daten aus Staging-Dateien in eine vorhandene Tabelle und aus einer Tabelle in eine benannte interne Phase, eine benannte externe Phase und einen externen Speicherort (Amazon S3, Google Cloud Storage oder Microsoft Azure).
BigQuery verwendet nicht den Befehl COPY
, um Daten zu laden. Sie können jedoch eines bzw. eine der verschiedenen Nicht-SQL-Tools und -Optionen verwenden, um Daten in BigQuery-Tabellen zu laden. Sie können auch Datenpipeline-Senken verwenden, die in Apache Spark oder Apache Beam bereitgestellt werden, um Daten in BigQuery zu schreiben.
UPDATE
-Anweisung
Die meisten Snowflake-UPDATE
-Anweisungen sind mit BigQuery kompatibel. Die folgende Tabelle enthält Ausnahmen.
Snowflake | BigQuery | |
---|---|---|
|
Hinweis: Alle UPDATE -Anweisungen in BigQuery erfordern das Schlüsselwort WHERE , gefolgt von einer Bedingung. |
DELETE
- und TRUNCATE TABLE
-Anweisungen
Die Anweisungen DELETE
und TRUNCATE TABLE
sind beide Möglichkeiten zum Entfernen von Zeilen aus einer Tabelle, ohne dass sich dies auf das Tabellenschema oder die Indexe auswirkt.
In Snowflake werden gelöschte Daten sowohl in DELETE
als auch in TRUNCATE TABLE
mithilfe der Zeitreisefunktion von Snowflake für die Dauer der Datenaufbewahrung aufbewahrt.
Mit DELETE werden jedoch nicht der Verlauf des Ladens externer Dateien und die Lademetadaten gelöscht.
In BigQuery muss die DELETE
-Anweisung eine WHERE
-Klausel enthalten. Weitere Informationen zu DELETE
in BigQuery finden Sie in den BigQuery-DELETE
-Beispielen in der DML-Dokumentation.
Snowflake | BigQuery |
---|---|
|
Hinweis: BigQuery- DELETE -Anweisungen erfordern eine WHERE -Klausel. |
MERGE
-Anweisung
Die MERGE
-Anweisung kann die Vorgänge INSERT
, UPDATE
und DELETE
in einer einzigen „upsert“ -Anweisung kombinieren und die Vorgänge automatisch ausführen. Der MERGE
-Vorgang muss mit maximal einer Quellzeile für jede Zielzeile übereinstimmen.
BigQuery-Tabellen sind auf 1.000 DML-Anweisungen pro Tag beschränkt. Daher sollten Sie INSERT-, UPDATE- und DELETE-Anweisungen optimal in einer einzigen MERGE-Anweisung zusammenfassen, wie in der folgenden Tabelle dargestellt:
Snowflake | BigQuery |
---|---|
Hinweis: Snowflake unterstützt den Sitzungsparameter ERROR_ON_NONDETERMINISTIC_MERGE für die Verarbeitung nicht deterministischer Ergebnisse. |
Hinweis: Alle Spalten müssen aufgelistet werden, wenn alle Spalten aktualisiert werden. |
GET
- und LIST
-Anweisungen
Mit der Anweisung GET
werden Datendateien aus einer der folgenden Snowflake-Phasen in ein lokales Verzeichnis bzw. einen lokalen Ordner auf einem Clientrechner heruntergeladen:
- Benannte interne Phase
- Interne Phase für eine bestimmte Tabelle
- Interne Phase für den aktuellen Nutzer
Die LIST
-(LS-)Anweisung gibt eine Liste von Dateien zurück, die in einer der folgenden Snowflake-Phasen bereitgestellt wurden (d. h. von einem lokalen Dateisystem hochgeladen oder aus einer Tabelle entladen):
- Benannte interne Phase
- Benannte externe Phase
- Stufe für eine bestimmte Tabelle
- Phase für den aktuellen Nutzer
BigQuery unterstützt das Konzept des Staging nicht und hat keine Entsprechungen für GET
und LIST
.
PUT
- und REMOVE
-Anweisungen
Mit der PUT
-Anweisung werden Datendateien (d. h. Phasen) aus einem lokalen Verzeichnis bzw. Ordner auf einem Clientcomputer in eine der folgenden Snowflake-Phasen hochgeladen:
- Benannte interne Phase
- Interne Phase für eine bestimmte Tabelle
- Interne Phase für den aktuellen Nutzer
Mit der Anweisung REMOVE
(RM)
werden Dateien entfernt, die in einer der folgenden internen Snowflake-Phasen bereitgestellt wurden:
- Benannte interne Phase
- Stufe für eine bestimmte Tabelle
- Phase für den aktuellen Nutzer
BigQuery unterstützt das Konzept des Staging nicht und hat keine Entsprechungen für PUT
und REMOVE
.
DDL-Syntax
In diesem Abschnitt werden Unterschiede in der Syntax der Datendefinitionssprache zwischen Snowflake und BigQuery behandelt.
Datenbank-, Schema- und Freigabe-DDL
Die meisten Begriffe in Snowflake stimmen mit denen in BigQuery überein, mit der Ausnahme, dass eine Snowflake-Datenbank dem BigQuery-Dataset ähnelt. Detaillierte Zuordnung der Terminologie von Snowflake zu BigQuery
CREATE DATABASE
-Anweisung
Snowflake unterstützt das Erstellen und Verwalten einer Datenbank über Befehle zur Datenbankverwaltung, während BigQuery mehrere Optionen wie die Verwendung der Console, der Befehlszeile, Clientbibliotheken usw. zum Erstellen von Datasets{ bietet. In diesem Abschnitt werden BigQuery-Befehlszeilenbefehle verwendet, die den Snowflake-Befehlen entsprechen, um die Unterschiede hervorzuheben.
Snowflake | BigQuery |
---|---|
Hinweis: Snowflake stellt diese Anforderungen für die Benennung von Datenbanken bereit. Der Name darf nur 255 Zeichen lang sein. |
Hinweis: BigQuery hat ähnliche Dataset-Benennungsanforderungen wie Snowflake, mit dem Unterschied, dass im Namen 1.024 Zeichen zulässig sind. |
|
Das Ersetzen des Datensatzes wird in BigQuery nicht unterstützt. |
|
Das Erstellen temporärer Datasets wird in BigQuery nicht unterstützt. |
|
Konzept wird in BigQuery nicht unterstützt |
|
Das Klonen von Datasets wird in BigQuery noch nicht unterstützt. |
|
Zeitreisen auf Datasetebene werden in BigQuery nicht unterstützt. Die Zeitreise für Tabellen- und Abfrageergebnisse wird jedoch unterstützt. |
|
Die Sortierung in DDL wird in BigQuery nicht unterstützt. |
|
|
|
Das Erstellen freigegebener Datensätze wird in BigQuery nicht unterstützt. Nutzer können das Dataset jedoch über die Console oder die Benutzeroberfläche freigeben, sobald es erstellt wurde. |
Hinweis: Snowflake bietet die Option für die automatische Hintergrundwartung von materialisierten Ansichten in der sekundären Datenbank, was in BigQuery nicht unterstützt wird. |
|
BigQuery bietet auch die folgenden bq mk
-Befehlsoptionen, die in Snowflake kein direktes Äquivalent haben:
--location <dataset_location>
--default_table_expiration <time_in_seconds>
--default_partition_expiration <time_in_seconds>
ALTER DATABASE
-Anweisung
In diesem Abschnitt werden BigQuery-Befehlszeilenbefehle verwendet, die den Snowflake-Befehlen entsprechen, um die Unterschiede bei ALTER-Anweisungen zu beheben.
Snowflake | BigQuery |
---|---|
|
Das Umbenennen von Datasets wird in BigQuery nicht unterstützt. Das Kopieren von Datasets ist jedoch möglich. |
|
Das Austauschen von Datasets wird in BigQuery nicht unterstützt. |
|
Die Verwaltung der Datenaufbewahrung und -zusammenstellung auf Dataset-Ebene wird in BigQuery nicht unterstützt. |
|
|
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
|
Dieses Konzept wird in BigQuery nicht unterstützt. |
DROP DATABASE
-Anweisung
In diesem Abschnitt wird der BigQuery-Befehlszeilenbefehl verwendet, der dem Befehl „Snowflake“ entspricht, um den Unterschied in der DROP-Anweisung zu beheben.
Snowflake | BigQuery |
---|---|
Hinweis: In Snowflake wird eine Datenbank durch das Löschen nicht dauerhaft aus dem System entfernt. Eine Version der gelöschten Datenbank wird für die Anzahl der Tage aufbewahrt, die mit dem Parameter DATA_RETENTION_TIME_IN_DAYS für die Datenbank angegeben ist. |
-r werden alle Objekte im Dataset entfernt
-d steht für DatasetHinweis: In BigQuery ist das Löschen eines Datasets endgültig. Außerdem wird die Kaskadenerstellung auf Dataset-Ebene nicht unterstützt, da alle Daten und Objekte im Dataset gelöscht werden. |
Snowflake unterstützt auch den Befehl UNDROP DATASET
, mit dem die neueste Version eines gelöschten Datensatzes wiederhergestellt wird. Das wird in BigQuery derzeit nicht auf Dataset-Ebene unterstützt.
USE DATABASE
-Anweisung
In Snowflake können Sie die Datenbank für eine Nutzersitzung mit dem Befehl USE DATABASE
festlegen. So müssen in SQL-Befehlen keine voll qualifizierten Objektnamen mehr angegeben werden. BigQuery bietet keine Alternative zum Befehl „USE DATABASE“ von Snowflake.
SHOW DATABASE
-Anweisung
In diesem Abschnitt wird der BigQuery-CLI-Befehl verwendet, der dem Befehl „Snowflake“ entspricht, um den Unterschied in der SHOW-Anweisung zu beheben.
Snowflake | BigQuery |
---|---|
Hinweis: In Snowflake gibt es eine einzige Option, mit der alle Datenbanken aufgelistet und Details zu allen Datenbanken angezeigt werden, einschließlich gelöschter Datenbanken, die sich noch im Aufbewahrungszeitraum befinden. |
bq ls --format=prettyjsonund / oder
Hinweis: In BigQuery enthält der Befehl „ls“ nur Dataset-Namen und grundlegende Informationen. Der Befehl „einblenden“ enthält Details wie den Zeitstempel der letzten Änderung, ACLs und Labels eines Datasets. In BigQuery finden Sie über das Information Schema weitere Details zu den Datasets. |
Hinweis: Mit der TERSE-Option ermöglicht Snowflake die Anzeige nur bestimmter Informationen/Felder zu Datasets. |
Dieses Konzept wird in BigQuery nicht unterstützt. |
Das Konzept der Zeitreise wird in BigQuery nicht auf Datasetebene unterstützt. | |
SHOW DATABASES
|
Das Filtern von Ergebnissen nach Dataset-Namen wird in BigQuery nicht unterstützt. Das Filtern nach Labels wird jedoch unterstützt. |
SHOW DATABASES
Hinweis: In Snowflake wird die Anzahl der Ergebnisse standardmäßig nicht begrenzt. Der Wert für LIMIT darf jedoch 10.000 nicht überschreiten. |
Hinweis: Standardmäßig zeigt BigQuery nur 50 Ergebnisse an. |
BigQuery bietet auch die folgenden bq
-Befehlsoptionen, die in Snowflake kein direktes Äquivalent haben:
- bq ls --format=pretty: Gibt einfach formatierte Ergebnisse zurück
- *bq ls -a: *Gibt nur anonyme Datasets zurück (die mit einem Unterstrich beginnen)
- bq ls --all: Gibt alle Datasets zurück, einschließlich anonymer Datasets
- bq ls --filter labels.key:value: Gibt Ergebnisse zurück, die nach Dataset-Label gefiltert sind
- bq ls --d: Ausschlüsse anonymer Datasets aus den Ergebnissen
- bq show --format=pretty: Gibt detaillierte grundlegend formatierte Ergebnisse für alle Datasets zurück
SCHEMA
-Verwaltung
Snowflake bietet mehrere Schemaverwaltungsbefehle ähnlich wie die Befehle zur Datenbankverwaltung. Dieses Konzept zum Erstellen und Verwalten von Schemas wird in BigQuery nicht unterstützt.
Mit BigQuery können Sie jedoch das Schema einer Tabelle angeben, wenn Sie Daten in eine Tabelle laden oder eine leere Tabelle erstellen. Für unterstützte Datenformate können Sie alternativ auch die automatische Schemaerkennung nutzen.
SHARE
-Verwaltung
Snowflake bietet mehrere Freigabeverwaltungsbefehle wie die Datenbank- und Schemaverwaltungsbefehle. Das Erstellen und Verwalten von Freigaben wird in BigQuery nicht unterstützt.
DDL für Tabellen, Ansichten und Sequenzen
CREATE TABLE
-Anweisung
Die meisten Snowflake-CREATE TABLE
-Anweisungen sind mit BigQuery kompatibel, mit Ausnahme der folgenden Syntaxelemente, die in BigQuery nicht verwendet werden:
Snowflake | BigQuery |
---|---|
Hinweis: UNIQUE - und PRIMARY KEY -Einschränkungen sind informativ und werden vom Snowflake-System nicht erzwungen. |
|
Dabei gilt: table_constraints sind:
Hinweis:
UNIQUE - und PRIMARY KEY -Einschränkungen sind informativ und werden vom Snowflake-System nicht erzwungen. |
Hinweis: BigQuery verwendet keine UNIQUE -, PRIMARY KEY -, FOREIGN - oder KEY -Tabelleneinschränkungen. Um eine ähnliche Optimierung zu erreichen, die diese Einschränkungen während der Abfrageausführung gewährleisten, partitionieren und clustern Sie Ihre BigQuery-Tabellen. CLUSTER BY unterstützt bis zu vier Spalten. |
|
In diesem Beispiel erfahren Sie, wie Sie mit den INFORMATION_SCHEMA -Tabellen Spaltennamen, Datentypen und NOT NULL-Einschränkungen in eine neue Tabelle kopieren. |
Hinweis: In Snowflake ist die Einstellung BACKUP NO angegeben, um „Verarbeitungszeit beim Erstellen von Snapshots und Wiederherstellen aus Snapshots zu sparen und Speicherplatz zu reduzieren“. |
Die Tabellenoption BACKUP NO wird nicht verwendet oder benötigt, da BigQuery automatisch bis zu 7 Tage an früheren Versionen aller Tabellen speichert, ohne dass sich dies auf die Verarbeitungszeit oder den abgerechneten Speicher auswirkt. |
Dabei gilt: table_attributes sind:
|
BigQuery unterstützt das Clustering, sodass Schlüssel in sortierter Reihenfolge gespeichert werden können. |
|
|
|
|
BigQuery unterstützt auch die DDL-Anweisung CREATE OR REPLACE
TABLE
-Anweisung, mit der eine Tabelle überschrieben wird, wenn sie bereits vorhanden ist.
Die CREATE TABLE
-Anweisung von BigQuery unterstützt auch die folgenden Klauseln, für die es kein Snowflake-Äquivalent gibt:
Weitere Informationen zu CREATE TABLE
in BigQuery finden Sie in der DDL-Dokumentation unter Beispiele für CREATE TABLE
-Anweisungen.
ALTER TABLE
-Anweisung
In diesem Abschnitt werden BigQuery-Befehlszeilenbefehle verwendet, die den Snowflake-Befehlen entsprechen, um die Unterschiede in ALTER-Anweisungen für Tabellen hervorzuheben.
Snowflake | BigQuery |
---|---|
|
|
|
Das Austauschen von Tabellen wird in BigQuery nicht unterstützt. |
|
Die Datensortierung für Tabellen wird in BigQuery nicht unterstützt. |
|
|
|
|
Darüber hinaus bietet Snowflake Clustering-, Spalten- und Einschränkungsoptionen zum Ändern von Tabellen, die von BigQuery nicht unterstützt werden.
DROP TABLE
- und UNDROP TABLE
-Anweisungen
In diesem Abschnitt wird der BigQuery-CLI-Befehl verwendet, der dem Befehl „Snowflake“ entspricht, um den Unterschied in den Anweisungen DROP und UNDROP zu beheben.
Snowflake | BigQuery |
---|---|
Hinweis: In Snowflake wird eine Tabelle durch das Löschen nicht dauerhaft aus dem System entfernt. Eine Version der gelöschten Tabelle wird für die Anzahl der Tage aufbewahrt, die mit dem Parameter DATA_RETENTION_TIME_IN_DAYS für die Datenbank angegeben wurde. |
-f überspringt die Bestätigung für die Ausführung -d gibt das Dataset an Hinweis: In BigQuery ist das Löschen einer Tabelle nicht endgültig, aber ein Snapshot bleibt derzeit nur sieben Tage lang erhalten. |
|
Hinweis: In BigQuery müssen Sie zuerst einen UNIX-Zeitstempel in Millisekunden für die Zeit ermitteln, in der die Tabelle existiert hat. Kopieren Sie die Tabelle dann mit diesem Zeitstempel in eine neue Tabelle. Die neue Tabelle muss einen anderen Namen als die gelöschte Tabelle haben. |
CREATE EXTERNAL TABLE
-Anweisung
In BigQuery können Sie sowohl permanente als auch temporäre externe Tabellen erstellen und Daten direkt aus den folgenden Quellen abfragen:
In Snowflake können Sie eine permanente externe Tabelle erstellen, bei der bei einer Abfrage Daten aus einer oder mehreren Dateien in einer bestimmten externen Phase gelesen werden.
In diesem Abschnitt wird der BigQuery-CLI-Befehl verwendet, der dem Befehl „Snowflake“ entspricht, um die Unterschiede in der Anweisung CREATE EXTERNAL TABLE zu beheben.
Snowflake | BigQuery |
---|---|
CREATE [OR REPLACE] EXTERNAL TABLE
Hinweis: Snowflake ermöglicht das Staging der Dateien mit Daten, die gelesen werden sollen, und legt Optionen für das Format von externen Tabellen fest. Die Snowflake-Formattypen CSV, JSON, AVRO, PARQUET und ORC werden von BigQuery unterstützt, mit Ausnahme des XML-Typs. |
Hinweis: In BigQuery können Sie eine permanente Tabelle erstellen, die mit Ihrer Datenquelle verknüpft ist, indem Sie eine Tabellendefinitionsdatei [1], eine JSON-Schemadatei [2] oder eine Inline-Schemadefinition [3] verwenden. Das Staging von Dateien zum Lesen und das Angeben von Optionen für den Formattyp werden in BigQuery nicht unterstützt. |
|
Hinweis: BigQuery unterstützt derzeit keine der optionalen Parameteroptionen von Snowflake zum Erstellen externer Tabellen. Für die Partitionierung wird in BigQuery die Pseudospalte _FILE_NAME unterstützt, um partitionierte Tabellen/Ansichten über den externen Tabellen zu erstellen. Weitere Informationen finden Sie unter _FILE_NAME -Pseudospalte abfragen. |
Darüber hinaus unterstützt BigQuery auch das Abfragen extern partitionierter Daten in den Formaten AVRO, PARQUET, ORC, JSON und CSV, die die auf Google Cloud Storage gespeichert sind und ein Standardlayout für Hive-Partitionierung. verwenden.
CREATE VIEW
-Anweisung
Die folgende Tabelle zeigt Entsprechungen zwischen Snowflake und BigQuery für die Anweisung CREATE VIEW
.
Snowflake | BigQuery |
---|---|
|
|
|
CREATE OR REPLACE VIEW
|
|
|
Nicht unterstützt | CREATE VIEW IF NOT EXISTS
|
|
In BigQuery müssen alle referenzierten Objekte bereits vorhanden sein, um eine Ansicht zu erstellen. Mit BigQuery können Sie externe Datenquellen abfragen. |
CREATE SEQUENCE
-Anweisung
Sequenzen werden in BigQuery nicht verwendet und können mit der folgenden Batchmethode erreicht werden. Weitere Informationen zu Ersatzschlüsseln und zu einer langsam ändernden Dimension (SCD) finden Sie in den folgenden Anleitungen:
|
---|
Laden und Entladen von Daten DDL
Snowflake unterstützt das Laden und Entladen von Daten über Befehle zur Verwaltung von Phasen, Dateiformaten und Pipelines. BigQuery bietet auch mehrere Optionen, z. B. zum bq load, BigQuery Data Transfer Service, bq extract usw. In diesem Abschnitt werden die Unterschiede in der Verwendung dieser Methoden zum Laden und Entladen von Daten erläutert.
Konto- und Sitzungs-DDL
Die Konto- und Sitzungskonzepte von Snowflake werden in BigQuery nicht unterstützt. In BigQuery können Konten auf allen Ebenen über Cloud IAM verwaltet werden. Außerdem werden Transaktionen mit mehreren Anweisungen in BigQuery noch nicht unterstützt.
Benutzerdefinierte Funktionen (UDF)
Mit einer UDF können Sie Funktionen für benutzerdefinierte Vorgänge erstellen. Diese Funktionen akzeptieren Spalten als Eingabe, führen Aktionen aus und geben das Ergebnis dieser Aktionen als Wert zurück.
Sowohl Snowflake als auch BigQuery unterstützen UDFs mit SQL-Ausdrücken und JavaScript-Code.
Im GitHub-Repository GoogleCloudPlatform/bigquery-utils/ finden Sie eine Bibliothek gängiger BigQuery-UDFs.
CREATE FUNCTION
-Syntax
In der folgenden Tabelle werden die Unterschiede in der SQL-UDF-Erstellungssyntax zwischen Snowflake und BigQuery behandelt.
Snowflake | BigQuery |
---|---|
|
Hinweis: In einer BigQuery-SQL-UDF ist der Rückgabedatentyp optional. BigQuery leitet den Ergebnistyp der Funktion aus dem SQL-Funktionsrumpf ab, wenn eine Abfrage die Funktion aufruft. |
|
Hinweis: In BigQuery SQL-UDF wird der zurückgegebene Tabellentyp derzeit nicht unterstützt. Er ist aber in Planung und wird bald verfügbar sein. BigQuery unterstützt jedoch die Rückgabe von ARRAY vom Typ STRUCT. |
Hinweis: Snowflake bietet eine sichere Option zum Einschränken der UDF-Definition und der Details auf autorisierte Nutzer (d. h., auf die Nutzer, denen die Rolle gehört, die die Ansicht besitzt). |
Hinweis: Die Sicherheit der Funktion ist in BigQuery kein konfigurierbarer Parameter. In BigQuery können Sie IAM-Rollen und -Berechtigungen erstellen, um den Zugriff auf die zugrunde liegenden Daten und die Funktionsdefinition einzuschränken. |
|
Hinweis: Das Verhalten von Funktionen bei Nulleingabe wird in BigQuery implizit verarbeitet und muss nicht als separate Option angegeben werden. |
|
Hinweis: Die Volatilität der Funktion ist in BigQuery kein konfigurierbarer Parameter. Die gesamte BigQuery-UDF-Volatilität entspricht der IMMUTABLE -Volatilität von Snowflake (d.0h., sie führt keine Datenbanksuche durch und verwendet keine Informationen, die nicht direkt in der Argumentliste vorhanden sind). |
|
CREATE [OR REPLACE] FUNCTION
Hinweis: Die Verwendung von einfachen Anführungszeichen oder einer Zeichensequenz wie Dollarzeichen ($$) is not required or supported in BigQuery. BigQuery implicitly interprets the SQL expression. |
|
Note:Adding comments or descriptions in UDFs is currently not supported in BigQuery. |
|
Note: BigQuery supports using ANY TYPE as argument type. The function will accept an input of any type for this argument. For more information, see templated parameter in BigQuery. |
BigQuery also supports the CREATE FUNCTION IF NOT EXISTS
statement
which treats the query as successful and takes no action if a function with the
same name already exists.
BigQuery's CREATE FUNCTION
statement also supports creating
TEMPORARY or TEMP functions
,
which do not have a Snowflake equivalent. See
calling UDFs
for details on executing a BigQuery persistent UDF.
DROP FUNCTION
syntax
The following table addresses differences in DROP FUNCTION syntax between Snowflake and BigQuery.
Snowflake | BigQuery |
---|---|
|
Note: BigQuery does not require using the function's signature (argument data type) for deleting the function. |
BigQuery requires that you specify the project_name
if
the function is not located in the current project.
Additional function commands
This section covers additional UDF commands supported by Snowflake that are not directly available in BigQuery.
ALTER FUNCTION
syntax
Snowflake supports the following operations using
ALTER FUNCTION
syntax.
- Renaming a UDF
- Converting to (or reverting from) a secure UDF
- Adding, overwriting, removing a comment for a UDF
As configuring function security and adding function comments is not available in BigQuery, ALTER FUNCTION syntax is currently not supported. However, the CREATE FUNCTION statement can be used to create a UDF with the same function definition but a different name.
DESCRIBE FUNCTION
syntax
Snowflake supports describing a UDF using DESC[RIBE] FUNCTION syntax. This is currently not supported in BigQuery. However, querying UDF metadata via INFORMATION SCHEMA will be available soon as part of the product roadmap.
SHOW USER FUNCTIONS
syntax
In Snowflake, SHOW USER FUNCTIONS syntax can be used to list all UDFs for which users have access privileges. This is currently not supported in BigQuery. However, querying UDF metadata via INFORMATION SCHEMA will be available soon as part of the product roadmap.
Stored procedures
Snowflake stored procedures are written in JavaScript, which can execute SQL statements by calling a JavaScript API. In BigQuery, stored procedures are defined using a block of SQL statements.
CREATE PROCEDURE
syntax
In Snowflake, a stored procedure is executed with a CALL command while in BigQuery, stored procedures are executed like any other BigQuery function.
The following table addresses differences in stored procedure creation syntax between Snowflake and BigQuery.
Snowflake | BigQuery |
---|---|
Note: Snowflake requires that stored procedures return a single value. Hence, return data type is a required option. |
CREATE [OR REPLACE] PROCEDURE
Note: BigQuery doesn't support a return type for stored procedures. Also, it requires specifying argument mode for each argument passed. |
|
|
|
CREATE [OR REPLACE] PROCEDURE
Hinweis: Das Verhalten von Prozeduren bei Nulleingabe wird in BigQuery implizit verarbeitet und muss nicht als separate Option angegeben werden. |
CREATE [OR REPLACE] PROCEDURE
|
Hinweis: Die Volatilität der Prozedur ist in BigQuery kein konfigurierbarer Parameter. Sie entspricht der IMMUTABLE -Volatilität von Snowflake. |
CREATE [OR REPLACE] PROCEDURE
|
Hinweis: Das Hinzufügen von Kommentaren oder Beschreibungen in Prozedurdefinitionen wird derzeit in BigQuery nicht unterstützt. |
CREATE [OR REPLACE] PROCEDURE
Hinweis: In Snowflake kann der Aufrufer oder Eigentümer des Verfahrens für die Ausführung angegeben werden. |
Hinweis: Gespeicherte BigQuery-Prozeduren werden immer als Aufrufer ausgeführt. |
BigQuery unterstützt auch die Anweisung CREATE PROCEDURE IF NOT EXISTS
, die die Abfrage als erfolgreich behandelt und keine Aktion ausführt, wenn bereits eine Funktion mit demselben Namen vorhanden ist.
DROP PROCEDURE
-Syntax
In der folgenden Tabelle werden die Unterschiede in der DROP FUNCTION-Syntax zwischen Snowflake und BigQuery behandelt.
Snowflake | BigQuery |
---|---|
|
Hinweis: BigQuery erfordert zum Löschen der Prozedur nicht die Signatur der Prozedur (Argumentdatentyp). |
BigQuery erfordert, dass Sie project_name
angeben, wenn sich die Prozedur nicht im aktuellen Projekt befindet.
Zusätzliche Befehle für Abläufe
Snowflake bietet zusätzliche Befehle wie ALTER PROCEDURE
, DESC[RIBE] PROCEDURE
und SHOW PROCEDURES
zum Verwalten der gespeicherten Prozeduren. Sie werden derzeit in BigQuery nicht unterstützt.
Metadaten- und Transaktions-SQL-Anweisungen
Snowflake | BigQuery |
---|---|
|
BigQuery verwendet immer die Snapshot-Isolation. Weitere Informationen finden Sie an anderer Stelle in diesem Dokument unter Konsistenzgarantien. |
|
Wird in BigQuery nicht verwendet. |
|
Wird in BigQuery nicht verwendet. |
|
Wird in BigQuery nicht verwendet. |
Mehrfachanweisungen und mehrzeilige SQL-Anweisungen
Sowohl Snowflake als auch BigQuery unterstützen Transaktionen (Sitzungen) und unterstützen daher durch Semikolons getrennte Anweisungen, die konsistent zusammen ausgeführt werden. Weitere Informationen finden Sie unter Transaktionen mit mehreren Anweisungen.
Metadatenspalten für bereitgestellte Dateien
Snowflake generiert automatisch Metadaten für Dateien in internen und externen Phasen. Diese Metadaten können zusammen mit regulären Datenspalten abgefragt und in eine Tabelle geladen werden. Die folgenden Metadatenspalten können verwendet werden:
Konsistenzgarantien und Transaktionsisolation
Sowohl Snowflake als auch BigQuery sind unteilbar, d. h. ACID-konform auf Mutationsebene über viele Zeilen hinweg.
Transaktionen
Jedem Snowflake-Transaktion wird eine eindeutige Startzeit (einschließlich Millisekunden) zugewiesen, die als Transaktions-ID festgelegt wird. Snowflake unterstützt nur die Isolationsebene READ COMMITTED
. Eine Anweisung kann jedoch Änderungen sehen, die von einer anderen Anweisung vorgenommen wurden, wenn sich beide in derselben Transaktion befinden, auch wenn diese Änderungen noch nicht bestätigt wurden. Snowflake-Transaktionen erwerben Sperren für Ressourcen (Tabellen), wenn diese geändert werden. Nutzer können die maximale Wartezeit für eine blockierte Anweisung anpassen, bis die Anweisung abläuft. DML-Anweisungen werden automatisch verbindlich, wenn der Parameter AUTOCOMMIT
aktiviert ist.
BigQuery unterstützt auch Transaktionen. BigQuery sorgt mit der Snapshot-Isolation für eine optimistische Gleichzeitigkeitserkennung (der erste Commit erhält Vorrang), bei der eine Abfrage die letzten übergebenen Daten liest, bevor die Abfrage beginnt. Dieser Ansatz sorgt für die gleiche Konsistenz auf Zeilen- und Mutationsbasis sowie zeilenübergreifend innerhalb derselben DML-Anweisung, vermeidet dabei jedoch Deadlocks. Bei mehreren DML-Aktualisierungen für dieselbe Tabelle wechselt BigQuery zur pessimistischen Nebenläufigkeitserkennung. Ladejobs können vollständig unabhängig ausgeführt und an Tabellen angefügt werden. BigQuery bietet jedoch noch keine explizite Transaktionsgrenze oder Sitzung.
Rollback
Wenn die Sitzung einer Snowflake-Transaktion unerwartet beendet wird, bevor die Transaktion festgeschrieben oder zurückgesetzt wurde, bleibt sie im getrennten Zustand. Der Nutzer sollte SYSTEM$ABORT_TRANSACTION ausführen, um die getrennte Transaktion abzubrechen. Andernfalls wird sie von Snowflake nach vier Stunden Inaktivität zurückgerollt. Wenn ein Deadlock auftritt, erkennt Snowflake dies und wählt die aktuellere Anweisung zum Zurückrollen aus. Wenn die DML-Anweisung in einer explizit geöffneten Transaktion fehlschlägt, werden die Änderungen rückgängig gemacht, die Transaktion bleibt jedoch geöffnet, bis sie committet oder rückgängig gemacht wird. Für DDL-Anweisungen in Snowflake kann kein Rollback durchgeführt werden, da für sie automatisch ein Commit durchgeführt wird.
BigQuery unterstützt die Anweisung ROLLBACK TRANSACTION
.
In BigQuery gibt es keine ABORT
-Anweisung.
Datenbanklimits
Die aktuellen Kontingente und Limits finden Sie immer in der öffentlichen BigQuery-Dokumentation . Viele Kontingente für Nutzer mit hohem Datenvolumen können durch Kontaktaufnahme mit dem Cloud-Supportteam erhöht werden.
Für alle Snowflake-Konten sind standardmäßig Softlimits festgelegt. Die Softlimits werden beim Erstellen des Kontos festgelegt und können variieren. Viele Snowflake-Softlimits können über das Snowflake-Kontoteam oder ein Supportticket erhöht werden.
Die folgende Tabelle zeigt einen Vergleich der Snowflake- und BigQuery-Datenbanklimits.
Limit | Snowflake | BigQuery |
---|---|---|
Größe des Abfragetexts | 1 MB | 1 MB |
Maximale Anzahl gleichzeitiger Abfragen | XS Warehouse - 8 S Warehouse - 16 M Warehouse - 32 L Warehouse - 64 XL Warehouse - 128 |
100 |