0 / 0
Torna alla versione inglese della documentazione
Al tipo di dati STRING nelle tabelle 'Hive viene assegnato il tipo di dati 'CLOB nella Data Virtualization
Ultimo aggiornamento: 26 nov 2024
Il tipo di dati STRING nelle tabelle Hive è assegnato al tipo di dati CLOB in Data Virtualization

Quando si virtualizzano tabelle in un'origine dati 'Hive, Data Virtualization converte i dati di tipo 'STRING in tipo 'CLOB anziché 'Varchar quando superano la lunghezza massima della stringa.

Sintomi

Quando si virtualizza una tabella Hive contenente il tipo di dati STRING che supera la lunghezza massima della stringa predefinita (MaxStringSize), il tipo di dati della colonna viene convertito in CLOB.

Hive non fornisce una lunghezza massima per i tipi 'STRING; pertanto, Data Virtualization virtualizza a una lunghezza specifica per evitare il troncamento. Tuttavia, è possibile regolare la lunghezza massima.

Il seguente esempio proviene da una tabella Hive con stringhe in cui è possibile modificare il tipo di colonna in una lunghezza adatta per l'aggregazione.

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 seguente query non riesce a causa del tipo di dati 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

Risoluzione del problema

È possibile modificare la colonna che causa l'errore per ridurne la dimensione a qualcosa che può essere utilizzato nell'aggregazione. Nel seguente esempio, viene utilizzato VARCHAR(200) , ma è possibile scegliere ciò che è appropriato per la lunghezza massima dei dati.
alter nickname TESTDATA.BASIC_STRING alter column "c_str" local type VARCHAR(200);
La stessa query ora ha esito positivo.
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.
Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni