Os tipos de dados STRING, TEXT e VARCHAR nas tabelas " Snowflake são atribuídos ao tipo de dados CLOB na Data Virtualization
Quando você virtualiza tabelas em uma fonte de dados ' Snowflake, Data Virtualization converte dados com os tipos STRING, TEXT e VARCHAR para o tipo CLOB em vez do tipo VARCHAR quando eles excedem o comprimento máximo da cadeia.
Sintomas
Ao virtualizar uma tabela Snowflake que contém tipos de dados STRING, TEXT e VARCHAR que excedem o comprimento máximo padrão de sequência de 32 K para o parâmetro MaxStringSize, o tipo de dado da coluna é convertido em CLOB.
Snowflake designará um comprimento máximo de 16.777.216 para tipos STRING, TEXT e VARCHAR se o comprimento máximo não for definido pelo usuário. Portanto, Data Virtualization virtualiza o tipo de dados em um comprimento específico para evitar o truncamento. No entanto, é possível ajustar o comprimento máximo de sequência desses tipos de dados para evitar conversão para CLOB configurando o tamanho de sequência para um valor inferior a 32 K.
O exemplo a seguir é de uma tabela Snowflake com sequências nas quais é possível ajustar o tipo de coluna a um comprimento adequado para agregação.
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
Resolvendo o problema
VARCHAR(200) é usado, mas é possível escolher o que é apropriado para o comprimento máximo dos dados.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.