我在ClickHouse表中有一些原始JSON数据(实际上,来自netflow collector的netflow V9),它看起来像这样:
{"AgentID":"10.1.8.1",
"Header":{"Version":9,"Count":2},
"DataSets":[
[{"I":2,"V":"231"},{"I":3,"V":"151"},{"I":8,"V":"109.195.122.130"}],
[{"I":2,"V":"341"},{"I":3,"V":"221"},{"I":8,"V":"109.195.122.233"}]
]}'
我的任务是通过以下方式将DataSet数组转换为另一个ClickHouse表:
I2 I3 I8
-----------------------------
231 151 109.195.122.130
341 221 109.195.122.233
...
1条答案
按热度按时间v09wglhw1#
要解析JSON,请考虑使用专用的json functions:
(To获取有关JSON解析的更多信息,请参阅How to extract json from json in clickhouse?)
上面的实现依赖于Datasets-array的固定结构。正如我在真实的世界中所理解的那样,这个结构具有任意模式(https://www.iana.org/assignments/ipfix/ipfix.xhtml),例如:
因此,它出现了一个表与任意列计数的问题。ClickHouse不支持此功能-看看如何可能在这种情况下提出的表https://stackoverflow.com/search?q=%5Bclickhouse%5D+pivot。