如何在clickhouse中创建“表中表”?
Posted
技术标签:
【中文标题】如何在clickhouse中创建“表中表”?【英文标题】:How to create 'table in table' in clickhouse? 【发布时间】:2020-06-12 07:57:41 【问题描述】:例如
在 clickhouse 中,我想创建一个类似以下结构的表。
create table (
time DateTime,
visits array(unit)
)
Engine=memory
the unit struct
a string,
btime int64,
c string,
e string
如何创建表?
【问题讨论】:
【参考方案1】:需要使用Nested data structure:
CREATE TABLE visits (
time DateTime,
visits Nested
(
a String,
btime Int64,
c String,
e String
)
) ENGINE = Memory;
/* insert test data */
INSERT INTO visits
VALUES
(now(), ['a1', 'a2'], [1, 2], ['c1', 'c2'], ['e1', 'e2']),
(now(), ['a11', 'a12'], [11, 12], ['c11', 'c12'], ['e11', 'e12']);
SELECT *
FROM visits;
/* results
┌────────────────time─┬─visits.a──────┬─visits.btime─┬─visits.c──────┬─visits.e──────┐
│ 2020-06-12 08:14:07 │ ['a1','a2'] │ [1,2] │ ['c1','c2'] │ ['e1','e2'] │
│ 2020-06-12 08:14:07 │ ['a11','a12'] │ [11,12] │ ['c11','c12'] │ ['e11','e12'] │
└─────────────────────┴───────────────┴──────────────┴───────────────┴───────────────┘
*/
另外,请看文章Nested Data Structures in ClickHouse。
【讨论】:
知道了,但是如果我想从mongo批量导入这样的数据结构,转换起来会很复杂。 有两种方法可以创建重复 JSON 模式的 DB 模式(如答案中所述)或将 JSON 存储为字符串并使用 Functions for Working with JSON。此外,这两种方式都可以结合使用。以上是关于如何在clickhouse中创建“表中表”?的主要内容,如果未能解决你的问题,请参考以下文章
在 clickhouse 中创建表时如何将自定义默认值添加到 Nullable 类型?
如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列