0 / 0
Go back to the English version of the documentation
Datové typy STRING, TEXT a VARCHAR v tabulkách Snowflake mají přiřazen datový typ CLOB v produktu Watson Query .
Last updated: 31. 3. 2023
Datové typy STRING, TEXT a VARCHAR ve vločkách typu Snowflake jsou přiřazeny k datovému typu CLOB v produktu Watson Query .

Když virtualizujete tabulky ve zdroji dat Snowflake , produkt Watson Query převede data s typy STRING, TEXT a VARCHAR na typ CLOB místo typu VARCHAR, překročí-li maximální délku řetězce.

Projevy

Když virtualizujete tabulku Snowflake , která obsahuje datové typy STRING, TEXT a VARCHAR, které překračují výchozí maximální délku řetězce 32 K pro parametr MaxStringSize , datový typ sloupce se převede na CLOB.

Snowflake určuje maximální délku 16777,216 pro typy STRING, TEXT a VARCHAR, není-li maximální délka definovaná uživatelem. Produkt Watson Query proto virtualizuje datový typ na specifickou délku, aby se zabránilo oříznutí. Nicméně můžete upravit maximální délku řetězce těchto datových typů, abyste se vyhnuli převodu na CLOB nastavením velikosti řetězce na hodnotu menší než 32 kB.

Následující příklad je uveden z tabulky Snowflake s řetězci, kde můžete upravit typ sloupce na délku vhodnou pro agregaci.

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.
Následující dotaz selhává kvůli datovému typu 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

Řešení problému

Můžete změnit sloupec, který způsobí, že se selhání sníží na něco, co lze použít v agregaci. V následujícím příkladu se používá VARCHAR(200) , ale můžete vybrat, co je vhodné pro maximální délku vašich dat.
alter nickname TESTDATA.BASIC_STRING alter column "c_str" local type VARCHAR(200);
Stejný dotaz nyní uspěje.
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.
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more