следующая ошибка.
There is no supertype for types DateTime('UTC'), UInt8, Date because some of them are Date/DateTime and some of them are not.
Хотя входные аргументы обеих функций – DateTime
Не подскажете как можно исправить это?
покажите запрос?
Изначаально запрос выглядит таким образом (использую питон) SELECT CASE WHEN %(period)s = 'day' THEN toStartOfHour(CreatedAt) WHEN %(period)s = 'week' THEN toDayOfWeek(CreatedAt) END as IntervalPoint FROM CurrentTable WHERE ProjectID=%(project_id)s В кликхаус это идет в таком виде SELECT multiIf('week' = 'day', toTime(toStartOfHour(CreatedAt)), 'week' = 'week', toDayOfWeek(CreatedAt), NULL) AS IntervalPoint FROM mentions WHERE ProjectID = 1
ну дык это все правильно ругается у вас multiIf ошибку кидает а не toStartOfHour \ toDayOfWeek сравните SELECT toTypeName(toTime(toStartOfHour(now()))), toTypeName(toDayOfWeek(now())) ┌─toTypeName(toTime(toStartOfHour(now())))─┬─toTypeName(toDayOfWeek(now()))─┐ │ DateTime('Europe/UTC') │ UInt8 │ └──────────────────────────────────────────┴────────────────────────────────┘ вам надо toTime на toUInt64 заменить тогда пройдет или toDayOfWeek на toStartOfWeek не знаю какая у вас цель запроса
Всё, понял. Спасибо большое!
в общем в любой непонятной ситуации. сначала сравниваем типы =) clickhouse в этом отношении очень хрупкий =(
Обсуждают сегодня