Сравнить производительность, нужно сгруппировать таблицу с десятком измерений, из которых не все ключевые. Например, в таблице есть Месяц и Год. Что быстрее будет работать: если добавить Год в group by или применить функцию агрегирования Only(Год)?
Чет я за результат такой манипуляции не был бы уверен. судя по вот этому, only(Год) не все данные оставит, а только те, где год будет в единственном экземпляре у перечисленных в group by полях
Ок, более полный пример: таблица Год/Месяц/День/Продажи.
Первый вариант: load Год, месяц, sum(продажи) Group by год, месяц
Второй: Load Only(год), месяц, sum(продажи) Group by месяц
Результат одинаковый, вопрос в производительности. В моем случае таких полей как Год (неключевых) в таблице больше, и сама таблица больше 100 млн записей
По ощущениям с only() работает дольше, я просто не дождался, пока выполнится скрипт. Поэтому и решил уточнить здесь, смутила статья, ссылку на которую выше привел
Ну вот я сейчас тоже читаю и не очень понял зачем там вообще в Only оборачивали. Функция only в группировке не участвует. Она оставляет по-сути только те значения, которые являются уникальными для критериев группировки. То есть ее использование конкретно для целей группировки выглядит туманным
тем более еще и акцент сделали зачем-то. При это объяснение немного за гранью. "Кроме того, поработаем с годом и месяцем, чтобы по ним можно было делать отдельные выборки в приложении – завернем их в функцию only()."
Чет я за результат такой манипуляции не был бы уверен. судя по вот этому, only(Год) не все данные оставит, а только те, где год будет в единственном экземпляре у перечисленных в group by полях
Ну тут же очевидно, какие поля с Only работают. Когда они однозначно взаимосвязаны. CustomerID и Customer. Вот они и обернули одно из них в only. С таким же успехом могли бы Max или min поставить, но похоже, что и правда only быстрее будет работать. Емли в примере Месяц имеет формат 202005 , то Год можно в Only обернуть, все будет корректно, так как месяца уникальны в данном случае и уже содержат информацию Год.