使用Yandex ClickHouse稀疏表的正确方法是什么?

时间:2018-03-14 14:50:24

标签: clickhouse

我对CickHouse中常见类型的禁用NULL感到困惑。 NULL值限制背后的想法是什么?

在Google BigQuery中,我的工作流程是在同一个表中存储尽可能多的指标,尽管我每行只能存储一个字段。

但在ClickHouse案例中,所有值都将设置为默认值。

  1. 存储效率方面还可以吗?
  2. 通过这些表聚合的常用方法是什么?我的意思是只聚合实际值(没有设置为默认值的那些)
  3. 也许我应该使用不同的表方案结构?
  4. P.S。数据是加密货币指标,例如(价格,数量,社区规模,链数据)。

    p.s.s。我的常见问题是按时间段聚合,即

    SELECT time_bucket('10 seconds', time) AS period, max(value), avg(value), fisrt(value), last(value) GROUP BY id, period
    

    字段上的一些数学(+, - ,/,*),移动平均值,标准差。 (但是这部分可以在接下来的步骤中使用pandas完成)。

    time_bucket是时间刻度的基元,用于在一段时间内进行聚合。

1 个答案:

答案 0 :(得分:1)

自2017年中期以来,Clickhouse支持NULL。目前ClickHouse中的NULL支持已经足够成熟,可以在生产环境中使用(仍然可能存在微小问题)。文档还没有准备好。

语法是这样的:

create table test (x Nullable(UInt8)) Engine = TinyLog;

通常,一些列支持NULL,这意味着它有点慢,因为应该以某种“特殊”方式存储和处理NULL状态。任何数据库都是如此。

ClickHouse源自Yandex Metrika,可能最初对于Metrika场景来说,NULL并不是很好的。