Guida alla traduzione SQL di Snowflake
Questo documento descrive le analogie e le differenze nella sintassi SQL tra Snowflake e BigQuery per accelerare la pianificazione e l'esecuzione di spostando il tuo EDW (Enterprise Data Warehouse) in BigQuery. Dati Snowflake Il warehousing è progettato in modo da funzionare con la sintassi SQL specifica di Snowflake. Script scritto per Snowflake potrebbe essere necessario apportare modifiche prima di poter essere utilizzati in in BigQuery, perché i dialetti SQL variano tra i servizi. Utilizza le funzionalità di traduzione SQL batch in eseguire la migrazione collettiva degli script SQL traduzione SQL interattiva per tradurre query ad hoc. L'SQL Snowflake è supportato in anteprima.
Tipi di dati
Questa sezione mostra gli equivalenti tra i tipi di dati in Snowflake e in in BigQuery.
Snowflake | BigQuery | Note |
---|---|---|
NUMBER/
DECIMAL/NUMERIC |
NUMERIC |
Il tipo di dati NUMBER in Snowflake supporta 38 cifre di precisione e 37 cifre di scala. La precisione e la scalabilità possono essere specificate in base all'utente.BigQuery supporta NUMERIC e BIGNUMERIC con precisione e scalabilità specificate facoltativamente entro determinati limiti. |
INT/INTEGER |
BIGNUMERIC |
INT/INTEGER e tutti gli altri tipi di dati simili a INT , ad esempio BIGINT, TINYINT, SMALLINT, BYTEINT rappresentano un alias per il tipo di dati NUMBER in cui la precisione e la scala non possono essere specificate ed è sempre NUMBER(38, 0) |
BIGINT |
BIGNUMERIC |
|
SMALLINT |
BIGNUMERIC |
|
TINYINT |
BIGNUMERIC |
|
BYTEINT |
BIGNUMERIC |
|
FLOAT/ |
FLOAT64 |
Il tipo di dati FLOAT in Snowflake stabilisce "NaN" come > X, dove X è un qualsiasi valore FLOAT (diverso da "NaN").Il tipo di dati FLOAT in BigQuery stabilisce "NaN" come < X, dove X è un qualsiasi valore FLOAT (diverso da "NaN"). |
DOUBLE/ REAL |
FLOAT64 |
Il tipo di dati DOUBLE in Snowflake è sinonimo del tipo di dati FLOAT in Snowflake, ma di solito viene visualizzato erroneamente come FLOAT . È archiviato correttamente come DOUBLE . |
VARCHAR |
STRING |
Il tipo di dati VARCHAR in Snowflake ha una lunghezza massima di 16 MB (non compresso). Se la lunghezza non è specificata, il valore predefinito è la lunghezza massima.Il tipo di dati STRING in BigQuery viene memorizzato come Unicode con codifica UTF-8 di lunghezza variabile. La lunghezza massima è di 16.000 caratteri. |
CHAR/CHARACTER |
STRING |
Il tipo di dati CHAR in Snowflake ha una lunghezza massima di 1. |
STRING/TEXT |
STRING |
Il tipo di dati STRING in Snowflake è sinonimo del VARCHAR di Snowflake. |
BINARY |
BYTES |
|
VARBINARY |
BYTES |
|
BOOLEAN |
BOOL |
Il tipo di dati BOOL in BigQuery può accettare solo TRUE/FALSE , a differenza del tipo di dati BOOL in Snowflake, che può accettare TRUE/FALSE/NULL. |
DATE |
DATE |
Il tipo DATE in Snowflake accetta i formati di data più comuni, a differenza del tipo DATE in BigQuery, che accetta solo date nel formato "AAAA-[M]M-[G]G". |
TIME |
TIME |
Il tipo TIME in Snowflake supporta una precisione compresa tra 0 e 9 nanosecondi, mentre il tipo TIME in BigQuery supporta una precisione compresa tra 0 e 6 nanosecondi. |
TIMESTAMP |
DATETIME |
TIMESTAMP è un alias configurabile dall'utente che per impostazione predefinita è TIMESTAMP_NTZ , mappato a DATETIME in BigQuery. |
TIMESTAMP_LTZ |
TIMESTAMP |
|
TIMESTAMP_NTZ/DATETIME |
DATETIME |
|
TIMESTAMP_TZ |
TIMESTAMP |
|
OBJECT |
JSON |
Il tipo OBJECT in Snowflake non supporta valori digitati esplicitamente. I valori sono del tipo VARIANT . |
VARIANT |
JSON |
Il tipo OBJECT in Snowflake non supporta valori digitati esplicitamente. I valori sono del tipo VARIANT . |
ARRAY |
ARRAY<JSON> |
Il tipo ARRAY in Snowflake può supportare solo i tipi VARIANT , mentre il tipo ARRAY in BigQuery può supportare tutti i tipi di dati, ad eccezione di un array stesso. |
BigQuery include anche i seguenti tipi di dati che non hanno un indirizzo Analogico del fiocco di neve:
Sintassi delle query e operatori di query
Questa sezione illustra le differenze nella sintassi delle query tra Snowflake e in BigQuery.
Istruzione SELECT
Più alta
Istruzioni SELECT
Snowflake
sono compatibili con BigQuery. La tabella seguente contiene un elenco
differenze minime.
Snowflake | BigQuery | |
---|---|---|
|
|
|
Nota: Snowflake supporta la creazione e il riferimento a un alias nella stessa istruzione SELECT . |
|
|
|
|
Per impostazione predefinita, gli alias e gli identificatori Snowflake non fanno distinzione tra maiuscole e minuscole. Per preservare , racchiudi gli alias e gli identificatori tra virgolette doppie (").
BigQuery supporta le seguenti espressioni in SELECT
che non hanno un equivalente Snowflake:
Clausola FROM
R
Clausola FROM
in una query specifica le possibili tabelle, viste, sottoquery o funzioni di tabella per
da usare in un'istruzione SELECT. Tutti questi riferimenti tabella sono supportati in
in BigQuery.
La seguente tabella contiene un elenco di differenze di minore entità.
Snowflake | BigQuery | |
---|---|---|
|
WITH table1 AS |
|
|
|
|
|
Nota: BigQuery non dispone di un'alternativa diretta alla funzione PRIMA di Snowflake per l'utilizzo di un ID istruzione. Il valore di timestamp non può precedere di più di 7 giorni il timestamp corrente. |
|
|
BigQuery non supporta il concetto di file temporanei. |
|
|
BigQuery non offre un'alternativa diretta a |
È possibile fare riferimento alle tabelle BigQuery nella clausola FROM
utilizzando:
[project_id].[dataset_id].[table_name]
[dataset_id].[table_name]
[table_name]
BigQuery supporta anche ulteriori riferimenti tabella:
- Versioni storiche della definizione della tabella e delle righe utilizzando
FOR SYSTEM_TIME AS OF
- Percorsi campi o qualsiasi percorso che si risolve in un campo all'interno di un tipo di dati (ossia
è un
STRUCT
) - Array appiattiti
Clausola WHERE
Il fiocco di neve
WHERE
e BigQuery
WHERE
sono identiche, ad eccezione di quanto segue:
Snowflake | BigQuery | |
---|---|---|
|
SELECT col1, col2 Nota: BigQuery non supporta la sintassi (+) per JOIN |
JOIN
tipi
Snowflake e BigQuery supportano i seguenti tipi di join:
[INNER] JOIN
LEFT [OUTER] JOIN
RIGHT [OUTER] JOIN
FULL [OUTER] JOIN
CROSS JOIN
e l'equivalente "comma cross join" implicito
Sia Snowflake che BigQuery supportano la clausola ON
andUSING
.
La seguente tabella contiene un elenco di differenze di minore entità.
Snowflake | BigQuery | |
---|---|---|
|
Nota: in BigQuery, le clausole JOIN richiedono una condizione JOIN, a meno che non si tratti di un CROSS JOIN o che una delle tabelle unite sia un campo all'interno di un tipo di dati o un array. |
|
Nota: a differenza dell'output di un join non laterale, l'output di un join laterale include solo le righe generate dalla visualizzazione in linea. Le righe sul lato sinistro non devono essere unite al lato destro perché le righe a sinistra sono già state prese in considerazione poiché sono passate nella visualizzazione in linea. |
LATERAL JOIN . |
Clausola WITH
Un WITH
di BigQuery
clausola
contiene una o più sottoquery con nome che vengono eseguite ogni volta che
L'istruzione SELECT
li fa riferimento. Fiocco di neve
WITH
si comportano allo stesso modo di BigQuery con l'eccezione che
BigQuery non supporta WITH RECURSIVE
.
Clausola GROUP BY
Le clausole GROUP BY
Snowflake supportano GROUP
BY
,
GROUP BY
ROLLUP
,
GROUP BY GROUPING
SETS
,
e GROUP BY
CUBE
,
mentre le clausole GROUP BY
di BigQuery supportano GROUP
BY
e
GROUP BY
ROLLUP
Fiocco di neve
HAVING
e BigQuery
HAVING
sono
sinonimo. Tieni presente che HAVING
si verifica dopo GROUP BY
e aggregazione, e
prima del giorno ORDER BY
.
Snowflake | BigQuery | |
---|---|---|
|
|
|
|
|
|
Nota: Snowflake consente fino a 128 set di raggruppamento nello stesso blocco di query |
BigQuery non supporta un'alternativa diretta a GROUP BY GROUPING SETS di Snowflake. |
|
Nota: Snowflake consente di inserire fino a 7 elementi (128 set di raggruppamento) in ogni cubo |
BigQuery non supporta un'alternativa diretta a GROUP BY CUBE di Snowflake. |
Clausola ORDER BY
Esistono alcune piccole differenze tra
Clausole ORDER BY
Snowflake
e
Clausole ORDER BY
di BigQuery.
Snowflake | BigQuery | |
---|---|---|
In Snowflake, per impostazione predefinita, i NULL sono classificati come ultimi (in ordine crescente). |
In BigQuery, per impostazione predefinita, le NULLS sono classificate per prime (in ordine crescente). |
|
Puoi specificare se i valori NULL devono essere ordinati per primi o per ultimi utilizzando rispettivamente NULLS FIRST o NULLS LAST . |
Non esiste un equivalente per specificare se i valori NULL devono essere i primi o gli ultimi in BigQuery. |
Clausola LIMIT/FETCH
La
LIMIT/FETCH
in Snowflake vincola il numero massimo di righe restituite da una
un'istruzione o una sottoquery.
LIMIT
(sintassi Postgres) e
FETCH
(sintassi ANSI) producono lo stesso risultato.
In Snowflake e BigQuery, l'applicazione di una clausola LIMIT
a una query
non influisce sulla quantità di dati letti.
Snowflake | BigQuery | |
---|---|---|
Nota: i valori NULL , la stringa vuota ('') e i $$$$ valori sono accettati e vengono trattati come "illimitati". L'utilizzo principale è per connettori e driver. |
Nota: BigQuery non supporta FETCH . LIMIT sostituisce FETCH .Nota: in BigQuery, OFFSET deve essere utilizzato insieme a un LIMIT count . Assicurati di impostare il valore INT64 di count sul numero minimo di righe ordinate necessarie per ottenere le migliori prestazioni. Ordinare inutilmente tutte le righe di risultati comporterà un peggioramento delle prestazioni di esecuzione delle query. |
Clausola QUALIFY
La
QUALIFY
in Snowflake ti consente di filtrare i risultati in base a funzioni finestra simili
cosa fa HAVING
con le funzioni aggregate e le clausole GROUP BY
.
Snowflake | BigQuery | |
---|---|---|
|
La clausola QUALIFY Snowflake con una funzione di analisi come ROW_NUMBER() , COUNT() e con OVER PARTITION BY è espressa in BigQuery come clausola WHERE su una sottoquery che contiene il valore di analisi.ROW_NUMBER() in uso:SELECT col1, col2
Viene utilizzato ARRAY_AGG() , che supporta partizioni più grandi:
|
Funzioni
Le seguenti sezioni elencano le funzioni di Snowflake e le relative funzionalità BigQuery equivalenti.
Funzioni di aggregazione
La tabella seguente mostra le mappature tra i dati aggregati di Snowflake e aggregati analitiche e approssimative di funzioni di aggregazione con BigQuery equivalenti.
Snowflake | BigQuery |
---|---|
Nota: DISTINCT non ha alcun effetto |
|
Nota: DISTINCT non ha alcun effetto |
Nota: BigQuery non supporta APPROX_COUNT_DISTINCT con le funzioni finestra |
Nota: Snowflake non dispone dell'opzione per RESPECT NULLS |
Nota: BigQuery non supporta APPROX_QUANTILES con le funzioni finestra |
|
BigQuery non supporta la possibilità di archiviare lo stato intermedio per prevedere valori approssimativi. |
|
BigQuery non supporta la possibilità di archiviare lo stato intermedio per prevedere valori approssimativi. |
|
BigQuery non supporta la possibilità di archiviare lo stato intermedio per prevedere valori approssimativi. |
Nota: se non viene specificato alcun parametro numerico, il valore predefinito è 1. I contatori devono essere molto più grandi del numero. |
Nota: BigQuery non supporta APPROX_TOP_COUNT con le funzioni finestra. |
|
BigQuery non supporta la possibilità di archiviare lo stato intermedio per prevedere valori approssimativi. |
|
BigQuery non supporta la possibilità di archiviare lo stato intermedio per prevedere valori approssimativi. |
|
BigQuery non supporta la possibilità di archiviare lo stato intermedio per prevedere valori approssimativi. |
|
Puoi utilizzare una funzione hash personalizzata per implementare MINHASH con k funzioni hash distinte. Un altro approccio per ridurre la varianza in MINHASH è mantenerek dei valori minimi di una funzione hash. In questo caso l'indice di Jaccard può essere approssimato come segue:
|
|
È un sinonimo di APPROXIMATE_JACCARD_INDEX e può essere implementato nello stesso modo. |
|
|
|
Nota: lo strumento AVG di BigQuery non esegue la trasmissione automatica sui dispositivi STRING . |
|
INTEGER più vicino. |
|
Nota: BigQuery non trasmette implicitamente colonne di carattere/testo al INTEGER più vicino. |
|
Nota: BigQuery non trasmette implicitamente colonne di carattere/testo al INTEGER più vicino. |
Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
|
Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
|
Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
Per l'espressione numerica:
Per utilizzare OVER puoi eseguire il seguente esempio (è fornito un esempio booleano):
|
|
|
|
|
|
|
|
|
|
BigQuery non supporta un'alternativa diretta a GROUPING di Snowflake. Disponibile tramite una funzione definita dall'utente. |
|
BigQuery non supporta un'alternativa diretta a GROUPING_ID di Snowflake. Disponibile tramite una funzione definita dall'utente. |
|
SELEZIONA BIT_XOR( FARM_FINGERPRINT( TO_JSON_STRING(t))) [OVER] DA t |
Nota: Snowflake non consente di specificare la precisione. |
Nota: BigQuery non supporta HLL_COUNT… con le funzioni finestra. Un utente non può includere più espressioni in una singola funzione HLL_COUNT... . |
Nota: Snowflake non consente di specificare la precisione. |
HLL_COUNT.INIT (espressione [, precisione]) |
|
HLL_COUNT.MERGE_PARTIAL (schizzo) |
|
|
|
BigQuery non supporta un'alternativa diretta a HLL_EXPORT di Snowflake. |
|
BigQuery non supporta un'alternativa diretta a HLL_IMPORT di Snowflake. |
|
BigQuery non supporta un'alternativa diretta a KURTOSIS di Snowflake. |
|
|
Nota: Snowflake non supporta la possibilità di IGNORE|RESPECT NULLS e LIMIT direttamente in ARRAY_AGG. |
|
|
|
|
Puoi utilizzare una funzione hash personalizzata per implementare MINHASH con k funzioni hash distinte. Un altro approccio per ridurre la varianza in MINHASH è mantenere k dei valori minimi di una funzione hash: 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 |
|
|
|
Puoi prendere in considerazione l'utilizzo di TO_JSON_STRING per convertire un valore in una stringa in formato JSON. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigQuery non supporta un'alternativa diretta a SKEW di Snowflake. |
|
|
|
|
|
|
|
|
Nota: Snowflake supporta la possibilità di trasmettere VARCHAR a valori in virgola mobile. |
|
Nota: Snowflake supporta la possibilità di trasmettere VARCHAR a valori in virgola mobile. |
|
Nota: Snowflake supporta la possibilità di trasmettere VARCHAR a valori in virgola mobile. |
|
Nota: Snowflake supporta la possibilità di trasmettere VARCHAR a valori in virgola mobile. |
|
BigQuery offre anche le seguenti opzioni aggregate, analisi aggregate, e aggregata approssimativa , che non hanno un analogo diretto in Snowflake:
Funzioni di espressione a bit
La tabella seguente mostra le mappature tra l'espressione a bit comune Snowflake con i rispettivi equivalenti BigQuery.
Se il tipo di dati di un'espressione non è INTEGER
, Snowflake tenta di trasmettere
a INTEGER
. Tuttavia, BigQuery non tenta di trasmettere a INTEGER
.
Snowflake | BigQuery |
---|---|
|
|
|
|
|
|
|
|
BITSHIFTRIGHT
|
|
Nota: Snowflake non supporta DISTINCT. |
|
Funzioni di espressione condizionale
La tabella seguente mostra le mappature tra il condizionale Snowflake comune con i rispettivi equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
|
|
Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
|
Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
|
BOOLOR Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
|
BOOLXOR Nota: Snowflake consente di trattare i valori numerici, decimali e con rappresentazione in virgola mobile come TRUE se non pari a zero. |
BigQuery non supporta un'alternativa diretta a BOOLXOR. di Snowflake |
|
|
Nota: Snowflake richiede almeno due espressioni. BigQuery ne richiede solo uno. |
|
|
DECODE di Snowflake. L'utente deve utilizzare IS NULL anziché = NULL per trovare corrispondenze di NULL espressioni con espressioni di ricerca NULL . |
|
BigQuery non supporta un'alternativa diretta a EQUAL_NULL. di Snowflake |
|
|
|
|
|
|
|
|
|
BigQuery non supporta un'alternativa diretta a IS [ NOT ] DISTINCT FROM. di Snowflake |
|
|
|
BigQuery non supporta i tipi di dati VARIANT . |
|
|
|
|
|
|
|
|
|
REGR... di Snowflake. |
|
Nota: BigQuery non supporta un'alternativa diretta alle funzioni REGR... di Snowflake. |
|
|
Funzioni di contesto
La tabella seguente mostra le mappature tra funzioni di contesto comuni a Snowflake con gli equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
Nota: confronto non diretto. Snowflake restituisce l'ID account, BigQuery restituisce l'indirizzo email dell'utente. |
|
Concetto non utilizzato in BigQuery |
|
Viene restituita una tabella dei nomi dei progetti. Non è un confronto diretto. |
|
Nota: Snowflake non applica "()" dopo il comando CURRENT_DATE per rispettare gli standard ANSI. |
Nota: CURRENT_DATE di BigQuery supporta la specifica facoltativa del fuso orario. |
Nota: INFORMATION_SCHEMA.SCHEMATA di BigQuery restituisce riferimenti alla località più generalizzati rispetto a CURRENT_REGION() di Snowflake. Non è un confronto diretto. |
|
Concetto non utilizzato in BigQuery |
|
Questa operazione restituisce una tabella di tutti i set di dati (chiamati anche schemi) disponibili nel progetto o nella regione. Non è un confronto diretto. |
|
Concetto non utilizzato in BigQuery |
|
Concetto non utilizzato in BigQuery |
|
Nota: INFORMATION_SCHEMA.JOBS_BY_* di BigQuery consente di cercare query per tipo di job, tipo di inizio/fine e così via. |
|
Nota: Snowflake consente la precisione facoltativa dei secondi frazionari. I valori validi sono compresi tra 0 e 9 nanosecondi. Il valore predefinito è 9. Per rispettare lo standard ANSI, questa funzionalità può essere chiamata senza il tasto "()". |
|
Nota: Snowflake consente la precisione facoltativa dei secondi frazionari. I valori validi sono compresi tra 0 e 9 nanosecondi. Il valore predefinito è 9. Per rispettare lo standard ANSI, questa funzionalità può essere chiamata senza il tasto "()". Imposta TIMEZONE come parametro di sessione. |
Nota:
CURRENT_DATETIME restituisce il tipo di dati DATETIME (non supportato in Snowflake). CURRENT_TIMESTAMP restituisce il tipo di dati TIMESTAMP . |
INFORMATION_SCHEMA.JOBS_BY_* di BigQuery consente di cercare gli ID job per tipo, tipo di inizio/fine e così via. |
|
Nota: Snowflake non applica "()" dopo il comando CURRENT_USER per rispettare gli standard ANSI. |
|
Concetto non utilizzato in BigQuery |
|
|
|
|
Nota: INFORMATION_SCHEMA.JOBS_BY_* di BigQuery consente di cercare gli ID job per tipo, tipo di inizio/fine e così via. |
Nota: INFORMATION_SCHEMA.JOBS_BY_* di BigQuery consente di cercare gli ID job per tipo, tipo di inizio/fine e così via. |
|
Nota: Snowflake non applica "()" dopo il comando LOCALTIME per rispettare gli standard ANSI. |
|
Nota:
CURRENT_DATETIME restituisce il tipo di dati DATETIME (non supportato in Snowflake). CURRENT_TIMESTAMP restituisce il tipo di dati TIMESTAMP . |
Funzioni di conversione
La tabella seguente mostra le mappature tra le funzioni di conversione Snowflake comuni con gli equivalenti BigQuery.
Tieni presente che le funzioni che sembrano identiche in Snowflake BigQuery può restituire diversi tipi di dati.
Snowflake | BigQuery |
---|---|
|
|
|
|
Nota: Snowflake supporta le conversioni di HEX , BASE64 e UTF-8 . Snowflake supporta anche TO_BINARY con il tipo di dati VARIANT . BigQuery non ha un'alternativa al tipo di dati VARIANT . |
Nota: la trasmissione predefinita di STRING di BigQuery utilizza la codifica UTF-8 . Snowflake non dispone di un'opzione per supportare la codifica BASE32 . |
Nota:
|
Nota:
|
Nota: i modelli di formato di Snowflake sono disponibili qui. BigQuery non ha un'alternativa al tipo di dati VARIANT . |
Nota: l'espressione di input di BigQuery può essere formattata utilizzando FORMAT_DATE , FORMAT_DATETIME , FORMAT_TIME o FORMAT_TIMESTAMP . |
Nota: Snowflake supporta la possibilità di convertire direttamente i tipi INTEGER in tipi DATE . I modelli di formato di Snowflake sono disponibili qui. BigQuery non ha un'alternativa al tipo di dati VARIANT . |
Nota: l'espressione di input di BigQuery può essere formattata utilizzando FORMAT , FORMAT_DATETIME o FORMAT_TIMESTAMP . |
Nota: i modelli di formato di Snowflake per i tipi di dati DECIMAL , NUMBER e NUMERIC sono disponibili qui. BigQuery non ha un'alternativa al tipo di dati VARIANT . |
Nota: l'espressione di input di BigQuery può essere formattata utilizzando FORMAT. |
Nota: i modelli di formato di Snowflake per i DOUBLE tipi di dati sono disponibili qui. BigQuery non ha un'alternativa al tipo di dati VARIANT . |
Nota: l'espressione di input di BigQuery può essere formattata utilizzando FORMAT. |
|
BigQuery non ha un'alternativa al tipo di dati VARIANT di Snowflake. |
|
BigQuery non ha un'alternativa al tipo di dati VARIANT di Snowflake. |
Nota: i modelli di formato di Snowflake per i STRING tipi di dati sono disponibili qui. BigQuery non ha un'alternativa al tipo di dati VARIANT . |
Nota: BigQuery non dispone di un'alternativa al tipo di dati VARIANT di Snowflake. L'espressione di input di BigQuery può essere formattata utilizzando FORMAT , FORMAT_DATETIME , FORMAT_TIMESTAMP o FORMAT_TIME . |
Nota: BigQuery non dispone di un'alternativa al tipo di dati VARIANT . |
Nota: l'espressione di input di BigQuery può essere formattata utilizzando FORMAT , FORMAT_DATE , FORMAT_DATETIME , FORMAT_TIME . Il fuso orario può essere incluso/non incluso tramite i parametri FORMAT_TIMESTAMP . |
|
BigQuery non ha un'alternativa al tipo di dati VARIANT di Snowflake. |
|
BigQuery non ha un'alternativa al tipo di dati VARIANT di Snowflake. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigQuery offre anche le seguenti funzioni di conversione, che non un analogo diretto in Snowflake:
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
Funzioni di generazione dei dati
La tabella seguente mostra le mappature tra la generazione di dati comune Snowflake con i rispettivi equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
|
BigQuery non supporta un confronto diretto con NORMAL. di Snowflake |
|
Nota: BigQuery non supporta il seeding |
|
BigQuery non supporta un confronto diretto con RANDSTR. di Snowflake |
SEQ1 / SEQ2 / SEQ4 / SEQ8 |
BigQuery non supporta un confronto diretto con SEQ_. di Snowflake |
|
Nota:utilizza funzioni definite dall'utente permanenti per creare un equivalente al UNIFORM di Snowflake. Esempio qui. |
UUID_STRING([uuid, name]) Nota: Snowflake restituisce 128 bit casuali. Snowflake supporta gli UUID sia della versione 4 (casuale) che della versione 5 (denominata). |
Nota: BigQuery restituisce 122 bit casuali. BigQuery supporta solo gli UUID della versione 4. |
|
BigQuery non supporta un confronto diretto con ZIPF. di Snowflake |
Funzioni di data e ora
La tabella seguente mostra le mappature tra data e ora di Snowflake comuni con i rispettivi equivalenti BigQuery. Dati di BigQuery le funzioni temporali includono Funzioni di data, Funzioni data/ora, Funzioni temporali e Funzioni timestamp.
Snowflake | BigQuery |
---|---|
|
|
|
Nota: source_timezone è sempre UTC in BigQuery |
Nota: Snowflake supporta date extra e negative. Ad esempio, DATE_FROM_PARTS(2000, 1 + 24, 1) restituisce 1 gen 2002. Questa operazione non è supportata in BigQuery. |
|
Nota: Snowflake supporta i tipi di parte ISO, nanosecondo ed epoca secondo/millisecondo/microsecondo/nanosecondo per giorno della settimana. al contrario di BigQuery. Consulta l'elenco completo dei tipi di ricambi Snowflake qui
. |
Nota: BigQuery supporta i tipi di parte settimana (<giorno della settimana>), microsecondo e millisecondo. Snowflake non lo sa. Consulta l'elenco completo dei tipi di parte di BigQuery qui e qui. |
Nota: Snowflake supporta il tipo di parte in nanosecondi. al contrario di BigQuery. Consulta l'elenco completo dei tipi di ricambi Snowflake qui
. |
Nota: BigQuery supporta i tipi di parte settimana (<weekday>), settimana ISO e anno ISO. Snowflake non lo sa. |
|
|
Nota: Snowflake supporta il calcolo della differenza tra due tipi di data, ora e timestamp in questa funzione. |
Nota: BigQuery supporta i tipi di parte settimana (<weekday>) e anno ISO. |
|
|
Nota: Snowflake supporta i tipi di parte ISO, nanosecondo ed epoca secondo/millisecondo/microsecondo/nanosecondo per giorno della settimana. al contrario di BigQuery. Consulta l'elenco completo dei tipi di ricambi Snowflake qui
. |
Nota: BigQuery supporta i tipi di parte settimana (<giorno della settimana>), microsecondo e millisecondo. Snowflake non lo sa. Consulta l'elenco completo dei tipi di parte di BigQuery qui e qui. |
|
|
|
|
|
|
|
Nota: potrebbe essere necessario riformattare dowString. Ad esempio, "su" di Snowflake sarà "SUNDAY" di BigQuery. |
|
Nota: potrebbe essere necessario riformattare dowString. Ad esempio, "su" di Snowflake sarà "SUNDAY" di BigQuery. |
Nota: Snowflake supporta i tempi di overflow. Ad esempio, TIME_FROM_PARTS(0, 100, 0) restituisce 01:40:00... Questa operazione non è supportata in BigQuery. BigQuery non supporta i nanosecondi. |
|
|
Nota: BigQuery non supporta un confronto diretto ed esatto con i TIME_SLICE di Snowflake. Utilizza DATETINE_TRUNC , TIME_TRUNC , TIMESTAMP_TRUNC per il tipo di dati appropriato. |
|
|
Nota: Snowflake supporta il calcolo della differenza tra due tipi di data, ora e timestamp in questa funzione. |
Nota: BigQuery supporta i tipi di parte settimana (<weekday>) e anno ISO. |
|
Nota: BigQuery richiede che i timestamp siano inseriti come tipi STRING . Esempio: "2008-12-25 15:30:00" |
|
|
Nota: Snowflake supporta il calcolo della differenza tra due tipi di data, ora e timestamp in questa funzione. |
Nota: BigQuery supporta i tipi di parte settimana (<weekday>) e anno ISO. |
Nota: Snowflake supporta il tipo di parte in nanosecondi. al contrario di BigQuery. Consulta l'elenco completo dei tipi di ricambi Snowflake qui
. |
Nota: BigQuery supporta i tipi di parte settimana (<weekday>), settimana ISO e anno ISO. Snowflake non lo sa. |
|
|
BigQuery offre anche le seguenti funzioni di data e ora, che non avere un analogo diretto in Snowflake:
Schema di informazioni e funzioni tabella
Concettualmente, BigQuery non supporta molte delle informazioni di Snowflake di schema e funzioni tabella. Snowflake offre il seguente schema di informazioni e funzioni di tabella, che non hanno un'analogia diretta in BigQuery:
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
Di seguito è riportato un elenco di schema informativo di BigQuery e Snowflake associati e funzioni tabella.
Snowflake | BigQuery |
---|---|
QUERY_HISTORY QUERY_HISTORY_BY_* |
INFORMATION_SCHEMA.JOBS_BY_* Nota: non si tratta di un'alternativa diretta. |
TASK_HISTORY |
INFORMATION_SCHEMA.JOBS_BY_* Nota: non si tratta di un'alternativa diretta. |
BigQuery offre le seguenti funzioni di schema di informazioni e tabella, che non hanno un analogo diretto in Snowflake:
INFORMATION_SCHEMA.SCHEMATA
INFORMATION_SCHEMA.ROUTINES
INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.VIEWS
Funzioni numeriche
La tabella seguente mostra le mappature tra funzioni numeriche comuni di Snowflake con gli equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nota: l'elemento CEIL di BigQuery non supporta la possibilità di indicare la precisione o la scalabilità. ROUND non consente di specificare l'arrotondamento per eccesso. |
|
|
|
|
|
|
|
|
|
|
|
BigQuery non ha un'alternativa diretta a FACTORIAL di Snowflake. Utilizza una funzione definita dall'utente. |
|
Nota: l'elemento FLOOR di BigQuery non supporta la possibilità di indicare la precisione o la scalabilità. ROUND non consente di specificare l'arrotondamento per eccesso. TRUNC ha un rendimento simile ai numeri positivi, ma non ai numeri negativi, in quanto valuta il valore assoluto. |
|
Nota: non si tratta di una corrispondenza esatta, ma di una corrispondenza abbastanza simile. |
|
|
|
Nota:la base predefinita per LOG è 10. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nota: il valore restituito da BigQuery deve essere inferiore all'espressione. a cui non è supportato. |
BigQuery offre anche le seguenti opzioni matematico , che non hanno un analogo diretto in Snowflake:
IS_INF
IS_NAN
IEEE_DIVIDE
DIV
SAFE_DIVIDE
SAFE_MULTIPLY
SAFE_NEGATE
SAFE_ADD
SAFE_SUBTRACT
RANGE_BUCKET
Funzioni di dati semistrutturati
Snowflake | BigQuery |
---|---|
ARRAY_APPEND |
Funzione personalizzata definita dall'utente |
ARRAY_CAT |
ARRAY_CONCAT |
ARRAY_COMPACT |
Funzione personalizzata definita dall'utente |
ARRAY_CONSTRUCT |
[ ] |
ARRAY_CONSTRUCT_COMPACT |
Funzione personalizzata definita dall'utente |
ARRAY_CONTAINS |
Funzione personalizzata definita dall'utente |
ARRAY_INSERT |
Funzione personalizzata definita dall'utente |
ARRAY_INTERSECTION |
Funzione personalizzata definita dall'utente |
ARRAY_POSITION |
Funzione personalizzata definita dall'utente |
ARRAY_PREPEND |
Funzione personalizzata definita dall'utente |
ARRAY_SIZE |
ARRAY_LENGTH |
ARRAY_SLICE |
Funzione personalizzata definita dall'utente |
ARRAY_TO_STRING |
ARRAY_TO_STRING |
ARRAYS_OVERLAP |
Funzione personalizzata definita dall'utente |
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 |
Funzione personalizzata definita dall'utente |
CHECK_XML |
Funzione personalizzata definita dall'utente |
FLATTEN |
UNNEST |
GET |
Funzione personalizzata definita dall'utente |
GET_IGNORE_CASE |
Funzione personalizzata definita dall'utente |
|
Funzione personalizzata definita dall'utente |
IS_<object_type> |
Funzione personalizzata definita dall'utente |
IS_ARRAY |
Funzione personalizzata definita dall'utente |
IS_BINARY |
Funzione personalizzata definita dall'utente |
IS_BOOLEAN |
Funzione personalizzata definita dall'utente |
IS_CHAR , IS_VARCHAR |
Funzione personalizzata definita dall'utente |
IS_DATE , IS_DATE_VALUE |
Funzione personalizzata definita dall'utente |
IS_DECIMAL |
Funzione personalizzata definita dall'utente |
IS_DOUBLE , IS_REAL |
Funzione personalizzata definita dall'utente |
IS_INTEGER |
Funzione personalizzata definita dall'utente |
IS_OBJECT |
Funzione personalizzata definita dall'utente |
IS_TIME |
Funzione personalizzata definita dall'utente |
IS_TIMESTAMP_* |
Funzione personalizzata definita dall'utente |
OBJECT_CONSTRUCT |
Funzione personalizzata definita dall'utente |
OBJECT_DELETE |
Funzione personalizzata definita dall'utente |
OBJECT_INSERT |
Funzione personalizzata definita dall'utente |
PARSE_JSON |
JSON_EXTRACT |
PARSE_XML |
Funzione personalizzata definita dall'utente |
STRIP_NULL_VALUE |
Funzione personalizzata definita dall'utente |
STRTOK_TO_ARRAY |
SPLIT |
TRY_PARSE_JSON |
Funzione personalizzata definita dall'utente |
TYPEOF |
Funzione personalizzata definita dall'utente |
XMLGET |
Funzione personalizzata definita dall'utente |
Funzioni stringhe e binarie
Snowflake | BigQuery |
---|---|
|
|
ASCII |
|
BASE64_DECODE_BINARY |
|
BASE64_DECODE_STRING |
|
BASE64_ENCODE |
|
BIT_LENGTH |
CHARACTER_LENGTH |
|
|
CHR,CHAR |
|
COLLATE |
Funzione personalizzata definita dall'utente |
COLLATION |
Funzione personalizzata definita dall'utente |
COMPRESS |
Funzione personalizzata definita dall'utente |
|
CONCAT (...) di BigQuery supporta la concatenazione di un numero qualsiasi di stringhe. |
CONTAINS |
Funzione personalizzata definita dall'utente |
DECOMPRESS_BINARY |
Funzione personalizzata definita dall'utente |
DECOMPRESS_STRING |
Funzione personalizzata definita dall'utente |
EDITDISTANCE |
Funzione personalizzata definita dall'utente |
ENDSWITH |
Funzione personalizzata definita dall'utente |
HEX_DECODE_BINARY |
|
HEX_DECODE_STRING |
|
HEX_ENCODE |
|
ILIKE |
Funzione personalizzata definita dall'utente |
ILIKE ANY |
Funzione personalizzata definita dall'utente |
INITCAP |
INITCAP |
INSERT |
Funzione personalizzata definita dall'utente |
LEFT |
Funzione definita dall'utente |
LENGTH |
|
LIKE |
LIKE |
LIKE ALL |
Funzione personalizzata definita dall'utente |
LIKE ANY |
Funzione personalizzata definita dall'utente |
LOWER |
|
LPAD |
|
LTRIM |
|
|
|
MD5_BINARY |
Funzione personalizzata definita dall'utente |
OCTET_LENGTH |
Funzione personalizzata definita dall'utente |
PARSE_IP |
Funzione personalizzata definita dall'utente |
PARSE_URL |
Funzione personalizzata definita dall'utente |
POSITION |
|
REPEAT |
|
REPLACE |
|
REVERSE
|
|
RIGHT |
Funzione definita dall'utente |
RPAD |
RPAD |
RTRIM |
|
RTRIMMED_LENGTH |
Funzione personalizzata definita dall'utente |
SHA1,SHA1_HEX |
|
SHA1_BINARY |
Funzione personalizzata definita dall'utente |
SHA2,SHA2_HEX |
Funzione personalizzata definita dall'utente |
SHA2_BINARY |
Funzione personalizzata definita dall'utente |
SOUNDEX |
Funzione personalizzata definita dall'utente |
SPACE |
Funzione personalizzata definita dall'utente |
SPLIT |
SPLIT |
SPLIT_PART |
Funzione personalizzata definita dall'utente |
SPLIT_TO_TABLE |
Funzione personalizzata definita dall'utente |
STARTSWITH |
Funzione personalizzata definita dall'utente |
STRTOK |
Nota: l'intero argomento della stringa del delimitatore viene utilizzato come singolo delimitatore. Il delimitatore predefinito è una virgola. |
STRTOK_SPLIT_TO_TABLE |
Funzione personalizzata definita dall'utente |
SUBSTR,SUBSTRING |
SUBSTR |
TRANSLATE |
Funzione personalizzata definita dall'utente |
TRIM |
TRIM |
TRY_BASE64_DECODE_BINARY |
Funzione personalizzata definita dall'utente |
TRY_BASE64_DECODE_STRING |
|
TRY_HEX_DECODE_BINARY |
|
TRY_HEX_DECODE_STRING |
|
UNICODE |
Funzione personalizzata definita dall'utente |
|
UPPER |
Funzioni stringa (espressioni regolari)
Snowflake | BigQuery |
---|---|
REGEXP |
|
REGEXP_COUNT |
Se position è specificato:
Nota: BigQuery fornisce il supporto per le espressioni regolari utilizzando la libreria re2; consulta la documentazione per la sintassi delle espressioni regolari. |
REGEXP_INSTR |
Se position è specificato:
Se occurrence è specificato:
Nota: BigQuery fornisce il supporto per le espressioni regolari utilizzando la libreria re2; consulta la documentazione per la sintassi delle espressioni regolari. |
|
|
REGEXP_REPLACE |
Se replace_string è specificato:
Se position è specificato:
Nota: BigQuery fornisce il supporto per le espressioni regolari utilizzando la libreria re2; consulta la documentazione per la sintassi delle espressioni regolari. |
REGEXP_SUBSTR |
Se position è specificato:
Se occurrence è specificato:
Nota: BigQuery fornisce il supporto per le espressioni regolari utilizzando la libreria re2; consulta la documentazione per la sintassi delle espressioni regolari. |
RLIKE |
|
Funzioni di sistema
Snowflake | BigQuery |
---|---|
SYSTEM$ABORT_SESSION |
Funzione personalizzata definita dall'utente |
SYSTEM$ABORT_TRANSACTION |
Funzione personalizzata definita dall'utente |
SYSTEM$CANCEL_ALL_QUERIES |
Funzione personalizzata definita dall'utente |
SYSTEM$CANCEL_QUERY |
Funzione personalizzata definita dall'utente |
SYSTEM$CLUSTERING_DEPTH |
Funzione personalizzata definita dall'utente |
SYSTEM$CLUSTERING_INFORMATION |
Funzione personalizzata definita dall'utente |
SYSTEM$CLUSTERING_RATIO — Deprecated |
Funzione personalizzata definita dall'utente |
SYSTEM$CURRENT_USER_TASK_NAME |
Funzione personalizzata definita dall'utente |
SYSTEM$DATABASE_REFRESH_HISTORY |
Funzione personalizzata definita dall'utente |
SYSTEM$DATABASE_REFRESH_PROGRESS , SYSTEM$DATABASE_REFRESH_PROGRESS_BY_JOB |
Funzione personalizzata definita dall'utente |
SYSTEM$GET_AWS_SNS_IAM_POLICY |
Funzione personalizzata definita dall'utente |
SYSTEM$GET_PREDECESSOR_RETURN_VALUE |
Funzione personalizzata definita dall'utente |
SYSTEM$LAST_CHANGE_COMMIT_TIME |
Funzione personalizzata definita dall'utente |
SYSTEM$PIPE_FORCE_RESUME |
Funzione personalizzata definita dall'utente |
SYSTEM$PIPE_STATUS |
Funzione personalizzata definita dall'utente |
SYSTEM$SET_RETURN_VALUE |
Funzione personalizzata definita dall'utente |
SYSTEM$SHOW_OAUTH_CLIENT_SECRETS |
Funzione personalizzata definita dall'utente |
SYSTEM$STREAM_GET_TABLE_TIMESTAMP |
Funzione personalizzata definita dall'utente |
SYSTEM$STREAM_HAS_DATA |
Funzione personalizzata definita dall'utente |
SYSTEM$TASK_DEPENDENTS_ENABLE |
Funzione personalizzata definita dall'utente |
SYSTEM$TYPEOF |
Funzione personalizzata definita dall'utente |
SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS |
Funzione personalizzata definita dall'utente |
SYSTEM$WAIT |
Funzione personalizzata definita dall'utente |
SYSTEM$WHITELIST |
Funzione personalizzata definita dall'utente |
SYSTEM$WHITELIST_PRIVATELINK |
Funzione personalizzata definita dall'utente |
Funzioni tabella
Snowflake | BigQuery | |
---|---|---|
GENERATOR |
Funzione personalizzata definita dall'utente | |
GET_OBJECT_REFERENCES |
Funzione personalizzata definita dall'utente | |
RESULT_SCAN |
Funzione personalizzata definita dall'utente | |
VALIDATE |
Funzione personalizzata definita dall'utente |
Funzioni di utilità e hash
Snowflake | BigQuery | |
---|---|---|
GET_DDL |
Richiesta di funzionalità | |
HASH |
HASH è una funzione proprietaria specifica di Snowflake. Non può essere tradotto senza conoscere la logica di base utilizzata da Snowflake. |
Funzioni finestra
Snowflake | BigQuery | |
---|---|---|
CONDITIONAL_CHANGE_EVENT |
Funzione personalizzata definita dall'utente | |
CONDITIONAL_TRUE_EVENT |
Funzione personalizzata definita dall'utente | |
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 |
Funzione personalizzata definita dall'utente | |
ROW_NUMBER |
ROW_NUMBER |
|
WIDTH_BUCKET |
Funzione personalizzata definita dall'utente |
BigQuery supporta anche
SAFE_CAST
(espressione)
AS typename), che restituisce NULL se BigQuery non è in grado di eseguire un
Cast (ad esempio,
SAFE_CAST
("mela"
AS INT64) restituisce NULL).
Operatori
Le sezioni seguenti elencano gli operatori Snowflake e i relativi dati BigQuery equivalenti.
Operatori aritmetici
La tabella seguente mostra le mappature tra Snowflake operatori aritmetici con gli equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
|
|
|
|
|
Nota: BigQuery supporta il segno meno unario standard, ma non converte i numeri interi in formato stringa nel tipo INT64 , NUMERIC o FLOAT64 . |
|
|
|
|
|
|
|
|
|
|
Per visualizzare i dettagli della scala e della precisione Snowflake durante l'esecuzione di operazioni aritmetiche operazioni, guarda il file Snowflake documentazione.
Operatori di confronto
Fiocco di neve operatori di confronto e BigQuery operatori di confronto sono le stesse.
Operatori logici/booleani
Fiocco di neve operatori logici e booleani e BigQuery operatori logici/booleani sono le stesse.
Operatori Set
La tabella seguente mostra le mappature tra Snowflake Operatori di impostazione con gli equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
|
INTERSECT DISTINCT
|
Nota: MINUS e EXCEPT sono sinonimi. |
|
|
|
Operatori di sottoquery
La tabella seguente mostra le mappature tra Snowflake operatori di sottoquery con gli equivalenti BigQuery.
Snowflake | BigQuery |
---|---|
|
BigQuery non supporta un'alternativa diretta a ALL/ANY di Snowflake. |
|
|
|
|
|
Nota: BigQuery richiede le parentesi per separare le diverse operazioni di impostazione. Se si ripete lo stesso operatore impostato, le parentesi non sono necessarie. |
Sintassi DML
Questa sezione illustra le differenze nella sintassi del linguaggio di gestione dei dati Snowflake e BigQuery.
Istruzione INSERT
Snowflake offre una parola chiave DEFAULT
configurabile per le colonne. Nel
BigQuery, il valore DEFAULT
per le colonne con valori nulli è NULL e
DEFAULT
non è supportato per le colonne obbligatorie. Più alta
Istruzioni INSERT
Snowflake
sono compatibili con BigQuery. La tabella seguente mostra le eccezioni.
Snowflake | BigQuery |
---|---|
Nota: BigQuery non supporta l'inserimento di oggetti JSON con un'INSERT istruzione. |
VALUES (DEFAULT [, ...]) Nota: BigQuery non supporta un'alternativa diretta a OVERWRITE di Snowflake. Usa invece il criterio DELETE . |
|
|
... Nota:
<intoClause> rappresenta lo standard INSERT statement elencato sopra. |
BigQuery non supporta la multitabella condizionale e incondizionata INSERTs . |
BigQuery supporta anche l'inserimento di valori tramite una sottoquery (in cui uno dei i valori vengono calcolati utilizzando una sottoquery), che non è supportata in Snowflake. Ad esempio:
INSERT INTO table (column1, column2)
VALUES ('value_1', (
SELECT column2
FROM table2
))
Istruzione COPY
Snowflake supporta la copia dei dati dai file delle fasi a una tabella esistente e una tabella a una fase interna denominata, una fase esterna denominata (Amazon S3, Google Cloud Storage o Microsoft Azure).
BigQuery non utilizza il comando SQL COPY
per caricare i dati, ma puoi
utilizzare uno dei vari strumenti e opzioni non SQL per
e caricare i dati in tabelle BigQuery. Puoi anche utilizzare sink di pipeline di dati
forniti in
Apache Spark
o
Apache Beam
per scrivere dati in BigQuery.
Istruzione UPDATE
La maggior parte delle istruzioni UPDATE
Snowflake è compatibile con BigQuery. La
la seguente tabella mostra le eccezioni.
Snowflake | BigQuery | |
---|---|---|
|
Nota: tutte le istruzioni UPDATE in BigQuery richiedono una parola chiave WHERE , seguita da una condizione. |
Estratti conto DELETE
e TRUNCATE TABLE
Le istruzioni DELETE
e TRUNCATE TABLE
consentono di rimuovere righe da un elemento in entrambi i modi
senza influire sullo schema o sugli indici della tabella.
In Snowflake, sia DELETE
sia TRUNCATE TABLE
mantengono i dati eliminati utilizzando
Viaggio nel tempo di Snowflake per scopi di recupero per il periodo di conservazione dei dati.
Tuttavia, DELETE non elimina la cronologia e il caricamento dei file esterni
metadati.
In BigQuery, l'istruzione DELETE
deve avere una clausola WHERE
. Per
ulteriori informazioni su DELETE
in BigQuery, consulta
EsempiDELETE
di BigQuery
nella documentazione di DML.
Snowflake | BigQuery |
---|---|
|
Nota: le istruzioni DELETE BigQuery richiedono una WHERE clausola. |
Istruzione MERGE
L'istruzione MERGE
può combinare le operazioni INSERT
, UPDATE
e DELETE
in un unico "superiore" ed eseguire le operazioni automaticamente. La
L'operazione MERGE
deve corrispondere al massimo a una riga di origine per ogni riga target.
Le tabelle BigQuery sono limitate a 1000 istruzioni DML al giorno, quindi dovrebbe consolidare in modo ottimale le istruzioni INSERT, UPDATE e DELETE in un'unica Istruzione MERGE, come illustrato nella seguente tabella:
Snowflake | BigQuery |
---|---|
Nota: Snowflake supporta un parametro di sessione ERROR_ON_NONDETERMINISTIC_MERGE per gestire i risultati non deterministici. |
Nota: se aggiorni tutte le colonne, devono essere elencate tutte le colonne. |
Estratti conto GET
e LIST
La GET
scarica i file di dati da una delle seguenti fasi Snowflake a una
una directory/una cartella locale su un computer client:
- Fase interna denominata
- Fase interna per una tabella specificata
- Fase interna per l'utente corrente
La LIST
(LS) restituisce un elenco di file archiviati in un'area intermedia (ovvero caricati
da un file system locale o scaricati da una tabella) in una delle seguenti opzioni
Fasi Snowflake:
- Fase interna denominata
- Fase esterna con nome
- Fase per una tabella specificata
- Fase per l'utente corrente
BigQuery non supporta il concetto di gestione temporanea e non dispone
Equivalenti di GET
e LIST
.
Estratti conto PUT
e REMOVE
La PUT
l'istruzione carica i file di dati da una directory/cartella locale
da un computer client a una delle seguenti fasi di Snowflake:
- Fase interna denominata
- Fase interna per una tabella specificata
- Fase interna per l'utente corrente
La REMOVE
L'istruzione (RM)
rimuove i file archiviati in un'area intermedia in uno dei seguenti modi
Fasi interne Snowflake:
- Fase interna denominata
- Fase per una tabella specificata
- Fase per l'utente corrente
BigQuery non supporta il concetto di gestione temporanea e non dispone
Equivalenti di PUT
e REMOVE
.
Sintassi DDL
Questa sezione illustra le differenze nella sintassi del linguaggio di definizione dei dati tra Snowflake e BigQuery.
DDL Database, schema e condivisione
La maggior parte della terminologia di Snowflake corrisponde a quella di BigQuery, ad eccezione del fatto che Il database Snowflake è simile al set di dati BigQuery. Consulta le mappatura terminologica dettagliata da Snowflake a BigQuery.
Istruzione CREATE DATABASE
Snowflake supporta la creazione e la gestione di un database tramite comandi di gestione dei database mentre BigQuery offre più opzioni, come console, interfaccia a riga di comando, Librerie client e così via per creare set di dati. Questo utilizzerà i comandi dell'interfaccia a riga di comando di BigQuery corrispondenti alla sezione Snowflake per risolvere le differenze.
Snowflake | BigQuery |
---|---|
Nota: Snowflake fornisce questi requisiti per la denominazione dei database. Può contenere solo 255 caratteri nel nome. |
Nota: BigQuery ha requisiti di denominazione dei set di dati simili a quelli di Snowflake, ad eccezione del fatto che consente l'inserimento di 1024 caratteri nel nome. |
|
La sostituzione del set di dati non è supportata in BigQuery. |
|
La creazione di un set di dati temporaneo non è supportata in BigQuery. |
|
Concetto non supportato in BigQuery |
|
La clonazione dei set di dati non è ancora supportata in BigQuery. |
|
Lo spostamento cronologico a livello del set di dati non è supportato in BigQuery. Tuttavia, è supportata la corsa cronologica per i risultati di tabelle e query. |
|
Le regole di confronto in DDL non sono supportate in BigQuery. |
|
|
|
La creazione di set di dati condivisi non è supportata in BigQuery. Tuttavia, gli utenti possono condividere il set di dati tramite la console/UI una volta creato il set di dati. |
Nota: Snowflake offre l'opzione per la gestione automatica in background delle viste materializzate nel database secondario, che non è supportato in BigQuery. |
|
BigQuery offre anche le seguenti opzioni di comando bq mk
, che
non avere un analogo diretto in Snowflake:
--location <dataset_location>
--default_table_expiration <time_in_seconds>
--default_partition_expiration <time_in_seconds>
Istruzione ALTER DATABASE
Questa sezione utilizzerà i comandi dell'interfaccia a riga di comando di BigQuery corrispondenti Snowflake per risolvere le differenze nelle istruzioni ALTER.
Snowflake | BigQuery |
---|---|
|
La ridenominazione dei set di dati non è supportata in BigQuery, ma la copia dei set di dati è supportata. |
|
Lo scambio dei set di dati non è supportato in BigQuery. |
|
La gestione della conservazione dei dati e delle regole di confronto a livello di set di dati non è supportata in BigQuery. |
|
|
|
Concetto non supportato in BigQuery. |
|
Concetto non supportato in BigQuery. |
|
Concetto non supportato in BigQuery. |
|
Concetto non supportato in BigQuery. |
|
Concetto non supportato in BigQuery. |
|
Concetto non supportato in BigQuery. |
|
Concetto non supportato in BigQuery. |
Istruzione DROP DATABASE
Questa sezione utilizzerà il comando dell'interfaccia a riga di comando di BigQuery corrispondente Comando Snowflake per risolvere la differenza nell'istruzione DROP.
Snowflake | BigQuery |
---|---|
Nota: in Snowflake, l'eliminazione di un database non ne comporta la rimozione definitiva dal sistema. Una versione del database eliminato viene conservata per il numero di giorni specificato dal parametro DATA_RETENTION_TIME_IN_DAYS per il database. |
-r è la rimozione di tutti gli oggetti nel set di dati
-d indica il set di datiNota: in BigQuery, l'eliminazione di un set di dati è definitiva. Inoltre, la cascata non è supportata a livello di set di dati perché tutti i dati e gli oggetti nel set di dati vengono eliminati. |
Snowflake supporta anche
UNDROP DATASET
che ripristina la versione più recente di un set di dati eliminato. Questo è
attualmente non è supportata in BigQuery
a livello del set di dati.
Istruzione USE DATABASE
Snowflake offre la possibilità di impostare il database per una sessione utente utilizzando
USE DATABASE
. In questo modo non è necessario specificare nomi di oggetti completi
tramite comandi SQL. BigQuery non fornisce alcuna alternativa a Snowflake
Comando USE DATABASE.
Istruzione SHOW DATABASE
Questa sezione utilizzerà il comando dell'interfaccia a riga di comando di BigQuery corrispondente Snowflake per risolvere la differenza nell'istruzione SHOW.
Snowflake | BigQuery |
---|---|
Nota: Snowflake offre un'unica opzione per elencare e mostrare i dettagli di tutti i database, inclusi quelli eliminati che si trovano nel periodo di conservazione. |
bq ls --format=prettyjsone / o
Nota: in BigQuery, il comando ls fornisce solo i nomi dei set di dati e le informazioni di base, mentre il comando show fornisce dettagli come timestamp dell'ultima modifica, ACL ed etichette di un set di dati. Inoltre, BigQuery fornisce ulteriori dettagli sui set di dati tramite lo schema delle informazioni. |
Nota: con l'opzione TERSE, Snowflake consente di visualizzare solo informazioni/campi specifici sui set di dati. |
Concetto non supportato in BigQuery. |
Il concetto di viaggio cronologico non è supportato in BigQuery a livello di set di dati. | |
SHOW DATABASES
|
Il filtro dei risultati in base ai nomi del set di dati non è supportato in BigQuery. Tuttavia, è supportato il filtro per etichette. |
SHOW DATABASES
Nota: per impostazione predefinita, Snowflake non limita il numero di risultati. Tuttavia, il valore di LIMIT non può superare 10.000. |
Nota: per impostazione predefinita, BigQuery mostra solo 50 risultati. |
BigQuery offre anche le seguenti opzioni di comando bq
, che
non avere un analogo diretto in Snowflake:
- bq ls --format=pretty: restituisce risultati formattati di base
- *bq ls -a: *restituisce solo set di dati anonimi (quelli che iniziano con un trattino basso)
- bq ls --all: restituisce tutti i set di dati, inclusi quelli anonimi
- bq ls --filter labels.key:value: restituisce i risultati filtrati in base all'etichetta del set di dati
- bq ls --d: esclude i risultati dei moduli dei set di dati anonimi
- bq show --format=pretty: restituisce risultati dettagliati in formato di base per tutti set di dati
Gestione di SCHEMA
Snowflake offre diverse di gestione degli schemi in modo simile ai suoi comandi di gestione dei database. Questo concetto di creazione e lo schema di gestione non è supportato in BigQuery.
Tuttavia, BigQuery ti consente di specificare lo schema di una tabella quando carichi dati in una tabella e quando ne crei una vuota. In alternativa, puoi utilizza il rilevamento automatico dello schema per formati di dati supportati.
Gestione di SHARE
Snowflake offre diverse i comandi di gestione della condivisione in modo simile ai comandi di database e gestione degli schemi. Questo concetto di La creazione e la gestione della condivisione non sono supportate in BigQuery.
DDL tabella, visualizzazione e sequenza
Istruzione CREATE TABLE
La maggior parte delle istruzioni CREATE TABLE
Snowflake è compatibile con BigQuery,
ad eccezione dei seguenti elementi di sintassi, che non sono utilizzati
BigQuery:
Snowflake | BigQuery |
---|---|
Nota: i vincoli UNIQUE e PRIMARY KEY sono informativi e non vengono applicati dal sistema Snowflake. |
|
dove table_constraints sono:
Nota: i vincoli
UNIQUE e PRIMARY KEY sono informativi e non vengono applicati dal sistema Snowflake. |
Nota: BigQuery non utilizza vincoli delle tabelle UNIQUE , PRIMARY KEY o FOREIGN KEY . Per ottenere un'ottimizzazione simile offerta da questi vincoli durante l'esecuzione delle query, partiziona e raggruppa le tabelle BigQuery in cluster. CLUSTER BY supporta fino a quattro colonne. |
|
Consulta questo esempio per imparare a utilizzare le tabelle INFORMATION_SCHEMA per copiare i nomi delle colonne, i tipi di dati e i vincoli NOT NULL in una nuova tabella. |
Nota:in Snowflake, l'impostazione BACKUP NO è specificata per "risparmiare tempo di elaborazione durante la creazione di snapshot e il ripristino dagli snapshot e per ridurre lo spazio di archiviazione". |
L'opzione della tabella BACKUP NO non è utilizzata né necessaria perché BigQuery conserva automaticamente fino a 7 giorni di versioni storiche di tutte le tabelle, senza alcun effetto sul tempo di elaborazione o sullo spazio di archiviazione fatturato. |
dove table_attributes sono:
|
BigQuery supporta il clustering, che consente di archiviare le chiavi in ordine ordinato. |
|
|
|
|
BigQuery supporta anche l'istruzione DDL CREATE OR REPLACE
TABLE
che sovrascrive una tabella se esiste già.
L'istruzione CREATE TABLE
di BigQuery supporta anche le seguenti clausole:
che non hanno un equivalente Snowflake:
Per saperne di più su CREATE TABLE
in BigQuery, consulta
Esempi di CREATE
di BigQuery
nella documentazione di DML.
Istruzione ALTER TABLE
Questa sezione utilizzerà i comandi dell'interfaccia a riga di comando di BigQuery corrispondenti Comandi Snowflake per risolvere le differenze nelle istruzioni ALTER per le tabelle.
Snowflake | BigQuery |
---|---|
|
|
|
Lo scambio di tabelle non è supportato in BigQuery. |
|
La gestione delle regole di confronto dei dati per le tabelle non è supportata in BigQuery. |
|
|
|
|
Inoltre, Snowflake offre opzioni di clustering, colonna e vincolo per modificare le tabelle non supportate da BigQuery.
Estratti conto DROP TABLE
e UNDROP TABLE
Questa sezione utilizzerà il comando dell'interfaccia a riga di comando di BigQuery corrispondente il comando Snowflake per risolvere la differenza tra istruzioni DROP e UNDROP.
Snowflake | BigQuery |
---|---|
Nota: in Snowflake, l'eliminazione di una tabella non ne comporta la rimozione definitiva dal sistema. Una versione della tabella eliminata viene conservata per il numero di giorni specificato dal parametro DATA_RETENTION_TIME_IN_DAYS per il database. |
-f deve saltare la conferma dell'esecuzione -d indica il set di dati Nota: in BigQuery anche l'eliminazione di una tabella non è definitiva, ma al momento viene conservato uno snapshot solo per 7 giorni. |
|
Nota: in BigQuery, devi prima determinare un timestamp UNIX della presenza della tabella (in millisecondi). Poi, copia in una nuova tabella la tabella corrispondente a quel timestamp. La nuova tabella deve avere un nome diverso da quello della tabella eliminata. |
Istruzione CREATE EXTERNAL TABLE
BigQuery consente di creare tabelle esterne permanenti e temporanee ed eseguire query sui dati direttamente da:
Snowflake consente di creare tabella esterna permanente che, quando viene eseguita una query, legge i dati da un insieme di uno o più file in un fase esterna.
Questa sezione utilizzerà il comando dell'interfaccia a riga di comando di BigQuery corrispondente Comando Snowflake per risolvere le differenze nell'istruzione CREATE EXTERNAL TABLE.
Snowflake | BigQuery |
---|---|
CREATE [OR REPLACE] EXTERNAL TABLE
Nota: Snowflake consente la lettura temporanea dei file contenenti dati e consente di specificare le opzioni del tipo di formato per le tabelle esterne. BigQuery, ad eccezione del tipo XML, supporta tutti i tipi di formato Snowflake: CSV, JSON, AVRO, PARQUET e ORC. |
Nota: BigQuery consente di creare una tabella permanente collegata all'origine dati utilizzando un file di definizione della tabella [1], un file di schema JSON [2] o una definizione di schema incorporato [3]. La lettura temporanea dei file da leggere e la specifica delle opzioni del tipo di formato non sono supportate in BigQuery. |
|
Nota: BigQuery attualmente non supporta nessuna delle opzioni dei parametri facoltative fornite da Snowflake per la creazione di tabelle esterne. Per il partizionamento, BigQuery supporta l'utilizzo della pseudocolonna _FILE_NAME per creare tabelle/visualizzazioni partizionate sopra le tabelle esterne. Per ulteriori informazioni, vedi
Esegui una query sulla pseudocolonna _FILE_NAME . |
Inoltre, BigQuery supporta anche eseguire query su dati partizionati esternamente nei formati AVRO, PARQUET, ORC, JSON e CSV archiviato su Google Cloud per lo spazio di archiviazione layout di partizionamento hive predefinito.
Istruzione CREATE VIEW
La tabella seguente mostra gli equivalenti tra Snowflake e BigQuery
per l'istruzione CREATE VIEW
.
Snowflake | BigQuery |
---|---|
|
|
|
CREATE OR REPLACE VIEW
|
|
|
Non supportata | CREATE VIEW IF NOT EXISTS
|
|
In BigQuery, per creare una vista, tutti gli oggetti di riferimento devono già esistere. BigQuery consente di eseguire query su origini dati esterne. |
Istruzione CREATE SEQUENCE
Le sequenze non vengono utilizzate in BigQuery. Per farlo, puoi utilizzare in batch. Per ulteriori informazioni sulle chiavi surrogate e sulle modifiche lente dimensioni (SCD), consulta le seguenti guide:
|
---|
DDL caricamento e unload dei dati
Snowflake supporta il caricamento e l'unload dei dati tramite fase, formato file e barra verticale i comandi di gestione dei dati. BigQuery offre anche più opzioni per come bq load, BigQuery Data Transfer Service, bq estrapola e così via. evidenzia le differenze nell'utilizzo di queste metodologie per la carico e scarico.
DDL account e sessione
I concetti relativi all'account e alle sessioni di Snowflake non sono supportati in BigQuery. BigQuery consente di gestire gli account tramite Cloud IAM a tutti i livelli. Inoltre, i modelli transazioni non sono ancora supportate in BigQuery.
Funzioni definite dall'utente
Una funzione definita dall'utente consente di creare funzioni per le operazioni personalizzate. Queste funzioni accettare colonne di input, eseguire azioni e restituire il risultato di queste azioni come valore
Entrambi Fiocco di neve e BigQuery supportare le funzioni definite dall'utente utilizzando espressioni SQL e codice JavaScript.
Consulta le GoogleCloudPlatform/bigquery-utils/ GitHub di ASL per una libreria di funzioni definite dall'utente comuni di BigQuery.
Sintassi CREATE FUNCTION
La seguente tabella illustra le differenze nella sintassi di creazione delle funzioni SQL definite dall'utente tra Snowflake e BigQuery.
Snowflake | BigQuery |
---|---|
|
Nota: nella UDF SQL di BigQuery, il tipo di dati restituiti è facoltativo. BigQuery deduce il tipo di risultato della funzione dal corpo della funzione SQL quando una query chiama la funzione. |
|
Nota:nella UDF SQL di BigQuery, la restituzione del tipo di tabella non è attualmente supportata, ma è inclusa nella roadmap del prodotto e sarà disponibile a breve. Tuttavia, BigQuery supporta la restituzione di ARRAY di tipo STRUCT. |
Nota: Snowflake offre un'opzione sicura per limitare la definizione e i dettagli delle funzioni definite dall'utente solo agli utenti autorizzati (ovvero agli utenti a cui viene concesso il ruolo proprietario della vista). |
Nota: la sicurezza della funzione non è un parametro configurabile in BigQuery. BigQuery supporta la creazione di ruoli e autorizzazioni IAM per limitare l'accesso ai dati sottostanti e alla definizione delle funzioni. |
|
Nota: il comportamento della funzione per gli input nulli è gestito implicitamente in BigQuery e non deve essere specificato come un'opzione separata. |
|
Nota:la volatilità della funzione non è un parametro configurabile in BigQuery. Tutta la volatilità della funzione definita dall'utente di BigQuery equivale alla volatilità di IMMUTABLE di Snowflake, ovvero non esegue ricerche nei database o utilizza informazioni non direttamente presenti nel suo elenco di argomenti. |
|
CREATE [OR REPLACE] FUNCTION
Nota: utilizzare virgolette singole o una sequenza di caratteri come la citazione in dollari ($$) 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
Nota: il comportamento della procedura per gli input nulli viene gestito implicitamente in BigQuery e non deve essere specificato come opzione separata. |
CREATE [OR REPLACE] PROCEDURE
|
Nota:la volatilità della procedura non è un parametro configurabile in BigQuery. Equivale alla volatilità IMMUTABLE di Snowflake. |
CREATE [OR REPLACE] PROCEDURE
|
Nota:l'aggiunta di commenti o descrizioni nelle definizioni delle procedure non è attualmente supportata in BigQuery. |
CREATE [OR REPLACE] PROCEDURE
Nota: Snowflake supporta la specifica del chiamante o del proprietario della procedura per l'esecuzione |
Nota: le stored procedure di BigQuery vengono sempre eseguite come chiamante |
BigQuery supporta anche l'istruzione CREATE PROCEDURE IF NOT EXISTS
che tratta la query come riuscita e non esegue alcuna azione se una funzione con
lo stesso nome esiste già.
Sintassi DROP PROCEDURE
La seguente tabella illustra le differenze nella sintassi DROP FUNCTION tra Snowflake e BigQuery.
Snowflake | BigQuery |
---|---|
|
Nota: BigQuery non richiede l'utilizzo della firma della procedura (tipo di dati dell'argomento) per l'eliminazione della procedura. |
BigQuery richiede che tu specifica il project_name se La procedura non si trova nel progetto attuale.
Comandi aggiuntivi della procedura
Snowflake fornisce comandi aggiuntivi come
ALTER PROCEDURE
,
DESC[RIBE] PROCEDURE
,
e
SHOW PROCEDURES
per gestire le stored procedure. Al momento non sono supportati in
in BigQuery.
Istruzioni SQL per metadati e transazioni
Snowflake | BigQuery |
---|---|
|
BigQuery utilizza sempre l'isolamento degli snapshot. Per maggiori dettagli, consulta la sezione Garanzie di coerenza più avanti in questo documento. |
|
Non utilizzato in BigQuery. |
|
Non utilizzato in BigQuery |
|
Non utilizzato in BigQuery. |
Istruzioni SQL a più istruzioni e multiriga
Sia Snowflake che BigQuery supportano le transazioni (sessioni) e, di conseguenza, supportano istruzioni separate da punti e virgola che sono in modo coerente eseguite insieme. Per ulteriori informazioni, vedi Transazioni multi-istruzione.
Colonne dei metadati per i file temporanei
Snowflake genera automaticamente metadati per i file in ambienti interni ed esterni fasi iniziali. Questi metadati possono essere query e caricato in una tabella insieme alle normali colonne di dati. Le seguenti colonne di metadati possono utilizzabili:
Garanzie di coerenza e isolamento delle transazioni
Snowflake e BigQuery sono entrambi atomici, ovvero compatibili con ACID il livello per mutazione in molte righe.
Transazioni
A ogni transazione Snowflake viene assegnata un'ora di inizio unica (include
millisecondi) impostato come ID transazione. Snowflake supporta solo
READ COMMITTED
livello di isolamento. Tuttavia, un'istruzione può vedere le modifiche apportate da un'altra istruzione
se entrambe le transazioni avvengono nella stessa transazione, anche se tali modifiche non
impegnato. Le transazioni Snowflake acquisiscono blocchi sulle risorse (tabelle) quando
la risorsa è in fase di modifica. Gli utenti possono modificare il tempo massimo di blocco
attenderà il timeout dell'istruzione. Le istruzioni DML vengono
viene eseguito automaticamente
AUTOCOMMIT
sia attiva.
BigQuery inoltre supporta le transazioni. BigQuery aiuta a garantire controllo ottimistico della contemporaneità (vittorie che eseguono prima il commit) con isolamento dello snapshot, in cui una query legge gli ultimi dati di cui è stato eseguito il commit prima dell'avvio della query. Questo approccio garantisce lo stesso livello di coerenza per riga, per mutazione e tra righe all'interno della stessa istruzione DML, evitando comunque i deadlock. Nel caso di di più aggiornamenti DML per la stessa tabella, BigQuery passa controllo pessimistico della contemporaneità. I job di caricamento possono essere eseguiti in modo completamente indipendente e aggiunti alle tabelle. Tuttavia, BigQuery non fornisce ancora un confine esplicito della transazione durante la sessione.
Esegui il rollback
Se la sessione di una transazione Snowflake viene terminata inaspettatamente prima del di cui viene eseguito il commit o il rollback, la transazione viene lasciata in un ambiente stato. L'utente deve eseguire SYSTEM$ABORT_TRANSACTION per interrompere lo scollegamento transazioni o Snowflake eseguirà il rollback della transazione scollegata dopo quattro nell'orario lavorativo locale del TAM. Se si verifica un deadlock, Snowflake rileva la situazione e seleziona altre dell'istruzione recente di cui eseguire il rollback. Se l'istruzione DML in un modello la transazione non va a buon fine, viene eseguito il rollback delle modifiche, ma la transazione rimane aperta fino a quando non viene eseguito il commit o il rollback. Le istruzioni DDL in Snowflake non possono essere con il rollback automatico.
BigQuery supporta
ROLLBACK TRANSACTION
.
Non è presente una dichiarazione ABORT
in BigQuery.
Limiti per i database
Consulta sempre la documentazione pubblica di BigQuery per le quote e i limiti più recenti. Molte quote per gli utenti con volumi elevati possono essere aumentate contattando il team di assistenza Cloud.
Per tutti gli account Snowflake sono impostati dei limiti flessibili per impostazione predefinita. Limiti software impostati durante la creazione dell'account e possono variare. È possibile aumentare molti limiti morbidi Snowflake tramite il team dedicato all'account Snowflake o tramite un ticket di assistenza.
La tabella seguente mostra un confronto tra Snowflake e BigQuery limiti del database.
Limite | Snowflake | BigQuery |
---|---|---|
Dimensione del testo della query | 1 MB | 1 MB |
Numero massimo di query in parallelo | Magazzino XS - 8 Magazzino S - 16 Magazzino M - 32 Deposito a L - 64 Magazzino XL - 128 |
100 |