предложение «если» не работает в запросе вставки в clickhouse

#clickhouse

Вопрос:

Я пытаюсь вставить данные из ввода csv.

Пример строки:

 1627635473988516097,1627635479990773393,6002,3,0,1152,0,1627635479:0;,1,1,1,3,2,**46.216.7.214,128.140.255.27**,60561,500,0,0,0,0,0,0,191,0,0,375001000099,0,0,0000:0000:0000:0000:0000:0000:0000:0000,0,0000:0000:0000:0000:0000:0000:0000:0000,0,0,0,0,0,0,0,116,0,0,['encrypted'],0,0,0,1545614606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,0,0,0,0,0
 

Это часть запроса на вставку:

 insert into migration.gate_clickstream_indexed (datetime, login, publicSrc, publicSrcV6, publicSrcPort, dst, dstV6, dstPort, bytesOut, bytesIn, application) 
select toDateTime(truncate(start_time/1E9)), toString(msisdn),a**ssumeNotNull(if (ip_src LIKE '%.%', IPv4StringToNum(ip_src), NULL)), assumeNotNull(if (ip_src LIKE '%:%', IPv6StringToNum(ip_src), NULL))**, port_src, assumeNotNull(if (ip_dst LIKE '%.%', IPv4StringToNum(ip_dst), NULL)), assumeNotNull(if (ip_dst LIKE '%:%', IPv6StringToNum(ip_dst), NULL)), port_dst, bytes_ul, bytes_dl, toString(application) 
from input
 

Но, несмотря на предложение «если», ch вставляет в IPv4 в формате publicSrcV6:

 375001000099        0.0.0.0 ::  0   46.216.7.214    **::ffff:46.216.7.214** 60561   2021-07-30 11:57:53         128.140.255.27  **::ffff:128.140.255.27**   500 1152    0   0   2021-07-30
 

Я не могу понять, почему?

Ответ №1:

Я обнаружил, что эта проблема возникает только в случае вставки IPv4. Я пробовал использовать в части «другое» вместо NULL этот IPv4StringToNum(‘0.0.0.0’). И Это работает.