1 ?
Select sessionTimestamp, groupArray(eventName) as gEventName, arrayExists(x->(x='bOrder'),gEventName) AS bOrder
WHERE bOrder=1 не получается?
Нет, агрегирования функция в запросе. Выдает ошибку
DB::Exception: Aggregate function groupArray(eventName) is found in WHERE in query: While processing groupArray(eventName) AS gEventName (version 21.5.6.6 (official build))
а есть какое нибудь поле типа sessionid ?
sessionTimestamp
это не sesionid слишком мало уникальности и слишком много дублей придется делать через отдельную таблицу CREATE TABLE order_sessions ...; INSERT INTO order_sessions Select sessionTimestamp, groupArray(eventName) as gEventName, arrayExists(x->(x='bOrder'),gEventName) AS bOrder; SELECT * FROM order_session WHERE bOrder=1;
Дублей нету почти
А под запросами не правильно будет писать? WITH
подзапросы памяти много жрать будут... в принципе если памяти много, то можно вот так SELECT * FROM (SELECT ... ) WHERE bOrder=1
Пока локальное все и много памяти.... И правильнее через `WITH или `SELECT * FROM (SELECT ... )?
а разве не в having должно быть условие на агр. функцию?
это все равно стримится, ни при чем тут память
Да работает, но теперь памяти не хватает)) Memory limit (for query) exceeded: would use 9.32 GiB (attempt to allocate chunk of 137578518 bytes), maximum: 9.31 GiB: While executing AggregatingTransform
версия КХ ? И без having типа работало?
21.5.6.6 без него вообще не работало
set max_bytes_before_external_group_by='5G'
Не помогает, e.displayText() = DB::Exception: Memory limit (for query) exceeded: would use 9.31 GiB (attempt to allocate chunk of 137191537 bytes), maximum: 9.31 GiB: While executing AggregatingTransform
странно, а если set min_bytes_to_use_mmap_io=0; ?
вы set делаете в той же сессии?
что стримится groupArray?
нет, я про select from select
Обсуждают сегодня