INSERT em uma tabela Datalake que é particionada em uma expressão resulta em um erro inesperado

Ao inserir em uma tabela Datalake que é particionada em uma expressão, ocorrerá um erro se os dados inseridos fizerem com que a expressão usada para a chave de particionamento seja inválida.

Sintomas

Por exemplo, o cenário a seguir resultará em um erro:

CREATE datalake table t1  (c1 varchar(20), c2 decimal(10,5)) partitioned by (trunc(10,c1) as mypart) TBLPROPERTIES ('external.table.purge'='true') location 'db2remote://odfdefault//default/t1'

DB20000I  The SQL command completed successfully.

insert into t1 (c1,c2) values ('abc',10)

DB21034E  The command was processed as an SQL statement because it was not a 

valid Command Line Processor command.  During SQL processing it returned:

SQL0420N  Invalid character found in a character string argument of the 

function "INTEGER".  SQLSTATE=22018

Causas

Quando uma tabela Datalake é definida para ser particionada em uma expressão, a expressão é avaliada para cada linha de inserção e, se a expressão for inválida, um erro será retornado. No exemplo acima, é retornado um erro porque a função TRUNC está esperando um argumento numérico para c1, e 'abc' foi usado como entrada.

Resolvendo o problema

Altere os dados da inserção para que a expressão possa ser processada com sucesso. Exemplo de inimigo:
insert into t1 (c1,c2) values ('1234567890',10)

DB20000I  The SQL command completed successfully