【问题标题】:Proper way to work with Yandex ClickHouse sparse tables?使用 Yandex ClickHouse 稀疏表的正确方法?
【发布时间】:2018-08-23 03:55:24
【问题描述】:

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

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

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

  1. 在存储效率方面可以吗?
  2. 通过这些表进行聚合的常用方法是什么?我的意思是只聚合真实值(没有那些被设置为默认值的值)
  3. 也许我应该使用不同的表方案结构?

附言数据是加密货币指标,例如(价格、交易量、社区规模、链上数据)。

附言我的常见查询是按时间段聚合,即

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

关于字段(+、-、/、*)、移动平均线、标准差的一些数学运算。 (但这部分可以在接下来的步骤中使用 pandas 完成)。

time_bucket 是 timescale 在时间段内聚合的原语。

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

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

    语法是这样的:

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

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

    ClickHouse 源自 Yandex Metrika,可能最初 NULL 并不适用于 Metrika 场景。

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多