ClickHouse table engines determine how data is stored, indexed, queried, and replicated.
MooseOLAP selects the engine in the OlapTable config:
You set the engine in the OlapTable config with the engine property:
from datetime import date, datetimefrom moose_lib import OlapTable, OlapConfigfrom moose_lib.blocks import ReplacingMergeTreeEngine, SummingMergeTreeEnginefrom pydantic import BaseModel class EngineExampleRow(BaseModel): id: str timestamp: datetime updated_at: datetime deleted: int = 0 date: date page: str views: int click_sum: int ## MergeTree (default, can omit engine property)MergeTree = OlapTable[EngineExampleRow]("merge_tree_table", OlapConfig( order_by_fields=["timestamp", "id"], )); ## ReplacingMergeTree (deduplicate by key, optional version + soft delete)ReplacingMergeTree = OlapTable[EngineExampleRow]("replacing_merge_tree_table", OlapConfig( engine=ReplacingMergeTreeEngine(), order_by_fields=["id"], ver="updated_at", is_deleted="deleted",)); ## SummingMergeTree (sum numeric columns for the same key)SummingMergeTree = OlapTable[EngineExampleRow]("summing_merge_tree_table", OlapConfig( engine=SummingMergeTreeEngine(), order_by_fields=["date", "page"], columns=["views", "click_sum"],));ClickHouseEngines includes the following categories:
SimpleAggregateFunction with AggregatingMergeTree