CREATE TABLE metrics(entity_id String,occurred_date Date,occurred_at DateTime,metricsMap Nested (name String,value Float64)) ENGINE = ReplacingMergeTree(occurred_date, (entity_ref, occurred_at), 8192)
insert into etactica.entitysamples_metrics FORMAT JSONEachRow { "entity_id":"some-id", "occurred_date" : "2017-06-07", "occurred_at" : "2017-06-07 00:03:00", "metricsMap.name" : ["current", "kwh", "price"], "metricsMap.value" : [0.1, 0.3, 0.0003]}
SELECT
['a', 'b', 'd'] AS k1,
[0.1, 0.2, 0.4] AS v1,
['a', 'b', 'c'] AS k2,
[0.1, 0.2, 0.3] AS v2,
arrayReduce('groupArrayArray', [k1, k2]) AS k_concat,
arrayReduce('groupArrayArray', [v1, v2]) AS v_concat,
arrayEnumerateUniq(k_concat) AS k_is_uniq,
arrayFilter(x -> (x != ''), arrayMap(x -> if(k_is_uniq[x] = 1, k_concat[x], ''), arrayEnumerate(k_concat))) AS k_result,
arrayFilter(x -> (x = x), arrayMap(x -> if(k_is_uniq[x] = 1, v_concat[x], nan), arrayEnumerate(k_concat))) AS v_result
SELECT
['a', 'b', 'd'] AS k1,
[0.1, 0.2, 0.4] AS v1,
['a', 'b', 'c'] AS k2,
[0.1, 0.2, 0.3] AS v2,
arrayReduce('groupArrayArray', [k1, k2]) AS k_concat,
arrayReduce('groupArrayArray', [v1, v2]) AS v_concat,
arrayEnumerateUniq(k_concat) AS k_is_uniq,
arrayFilter((x, y) -> (y = 1), k_concat, k_is_uniq) AS k_result,
arrayFilter((x, y) -> (y = 1), v_concat, k_is_uniq) AS v_result
CREATE TABLE a (k Array(String), v Array(Float32)) ENGINE = Log
INSERT INTO a VALUES (['a', 'b', 'd'], [0.1, 0.2, 0.4]) (['a', 'b', 'c'], [0.1, 0.2, 0.3])
SELECT * FROM a ARRAY JOIN k, v
SELECT uniq_pair.1 AS k, uniq_pair.2 AS v FROM (SELECT groupUniqArray((k, v)) AS uniq_pair FROM a ARRAY JOIN k, v) ARRAY JOIN uniq_pair
SELECT
[('c', 0.3), ('d', 0.4), ('b', 0.2), ('a', 0.1)] AS uniq_pair,
arrayReduce('sum', arrayMap(x -> x.2, uniq_pair))
SELECT sum(v_uniq)
FROM
(
SELECT
n AS n_uniq,
any(v) AS v_uniq
FROM array_kv
ARRAY JOIN
name AS n,
value AS v
GROUP BY n
)
┌─sum(v_uniq)─┐
│ 1 │
└─────────────┘
SELECT *
FROM array_kv
┌─name──────────┬─value─────────────────────────┐
│ ['a','b','d'] │ [0.1,0.2,0.4] │
│ ['a','b','c'] │ [0.1,0.2,0.30000000000000004] │
└───────────────┴───────────────────────────────┘