0 / 0
Retourner à la version anglaise de la documentation
Le type de données STRING dans les tables " Hive se voit attribuer le type de données " CLOB dans la Data Virtualization
Dernière mise à jour : 26 nov. 2024
Le type de données STRING dans les tables Hive est attribué au type de données CLOB dans la Data Virtualization

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

Symptômes

Lorsque vous virtualisez une table Hive qui contient le type de données STRING qui dépasse la longueur de chaîne maximale par défaut (MaxStringSize), le type de données de la colonne est converti en CLOB.

Hive ne donne pas de longueur maximale pour les types 'STRING; par conséquent, Data Virtualization virtualise à une longueur spécifique pour éviter la troncature. Cependant, vous pouvez ajuster la longueur maximale.

L'exemple suivant provient d'une table Hive 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