Когда pre-aggregate до соединения является ошибкой? Вы хотите посчитать выручку по категории товара, имея order_items(order_id, product_id, item_revenue) и products(product_id, category).

AНикогда: pre-aggregate до JOIN всегда ускоряет запрос и даёт верный результат
BКогда таблица products достаточно мала, чтобы поместиться в память
CКогда целевой уровень — позиция заказа: нужно соединить order_items с products, а агрегировать по category уже после JOIN
DКогда в колонках item_revenue или category встречаются значения NULL
Правильный ответ. Если целевая метрика на уровне позиции, pre-aggregate до JOIN может уничтожить нужную детализацию.

Разбор

Категория — атрибут товара, поэтому без JOIN order_items с products вы не знаете, к какой категории относится выручка. Если заранее свернуть до уровня order_id, вы потеряете разрез по товарам и категориям. В таких задачах правильнее агрегировать после JOIN на нужном уровне, контролируя cardinality и риск duplication.

Проверь себя · 1/3разбор после ответа
Вы считаете «уникальные покупатели по бренду». Данные: order_items(user_id, product_id) и products(product_id, brand). Пользователь может купить несколько товаров одного бренда. Какой расчёт на объединённых данных соответствует цели и устойчив к duplication?
Открыть Карьерник в Telegram

Ещё вопросы по теме «JOIN и кардинальность»