0 / 0
Torna alla versione inglese della documentazione
Ai tipi di dati STRING, TEXT e VARCHAR delle tabelle 'Snowflake viene assegnato il tipo di dati CLOB in Data Virtualization
Ultimo aggiornamento: 26 nov 2024
Ai tipi di dati STRING, TEXT e VARCHAR nelle tabelle Snowflake viene assegnato il tipo di dati CLOB in Data Virtualization

Quando si virtualizzano le tabelle in un'origine dati 'Snowflake, Data Virtualization converte i dati con i tipi STRING, TEXT e VARCHAR nel tipo CLOB invece che nel tipo VARCHAR quando superano la lunghezza massima della stringa.

Sintomi

Quando si virtualizza una tabella Snowflake che contiene tipi di dati STRING, TEXT e VARCHAR che superano la lunghezza massima predefinita di 32 K per il parametro MaxStringSize , il tipo di dati della colonna viene convertito in CLOB.

Snowflake indica una lunghezza massima di 16.777.216 per i tipi STRING, TEXT e VARCHAR se la lunghezza massima non è definita dall'utente. Pertanto, la Data Virtualization virtualizza il tipo di dati a una lunghezza specifica per evitare il troncamento. Tuttavia, è possibile regolare la lunghezza massima della stringa di questi tipi di dati per evitare la conversione in CLOB impostando la dimensione della stringa su un valore inferiore a 32 K.

Il seguente esempio proviene da una tabella Snowflake 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 alterare la colonna che provoca il mancato abbassamento delle sue dimensioni a qualcosa che può essere utilizzato in aggregazione. Nell'esempio seguente, VARCHAR(200) viene utilizzato ma è possibile scegliere ciò che è appropriato per la lunghezza massima dei tuoi dati.
alter nickname TESTDATA.BASIC_STRING alter column "c_str" local type VARCHAR(200);
La stessa query ora riesce.
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