Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Агрегация и обработка статистики

Агрегация и обработка статистики

Доклад Валерия Змиевского, kharkivpy #8

Yehor Nazarkin

August 12, 2013
Tweet

More Decks by Yehor Nazarkin

Other Decks in Programming

Transcript

  1. Что нам нужно? • База данных • Отказаться от запросов:

    group by keyfield … order by sum(datafield) desc • Upsert MongoDB, MySQL - есть нативный синтаксис
  2. Как хранить данные Хранить данные для каждого ключа группировки в

    отдельной таблице: user : [last_login, orders, coupons_used, …] category, date : [orders_amount, items_sold] region, date : [orders_amount, items_sold] ….
  3. OLAP-куб на одной таблице Ключи : данные [region, category, year,

    month] : [ord, isold] [<all>, 12, 2013, 01] : [100, 665] [<all>, <all>, 2013, 01] : [1600, 5200] ….
  4. Срезы [region, category, year, month] [0, 0, 1, 0], [0,

    0, 1, 1], [1, 0, 1, 0], [1, 0, 1, 1] [0, 1, 1, 0], [0, 1, 1, 1], [1, 1, 1, 0], [1, 1, 1, 1] [0, 1, 0, 0], [1, 1, 0, 0] Не нужны срезы: [*, *, 0, 1] и [*, 0, 0, 0]
  5. Показываем: category, графики по месяцам Сортируем: ord, isold Индексы: •

    region, category, year, month - unique|Charts • region, year, month, ord - Orders/Category • region, year, month, isold - It. sold/Category Индексы
  6. Запросы: Категории: region=<all>, year=<all>, month=<all> region=EU, year=<all>, month=<all> region=EU, year=2013,

    month=<all> График по категории Goods за 2013 год region=EU, year=2013, category=’Goods’