SnowConvert AI - BigQuery - Types de données¶
Snowflake prend en charge la majorité des principes des types de données SQL fondamentaux, avec des restrictions spécifiques, sur différentes constructions SQL, y compris les colonnes, les variables locales, les expressions et les paramètres.
Type de données booléennes¶
BigQuery |
Snowflake |
Remarques |
|---|---|---|
Type de données d’octets¶
Types de données horodatage¶
Type de données géographiques¶
Type de données d’intervalle¶
BigQuery |
Snowflake |
Remarques |
|---|---|---|
INTERVAL Le type de données n’est pas pris en charge dans Snowflake. VARCHAR est utilisé à la place. Pour plus d’informations, voir la documentation sur le type de données INTERVAL. |
Type de données Json¶
Types de données numériques¶
BigQuery |
Snowflake |
Remarques |
|---|---|---|
INT est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
INT est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
SMALLINT est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
INTEGER est un alias pour le type de données” NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
BIGINT est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
TINYINT est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
BYTEINT est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
NUMERIC est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
DECIMAL est un alias pour le type de données NUMBER dans Snowflake. La précision et l’échelle maximales sont NUMBER(38,37). |
||
Snowflake ne prend pas en charge le type BIGNUMERIC. Utiliser NUMERIC à la place. La précision BIGNUMERIC, 76, dépasse la limite de Snowflake (38), ce qui entraîne une troncation ou un arrondi, ce qui peut introduire des inexactitudes importantes. |
||
Snowflake ne prend pas en charge le type BIGDECIMAL. Utiliser NUMERIC à la place. La précision BIGDECIMAL, 76, dépasse la limite de Snowflake (38), ce qui entraîne une troncation ou un arrondi, ce qui peut introduire des inexactitudes importantes. |
||
Types de données de chaîne¶
ANY TYPE¶
Spécification de traduction pour le type de données BigQuery ANY TYPE
Description¶
Ce qui suit est un extrait d’informations sur l’utilisation de ANY TYPE dans les instructions CREATE FUNCTION.
Un paramètre dont le type est égal à
ANY TYPEpeut correspondre à plusieurs types d’arguments lorsque la fonction est appelée.
Si plusieurs paramètres sont de type
ANY TYPE, BigQuery n’impose aucune relation de type entre ces arguments.Le type de renvoi de la fonction ne peut pas être
ANY TYPE. Il doit être omis, ce qui signifie qu’il sera automatiquement déterminé en fonction deexpression_sqlou d’un type explicite.La transmission d’arguments de fonction de types incompatibles avec la définition de la fonction entraîne une erreur au moment de l’appel.
Modèles d’échantillons de sources¶
Définition de type pour les UDFs¶
ANY TYPE ne peut être trouvé que comme type de paramètre d’une fonction. SnowConvert AI traduit automatiquement ANY TYPE en VARIANT.
BigQuery¶
Snowflake¶
ARRAY<T>¶
Spécification de traduction pour le type de données ARRAY
Description¶
Dans BigQuery, un tableau est une liste ordonnée de zéro ou plusieurs éléments de valeurs non tabulaires. Les éléments d’un tableau doivent partager le même type. (Type de tableau. BigQuery)
Modèles d’échantillons de sources¶
BigQuery¶
Snowflake¶
Accès ARRAY par index¶
BigQuery¶
Snowflake¶
Accès ARRAY sécurisé par index¶
BigQuery¶
Snowflake¶
INSERT avec ARRAY dans la clause VALUES¶
BigQuery¶
Snowflake¶
instruction MERGE¶
BigQuery¶
Snowflake¶
Insertion/mise à jour de la valeur de colonne ARRAY DEFAULT¶
BigQuery¶
Snowflake¶
INSERT/UPDATE avec valeur NULL¶
BigQuery¶
Snowflake¶
Concaténation ARRAY¶
BigQuery¶
Snowflake¶
ARRAY utilisé comme type de paramètre/de retour¶
BigQuery¶
Snowflake¶
Problèmes connus¶
1. L’accès ARRAY non sécurisé n’échouera pas pour les index positifs hors limites
Dans BigQuery, l’accès à un élément de tableau par index échouera pour toute valeur d’index trop faible (sous-flux) ou trop élevée (débordement) en cas de non-utilisation de SAFE_OFFSET ou SAFE_ORDINAL. Cependant, dans Snowflake les erreurs ne sont générées que pour les cas de sous-flux, en revanche, tout index qui causerait une erreur de débordement générera une valeur NULL.
Lorsqu’un accès non sécurisé aux éléments d’un tableau est détecté SnowConvert AI générera SSC-FDM-BQ0001 pour avertir l’utilisateur.
BYTES¶
Type de données d’octets et utilisations de ce type de données
Description¶
Séquence d’octets avec un maximum de L octets autorisés dans la chaîne binaire. La longueur maximale est de 8 MB (8 388 608 octets). Pour plus d’informations, reportez-vous au type de données BigQuery BYTES.
Note
Le type de données BYTES n’est pas pris en charge dans Snowflake, actuellement transformé en BINARY.#x20;
Modèles d’échantillons de sources¶
Format des résultats du type de données BYTES¶
Le format de sortie par défaut pour les types de données binaires dans BigQuery est “BASE64” et “HEX” dans Snowflake. Pour cette raison, lorsqu’une colonne binaire est sélectionnée, la fonction BASE64_ENCODE est automatiquement ajoutée. Afin de maintenir le formatage par défaut des BigQuery.
BigQuery¶
Snowflake :¶
Dans le cas où elles ne sont pas ajoutées automatiquement et que vous souhaitez voir les données dans le format BASE64, vous pouvez utiliser la fonction BASE64_ENCODE ou définir la fonction BINARY_OUTPUT_FORMAT.
Littéral BYTES¶
Les cas suivants représentent les formes qui peuvent être utilisées pour formater les littéraux d’octets en BigQuery.
Ces littéraux ne sont pas pris en charge dans Snowflake, mais la fonction TRY_TO_BINARY peut être utilisée pour convertir l’expression d’entrée en valeur binaire. La fonction est une version spéciale de TO_BINARY qui effectue la même opération, mais avec une prise en charge du traitement des erreurs.
Il est important de tenir compte du fait que le format binaire pour la conversion peut être : HEX, BASE64 ou UTF-8. La valeur par défaut est la valeur du paramètre de session BINARY_INPUT_FORMAT. Si ce paramètre n’est pas défini, la valeur par défaut est HEX.
Considérations¶
Veuillez garder à l’esprit que le format de sortie par défaut pour les types de données binaires dans BigQuery est “BASE64” et “HEX” dans Snowflake. Vous pouvez utiliser la fonction BASE64_ENCODE ou appliquer le format BINARY_OUTPUT_FORMAT si vous souhaitez voir les données dans le format BASE64.
Les seuls formats pris en charge par Snowflake sont les suivants : HEX, BASE64 ou UTF-8. Pour plus d’informations, veuillez vous référer à Entrée et sortie binaire dans Snowflake.
Les fonctions binaires utilisées pour insérer des données dans une clause de valeurs ne sont pas prises en charge dans Snowflake.
GEOGRAPHY¶
Type de données GEOGRAPHY et utilisations de ce type de données
Description¶
Un ensemble de points, de chaînes de lignes et de polygones, représenté par un ensemble de points ou un sous-ensemble de la surface de la Terre. Pour plus d’informations, reportez-vous au type de données BigQuery GEOGRAPHY.
Succès
Type de données pris en charge dans Snowflake.
Modèles d’échantillons de sources¶
Format des résultats du type de données GEOGRAPHY¶
Le format de sortie par défaut pour les types de données géographiques dans BigQuery est WKT (texte bien connu) et dans Snowflake WKB (binaire bien connu). Pour cette raison, lorsque des colonnes géographiques sont sélectionnées, la fonction ST_ASWKT est automatiquement ajoutée. De plus, lorsque toutes les colonnes d’une table sont sélectionnées et que la table contient une colonne Géographie, le format GEOGRAPHY_OUTPUT_FORMAT est défini sur WKT. Afin de conserver le format par défaut BigQuery.
BigQuery¶
Snowflake¶
Dans le cas où les données ne sont pas ajoutées automatiquement et que vous souhaitez les voir dans le format WKT, vous pouvez utiliser la fonction ST_ASWKT ou appliquer le format GEOGRAPHY_OUTPUT_FORMAT.
Insérer des données GEOGRAPHY¶
Pour insérer des données dans des colonnes de type géographique, aucune fonction n’est nécessaire, car Snowflake détecte automatiquement que les données suivent la norme 84 WGS.
Considérations¶
N’oubliez pas que le format de sortie par défaut pour les types de données géographiques est le suivant : WKT (texte bien connu) et dans Snowflake WKB (binaire bien connu). Vous pouvez utiliser la fonction ST_ASWKT ou appliquer le format GEOGRAPHY_OUTPUT_FORMAT si vous souhaitez afficher les données dans le format WKT.
Les fonctions de géographie utilisées pour insérer des données dans une clause de valeurs ne sont pas nécessaires dans Snowflake.
EWIs connexes¶
SSC-FDM-BQ0010: La fonction géographique n’est pas requise dans Snowflake.
INTERVAL¶
Type de données d’intervalle et utilisations de ce type de données
Description¶
Un objet INTERVAL représente la durée, sans faire référence à un point spécifique dans le temps. Il n’y a pas d’équivalent dans Snowflake donc il est transformé en Varchar (Référence linguistique BigQuery Type de données INTERVAL)
Syntaxe
Modèles d’échantillons de sources¶
Intervalle avec un seule partie DateTime¶
BigQuery¶
Résultat¶
Snowflake¶
Résultat¶
Snowflake ne prend pas en charge le scénario dans lequel le type de données Intervalle est interrogé directement, au contraire lorsqu’il est utilisé comme opérateur pour une date donnée sa traduction est effectuée à l’aide d’une [constante d’intervalle](https://docs. snowflake.com/en/sql-reference/data-types-datetime.html#interval-constants) (si possible).
Intervalle avec une plage de parties DateTime¶
BigQuery¶
Résultat¶
Snowflake¶
Résultat¶
La valeur d’intervalle est transformée dans un format Snowflake pris en charge, puis insérée sous forme de texte dans la colonne. Comme Snowflake ne prend pas en charge l”intervalle comme type de données, il n’est pris en charge que dans les opérations arithmétiques. Pour utiliser la valeur, il faut l’extraire et l’utiliser comme constante d’intervalle (si possible).
Intervalle comme type de données de colonne¶
BigQuery¶
Résultat¶
ID |
colonne_intervalle |
|---|---|
1 |
2-11 28 0:0:0 |
2 |
2-11 28 16:15:14 |
3 |
0-11 28 16:15:14 |
4 |
0-0 0 0:15:14 |
Snowflake¶
Résultat¶
ID |
colonne_intervalle |
|---|---|
1 |
2y, 11mm, 28d |
2 |
2y, 11mm, 28d, 16h, 15m, 14s |
3 |
11mm, 28d, 16h, 15m, 14s |
4 |
15m, 14s |
Dans BigQuery la partie horodatage (datetime_part) suit le format canonique suivant :
Comparaison d’intervalle¶
BigQuery¶
Snowflake¶
Il est connu que Snowflake ne prend en charge que l’intervalle comme type de données dans les opérations arithmétiques, d’où la raison pour laquelle la fonction CURRENT_TIMESTAMP est ajoutée à chaque opérande pour prendre en charge correctement la comparaison.
Problèmes connus¶
1. Only arithmetic operations are supported¶
Les intervalles Snowflake ont plusieurs limites. Seules les opérations arithmétiques entre DATE ou TIMESTAMP et les constantes d’intervalle sont pris en charge ; tous les autres scénarios ne sont pas pris en charge.
2. Working with signs in the Interval data type¶
Dans BigQuery, lorsque la sous-chaîne correspondant à l’année-mois est précédée d’un signe (+ -), elle affecte à la fois l’année et le mois. De la même manière, cela fonctionne pour la sous-chaîne correspondant à l’heure. Dans ce cas, ce qui suit affecte l’heure, la minute et la seconde. En voici un exemple.
BigQuery¶
Snowflake¶
EWIs connexes¶
SSC-EWI-0036 : Type de données converti en un autre type de données.
SSC-EWI-0107 : intervalle littéral non pris en charge dans le scénario actuel.
JSON¶
Type de données JSON et utilisations de ce type de données
Description¶
Représente JSON, un format d’échange de données léger. Pour plus d’informations, reportez-vous à Type de donnéesBigQuery JSON.
Danger
Le type de données JSON n’est pas pris en charge dans Snowflake, actuellement transformé en VARIANT.
Littéraux JSON¶
Pour plus d’informations, reportez-vous à Littéraux JSON dans BigQuery.
Ces littéraux ne sont pas pris en charge dans Snowflake, mais au lieu de cela, la fonction PARSE_JSON peut être utilisée pour convertir l’expression d’entrée en type json. Le seul point à prendre en considération est que cette fonction ne peut pas être utilisée dans la clause Valeurs de Snowflake, pour cette raison elle est transformée en une sous-requête.
Modèles d’échantillons de sources¶
BigQuery¶
Snowflake¶
STRUCT¶
Spécification de traduction pour le type de données STRUCT de BigQuery vers Snowflake.
Description¶
Dans BigQuery, un conteneur de champs ordonnés chacun avec un type (obligatoire) et un nom de champ (facultatif). Voir Type de structure.
Dans Snowflake, OBJECT_CONSTRUCT peut être utilisé pour émuler le comportement STRUCT et SnowConvert AI traite la plupart des différences d’implémentation.
Note
Les arguments qui représentent des clés dans OBJECT_CONSTRUCT doivent être les noms d’origine de la cible STRUCT. Tout nom spécifié dans un corps d’expression STRUCT sera remplacé par le nom trouvé dans la cible STRUCT. La plupart des exemples de modèles de données ci-dessous contiennent un exemple de nom qui est remplacé par le nom cible.
Modèles d’échantillons de sources¶
BigQuery¶
Snowflake¶
Insérer le type de données INT dans la colonne STRUCT¶
BigQuery¶
Snowflake¶
Insérer le type de données STRING dans la colonne STRUCT¶
BigQuery¶
Snowflake¶
Insérer le type de données STRUCT dans la colonne STRUCT¶
BigQuery¶
Snowflake¶
Insérer le type de données ARRAY dans la colonne STRUCT¶
BigQuery¶
Snowflake¶
Insérer dans les colonnes sélectionnées STRUCT¶
BigQuery¶
Snowflake¶
Insérer dans la syntaxe de tuple de colonne STRUCT¶
Avertissement
La traduction des valeurs de la syntaxe de tuple n’est actuellement pas prise en charge.
BigQuery¶
Snowflake¶
Mettre à jour la colonne STRUCT¶
BigQuery¶
Snowflake¶
Mettre à jour le champ de colonne STRUCT¶
BigQuery¶
Snowflake¶
Sélectionner depuis la colonne STRUCT¶
BigQuery¶
Snowflake¶
Sélectionner depuis la syntaxe de tuple de colonne STRUCT¶
BigQuery¶
Snowflake¶
Créer une vue à l’aide d’une définition anonyme STRUCT¶
BigQuery¶
Snowflake¶
Expressions de comparaison de colonnes STRUCT¶
Les opérations de comparaison BigQuery pour les Structs comparent chaque valeur à chaque valeur, en ignorant la clé si elle existe, tandis que les opérations de comparaison dans Snowflake pour les Objets comparent les deux, valeur et clé. Par conséquent, certaines comparaisons peuvent renvoyer un résultat différent.
BigQuery¶
Snowflake¶
EWIs connexes¶
SSC-FDM-BQ0010: Struct converti en VARIANT. Certaines de ses utilisations peuvent présenter des différences fonctionnelles.
SSC-EWI-BQ0012: SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter. Missing symbol information.
SSC-FDM-BQ0008: Où la clause fait référence à une colonne de type STRUCT.
TIMESTAMP¶
Type de données TIMESTAMP (horodatage) et utilisations de ce type de données
Description¶
Une valeur d’horodatage représente un point absolu dans le temps, indépendamment de tout fuseau horaire ou convention tel que l’heure d’été (DST), avec une précision de l’ordre de la microseconde. Pour plus d’informations, reportez-vous à Type de données d’horodatage BigQuery.
Syntaxe grammaticale¶
| Name | Range |
|---|---|
| TIMESTAMP | 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999 UTC |
Succès
Type de données TIMESTAMP actuellement transformé en TIMESTAMP_TZ.#x20;
Il est important de noter que BigQuery stocke les données TIMESTAMP en temps universel coordonné (UTC).
Modèles d’échantillons de sources¶
TIMESTAMP sans heure¶
BigQuery¶
Résultat¶
Snowflake¶
Résultat¶
TIMESTAMP avec fuseau horaire.¶
Lorsque le fuseau horaire est défini, vous devez utiliser la fonction CONVERT_TIMEZONE pour stocker les données en temps universel coordonné (UTC). Le nom du fuseau horaire dans le littéral d’horodatage n’est pas pris en charge par Snowflake, dans ce cas il est également nécessaire d’utiliser cette fonction.