Translation not up to date
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.
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
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);
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.