max_bytes_before_external_group_by считает байты так же, как max_memory_usage. Таким образом, если учитывается меньше памяти, чем на самом деле, то внешняя агрегация не сработает вовремя. Я сейчас создам у себя таск, чтобы не забыть: "Сделать, чтобы AggregateFunctionSingleValue использовала Arena. Для корректного учёта оперативки."
Обсуждают сегодня