This commit is contained in:
jacob kili 2024-06-03 12:23:18 +00:00 committed by GitHub
commit 89bb8cd0e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 3 deletions

View File

@ -135,6 +135,19 @@ class CollapsingMergeTree(MergeTree):
return params return params
class AggregatingMergeTree(MergeTree):
def __init__(self, date_col=None, order_by=(), sampling_expr=None,
index_granularity=8192, replica_table_path=None, replica_name=None, partition_key=None,
primary_key=None):
super(AggregatingMergeTree, self).__init__(date_col, order_by, sampling_expr, index_granularity,
replica_table_path, replica_name, partition_key, primary_key)
def _build_sql_params(self, db):
params = super(AggregatingMergeTree, self)._build_sql_params(db)
return params
class SummingMergeTree(MergeTree): class SummingMergeTree(MergeTree):
def __init__(self, date_col=None, order_by=(), summing_cols=None, sampling_expr=None, def __init__(self, date_col=None, order_by=(), summing_cols=None, sampling_expr=None,

View File

@ -538,10 +538,10 @@ class QuerySet(object):
def final(self): def final(self):
""" """
Adds a FINAL modifier to table, meaning data will be collapsed to final version. Adds a FINAL modifier to table, meaning data will be collapsed to final version.
Can be used with the `CollapsingMergeTree` and `ReplacingMergeTree` engines only. Can be used with the `CollapsingMergeTree`, `ReplacingMergeTree` and `AggregatingMergeTree` engines only.
""" """
from .engines import CollapsingMergeTree, ReplacingMergeTree from .engines import CollapsingMergeTree, ReplacingMergeTree, AggregatingMergeTree
if not isinstance(self._model_cls.engine, (CollapsingMergeTree, ReplacingMergeTree)): if not isinstance(self._model_cls.engine, (CollapsingMergeTree, ReplacingMergeTree, AggregatingMergeTree)):
raise TypeError('final() method can be used only with the CollapsingMergeTree and ReplacingMergeTree engines') raise TypeError('final() method can be used only with the CollapsingMergeTree and ReplacingMergeTree engines')
qs = copy(self) qs = copy(self)

View File

@ -73,6 +73,11 @@ class EnginesTestCase(_EnginesHelperTestCase):
engine = ReplacingMergeTree('date', ('date', 'event_id', 'event_group'), 'event_uversion') engine = ReplacingMergeTree('date', ('date', 'event_id', 'event_group'), 'event_uversion')
self._create_and_insert(TestModel) self._create_and_insert(TestModel)
def test_aggregating_merge_tree(self):
class TestModel(SampleModel):
engine = AggregatingMergeTree('date', ('date', 'event_group'))
self._create_and_insert(TestModel)
def test_tiny_log(self): def test_tiny_log(self):
class TestModel(SampleModel): class TestModel(SampleModel):
engine = TinyLog() engine = TinyLog()