如何从数组中选择唯一的键值对到 Clickhouse 的物化视图中?

问题描述

表结构如下,

CREATE TABLE metrics

(
    `created_date` Date,`created_at` DateTime,`host` LowCardinality(String),`metrics_name` LowCardinality(String),`tags` Nested(key LowCardinality(String),value LowCardinality(String))
)
ENGINE = MergeTree(created_date,(created_at),8192)

如何生成具有类似结构的物化视图

主持人 价值观
主机 键:X 值:["uniq1","uniq2"]

解决方法

考虑使用这个MV:

CREATE MATERIALIZED VIEW metrics_mv
ENGINE = MergeTree()
ORDER BY host AS
SELECT
    host,tags.key key,groupArray(tags.value) values /* or 'groupUniqArray(tags.value) AS values' to get unique values */
FROM metrics
ARRAY JOIN tags
GROUP BY
    host,tags.key
,

MergeTree(created_date,(created_at),8192)

此语法在 3 年多前就已过时。尽量不要使用它。最终会被取消。

ENGINE = MergeTree partition by toYYYYMM(created_date) ORDER by (created_at)

CREATE TABLE metrics
(
    `created_date` Date,`created_at` DateTime,`host` LowCardinality(String),`metrics_name` LowCardinality(String),`tags` Nested(key LowCardinality(String),value LowCardinality(String))
)
ENGINE = MergeTree partition by toYYYYMM(created_date) ORDER by (created_at)


create materialized view metrics_mv (
     host LowCardinality(String),key LowCardinality(String),u_values SimpleAggregateFunction(groupUniqArrayArray,Array(String))
)     
Engine=AggregatingMergeTree order by (host,key) as
select host,tags.key as key,groupUniqArray(tags.value) as u_values
from metrics array join tags
group by host,key


insert into metrics values(today(),now(),'h1','m1',['k1','k2'],['v1','v2']);
insert into metrics values(today(),'k3'],['v11','h2','v22']);

optimize table  metrics_mv final;

select * from metrics_mv;

┌─host─┬─key─┬─u_values─────┐
│ h1   │ k1  │ ['v11','v1'] │
│ h1   │ k2  │ ['v2']       │
│ h1   │ k3  │ ['v2']       │
│ h2   │ k1  │ ['v1']       │
│ h2   │ k3  │ ['v22']      │
└──────┴─────┴──────────────┘

select host,key,groupUniqArrayArray(u_values) values
from metrics_mv
group by host,key

┌─host─┬─key─┬─values───────┐
│ h1   │ k2  │ ['v2']       │
│ h2   │ k3  │ ['v22']      │
│ h1   │ k3  │ ['v2']       │
│ h1   │ k1  │ ['v11','v1'] │
│ h2   │ k1  │ ['v1']       │
└──────┴─────┴──────────────┘

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...