0 / 0
Volver a la versión inglesa de la documentación
Al tipo de datos STRING de las tablas ' Hive ' se le asigna el tipo de datos ' CLOB ' en Data Virtualization
Última actualización: 26 nov 2024
Al tipo de datos STRING de las tablas Hive se le asigna el tipo de datos CLOB en Data Virtualization

Al virtualizar tablas en un origen de datos ' Hive ', Data Virtualization convierte los datos con tipo ' STRING a tipo ' CLOB ' en lugar de a tipo ' Varchar ' cuando superan la longitud máxima de cadena.

Síntomas

Al virtualizar una tabla de Hive que contiene el tipo de datos STRING que supera la longitud máxima de serie predeterminada (MaxStringSize), el tipo de datos de la columna se convierte a CLOB.

'Hive no da una longitud máxima para los tipos ' STRING; por lo tanto, Data Virtualization virtualiza a una longitud específica para evitar el truncamiento. Sin embargo, puede ajustar la longitud máxima.

El ejemplo siguiente es de una tabla de Hive con series donde se puede ajustar el tipo de columna a una longitud adecuada para la agregación.

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 consulta siguiente falla debido al tipo de datos 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

Resolución del problema

Puede modificar la columna que causa el error para reducir su tamaño a algo que se pueda utilizar en la agregación. En el ejemplo siguiente, se utiliza VARCHAR(200), pero debe elegir lo que es apropiado para la longitud máxima de los datos.
alter nickname TESTDATA.BASIC_STRING alter column "c_str" local type VARCHAR(200);
La misma consulta tiene éxito ahora.
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.
Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información