Translation not up to date
Podczas wirtualizowania tabel w źródle danych Snowflake program Watson Query przekształca dane typu STRING, TEXT i VARCHAR na typ CLOB zamiast typu VARCHAR, gdy przekraczają maksymalną długość łańcucha.
Objawy
W przypadku wirtualizowania tabeli Snowflake , która zawiera typy danych STRING, TEXT i VARCHAR, które przekraczają domyślną maksymalną długość łańcucha 32 K dla parametru MaxStringSize , typ danych kolumny jest przekształcany w CLOB.
Snowflake określa maksymalną długość (16,777,216) dla typów STRING, TEXT i VARCHAR, jeśli maksymalna długość nie jest zdefiniowana przez użytkownika. Dlatego program Watson Query wirtualizuje typ danych na określoną długość, aby uniknąć obcięcia. Można jednak dostosować maksymalną długość łańcucha tych typów danych, aby uniknąć konwersji na CLOB, ustawiając wielkość łańcucha na wartość mniejszą niż 32 kB.
Poniższy przykład pochodzi z tabeli Snowflake z łańcuchami, w których można dostosować typ kolumny do długości odpowiedniej dla agregacji.
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
Rozwiązywanie problemu
VARCHAR(200)
, ale można wybrać, co jest odpowiednie dla maksymalnej długości danych.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.