【发布时间】:2020-12-10 17:22:17
【问题描述】:
我正在尝试通过 sqlalchemy 在 Clickhouse 集群上创建一个新表。而且我不明白如何为 ReplicatedMergeTree 表的引擎指定所有必需的参数。
我用过https://github.com/xzkostyan/clickhouse-sqlalchemy库
from sqlalchemy import create_engine, Column, MetaData, literal
from clickhouse_sqlalchemy import Table, make_session, get_declarative_base, types, engines
engine = create_engine(URL)
session = make_session(engine)
metadata = MetaData(bind=engine)
# Задаются параметры таблицы ClickHouse
another_table = Table(
'sqlalchemy_test'
, metadata
, Column('id', types.Int32, primary_key=True)
, Column('value', types.Int32)
, engines.ReplicatedMergeTree(
table_path='/clickhouse/schema_name/tables/test_sqlalchemy'
, replica_name='{replica}-{shard}')
)
another_table.create()
如何将所有必需的参数放入 Table 类中?
DatabaseException: Orig exception: Code: 42, e.displayText() = DB::Exception: Storage ReplicatedMergeTree requires 5 to 6 parameters:
path in ZooKeeper,
replica name,
name of column with date,
[sampling element of primary key],
primary key expression,
index granularity
MergeTree is a family of storage engines.
MergeTrees are different in two ways:
- they may be replicated and non-replicated;
- they may do different actions on merge: nothing; sign collapse; sum; apply aggregete functions.
So we have 14 combinations:
MergeTree, CollapsingMergeTree, SummingMergeTree, AggregatingMergeTree, ReplacingMergeTree, GraphiteMergeTree, VersionedCollapsingMergeTree
ReplicatedMergeTree, ReplicatedCollapsingMergeTree, ReplicatedSummingMergeTree, ReplicatedAggregatingMergeTree, ReplicatedReplacingMergeTree, ReplicatedGraphiteMergeTree, ReplicatedVersionedCollapsingMergeTree
Examples:
ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
【问题讨论】:
标签: sqlalchemy clickhouse