Войти Регистрация
Data base

119. Актуальные предложения продавцов в ReplacingMergeTree

Сложная

ClickHouse · ClickHouse 26.3.57.12

Цены продавцов меняются тысячи раз в минуту, поэтому в offers не обновляют строки, а дописывают новые с большей version. Таблица — ReplacingMergeTree(version, is_deleted): при слиянии кусков останется последняя версия SKU, а строка с is_deleted = 1 означает, что предложение снято.

Слияние идёт в фоне и неизвестно когда. Для каждого продавца по актуальным версиям верните seller_id, skus — число живых SKU и min_price_rub — минимальную цену. SKU может перейти к другому продавцу — считается по последней версии.

В работе: Витрина «Продавцы»: сколько товаров у продавца и от какой цены, без ожидания фоновых слияний.

Как проверяем Движка ClickHouse в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите все верные варианты (одна лишняя отметка допустима). После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
ReplacingMergeTreeFINALargMaxдедупликация

Источник: на данных Ozon: цены и предложения продавцов. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какие запросы вернут живые SKU и минимальную цену по продавцу?

  • Без FINAL
  • SELECT … FROM offers FINAL
  • argMax без учёта is_deleted
  • argMax по version для каждого SKU и фильтр del = 0
  • argMax по паре (sku, seller_id)