【问题标题】:Split one column into several sql将一列拆分为多个sql
【发布时间】:2020-02-10 11:17:15
【问题描述】:

我有这张桌子:

Path           Value Time
name1.metric1   v1  t1
name1.metric2   v2  t1
name1.metric3   v3  t1
name1.metric4   v4  t1
name2.metric1   v5  t2
name2.metric2   v6  t2
name2.metric3   v7  t2
name2.metric4   v8  t2

“路径”中有四个指标,每个用户都有不同的值。一个用户的每个指标的时间都是相同的。

我想知道,如何将“路径”拆分为另外四列,如下所示:

Path    metric1 metric2 metric3 metric4 Time
name1      v1     v2      v3      v4      t1
name2      v5     v6      v7      v8      t2

我使用 Clickhouse 作为数据库,任何想法,谢谢

【问题讨论】:

    标签: sql clickhouse


    【解决方案1】:

    我对 Clickhouse 不是很熟悉。您基本上需要条件聚合,以及path 上的一些字符串操作。

    类似这样的:

    select splitbychar(path, '.')[1] as name, time,
           max(case when path like '%.metric1' then value end) as value1,
           max(case when path like '%.metric2' then value end) as value2,
           max(case when path like '%.metric3' then value end) as value3,
           max(case when path like '%.metric4' then value end) as value4
    from t
    group by splitbychar(path, '.')[1], time
    

    【讨论】:

    • 如果数据至少有 100 个指标值怎么办
    • @SashaKorkin 你在哪里运行这个查询?此查询不遵循 ClickHouse 语法,因此不应该工作。
    • 你可以使用组合器 maxIf(value, path like '%.metric1')
    • @vladimir 我用“splitByChar”代替“split”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多