0 / 0
Retourner à la version anglaise de la documentation
Les types de données STRING, TEXT et VARCHAR dans les tables 'Snowflake se voient attribuer le type de données CLOB dans la Data Virtualization
Dernière mise à jour : 26 nov. 2024
Les types de données STRING, TEXT et VARCHAR dans les tables Snowflake se voient attribuer le type de données CLOB dans la Data Virtualization

Lorsque vous virtualisez des tables dans une source de données 'Snowflake, Data Virtualization convertit les données de type STRING, TEXT et VARCHAR en type CLOB au lieu du type VARCHAR lorsqu'elles dépassent la longueur maximale de la chaîne.

Symptômes

Lorsque vous virtualisez une table Snowflake qui contient des types de données STRING, TEXT et VARCHAR qui dépassent la longueur de chaîne maximale par défaut de 32 K pour le paramètre MaxStringSize, le type de données de la colonne est converti en CLOB.

Snowflake désigne une longueur maximale de 16 777,216 pour les types STRING, TEXT et VARCHAR si la longueur maximale n'est pas définie par l'utilisateur. Par conséquent, la Data Virtualization virtualise le type de données à une longueur spécifique afin d'éviter la troncature. Toutefois, vous pouvez ajuster la longueur de chaîne maximale de ces types de données pour éviter la conversion en CLOB en définissant la taille de chaîne sur une valeur inférieure à 32 K.

L'exemple suivant provient d'une table Snowflake avec des chaînes où vous pouvez ajuster le type de colonne à une longueur appropriée pour l'agrégation.

describe table TESTDATA.BASIC_STRING;

                                Data type                     Column
Column name                     schema    Data type name      Length     Scale Nulls
------------------------------- --------- ------------------- ---------- ----- ------
c1                              SYSIBM    INTEGER                      4     0 Yes
c_chr5                          SYSIBM    CHARACTER                    5     0 Yes
c_vchr10                        SYSIBM    VARCHAR                     10     0 Yes
c_str                           SYSIBM    CLOB                     65535     0 Yes
  4 record(s) selected.
La requête suivante échoue en raison du type de données CLOB.
select "c_str", sum("c1") from TESTDATA.BASIC_STRING group by "c_str";
SQL0134N  Improper use of a string column, host variable, constant, or function "c_str".  SQLSTATE=42907

Résolution du problème

Vous pouvez modifier la colonne qui entraîne l'échec pour réduire sa taille à une valeur qui puisse être utilisée dans l'agrégation. Dans l'exemple suivant, VARCHAR(200) est utilisé mais vous pouvez choisir ce qui convient à la longueur maximale de vos données.
alter nickname TESTDATA.BASIC_STRING alter column "c_str" local type VARCHAR(200);
La même requête aboutit maintenant.
select "c_str", sum("c1") from TESTDATA.BASIC_STRING group by "c_str";

c_str                                                                                                                      2
------------------------------------------------------------------------------------------------------------ ---------------
                                                                                                                         112
                                                                                                                         382
something a little longer to test string, where we do support pushdown for aggregation                                   244
a                                                                                                                        126
9995-12-31 23:59:59.999999                                                                                               124
A STRING                                                                                                                 118
-                                                                                                                        114
0005-01-01 00:00:00.000001                                                                                               122
  8 record(s) selected.
Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus