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.
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
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);
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.