Translation not up to date
The translation of this page does not represent the latest version. For the latest updates, see the English version of the documentation.
Last updated: 31 mar 2023
Podczas zwirtualizowania tabel w źródle danych Hive Watson Query przekształca dane typu STRING w typ CLOB , a nie Varchar , jeśli przekracza maksymalną długość łańcucha.
Objawy
W przypadku wirtualizowania tabeli Hive , która zawiera typ danych STRING , który przekracza domyślną maksymalną długość łańcucha (MaxStringSize), typ danych kolumny jest przekształcany w CLOB.
Opcja Hive nie daje maksymalnej długości dla typów STRING , dlatego Watson Query jest wirtualizowane na określonej długości, aby uniknąć obcięcia. Można jednak dostosować maksymalną długość.
Poniższy przykład pochodzi z tabeli Hive 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.
Następujące zapytanie nie powiodło się z powodu typu danych 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
Rozwiązanie problemu
Istnieje możliwość zmiany kolumny, która powoduje zmniejszenie jej wielkości do wartości, która może być używana w agregacji. W poniższym przykładzie używany jest produkt
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);
To samo zapytanie jest teraz pomyślne.
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.