ClickHouse/docs/ru/table_engines/summingmergetree.rst
Andrey Dudin 4a24d4f3ad Fixed some ERRORS and WARNINGS during RU docs build. (#772)
* Initial commit if EN docs

* Part of EN documentation

* Full queries section

* External data

* Table engines

* System tables

* Table functions

* Formats

* Data types

* Operators

* Functions

* Dictionaries

* Settings

* Configuration files

* Access rights

* Quotas

* Fixed few formatting errors

* Fixed few formatting errors

* Fixed few formatting errors

* FIX: "WARNING: Title underline too short." during build RU docs.

* FIX: "WARNING: Title underline too short." during build RU docs.
2017-05-08 01:06:04 -04:00

41 lines
3.6 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SummingMergeTree
----------------
Отличается от ``MergeTree`` тем, что суммирует данные при слиянии.
.. code-block:: sql
SummingMergeTree(EventDate, (OrderID, EventDate, BannerID, ...), 8192)
Столбцы для суммирования заданы неявно. При слиянии, для всех строчек с одинаковым значением первичного ключа (в примере - OrderID, EventDate, BannerID, ...), производится суммирование значений в числовых столбцах, не входящих в первичный ключ.
.. code-block:: sql
SummingMergeTree(EventDate, (OrderID, EventDate, BannerID, ...), 8192, (Shows, Clicks, Cost, ...))
Явно заданные столбцы для суммирования (последний параметр - Shows, Clicks, Cost, ...). При слиянии, для всех строчек с одинаковым значением первичного ключа, производится суммирование значений в указанных столбцах. Указанные столбцы также должны быть числовыми и не входить в первичный ключ.
Если значения во всех таких столбцах оказались нулевыми, то строчка удаляется. (За исключением случаев, когда в куске данных не осталось бы ни одной строчки.)
Для остальных столбцов, не входящих в первичный ключ, при слиянии выбирается первое попавшееся значение.
При чтении, суммирование не делается само по себе. Если оно необходимо - напишите соответствующий GROUP BY.
Дополнительно, таблица может иметь вложенные структуры данных, которые обрабатываются особым образом.
Если название вложенной таблицы заканчивается на Map и она содержит не менее двух столбцов, удовлетворяющих следующим критериям:
* первый столбец - числовой ((U)IntN, Date, DateTime), назовем его условно key,
* остальные столбцы - арифметические ((U)IntN, Float32/64), условно (values...), то такая вложенная таблица воспринимается как отображение key => (values...) и при слиянии ее строк выполняется слияние элементов двух множеств по key со сложением соответствующих (values...).
Примеры:
::
[(1, 100)] + [(2, 150)] -> [(1, 100), (2, 150)]
[(1, 100)] + [(1, 150)] -> [(1, 250)]
[(1, 100)] + [(1, 150), (2, 150)] -> [(1, 250), (2, 150)]
[(1, 100), (2, 150)] + [(1, -100)] -> [(2, 150)]
Для вложенных структур данных не нужно указывать её столбцы в качестве списка столбцов для суммирования.
Этот движок таблиц разработан по просьбе БК, и является мало полезным. Помните, что при хранении лишь предагрегированных данных, вы теряете часть преимуществ системы.