Apache Drill 错误选择展平 kvgen 值
Apache Drill error selecting flatten kvgen value
我有一个具有以下结构的 json 文件:
[{
"metric" : "movie.Guns",
"tags" : {
"channel" : "143"
}
"dps" : {
"1448942400" : 2.5174216027874565,
"1448943000" : 4.378333333333333,
"1448943600" : 4.04,
"1448944200" : 4.805
}
}
....
]
我正在尝试使用 Apache Drill 从中提取一些数据。基本上我需要有 4 列:指标、通道、时间戳和值。
对于上面的例子,结果应该是:
metric, channel, timestamp, value
movie.Guns, 143 , 1448942400, 2.5174216027874565
movie.Guns, 143 , 1448943000, 4.378333333333333
movie.Guns, 143 , 1448943600, 4.04
movie.Guns, 143 , 1448944200, 4.805
我写了以下 sql 来实现这个:
select a.metric, a.channel, a.dps.key, a.dps.value from
(select flat.channel, flat.metric, flat.dps dps from
(select t.tags.channel as channel, t.metric, FLATTEN(KVGEN(t.dps)) as dps from dfs.`/Users/Home/Downloads/tmsdb.json` t)
由于某种原因,问题出在 a.dps.value
列。如果未返回此列,则其工作正常。只要我带上它,我就会收到错误消息 ARSE ERROR: Encountered ". value" at line 2, column 45...
如果我 select 只有 a.dps
我得到像 {"key":"1448942400","value":2.5174216027874565}
这样的值,如果 a.dps.key
是 select 编辑它 returns 正确的值。
不确定问题出在哪里。
一分钟后 post 我找到了答案:)
为了 return 正确的结果,应该这样选择 value
列:
select a.metric, a.channel, a.dps.key, a.dps.`value` ...
我有一个具有以下结构的 json 文件:
[{
"metric" : "movie.Guns",
"tags" : {
"channel" : "143"
}
"dps" : {
"1448942400" : 2.5174216027874565,
"1448943000" : 4.378333333333333,
"1448943600" : 4.04,
"1448944200" : 4.805
}
}
....
]
我正在尝试使用 Apache Drill 从中提取一些数据。基本上我需要有 4 列:指标、通道、时间戳和值。
对于上面的例子,结果应该是:
metric, channel, timestamp, value
movie.Guns, 143 , 1448942400, 2.5174216027874565
movie.Guns, 143 , 1448943000, 4.378333333333333
movie.Guns, 143 , 1448943600, 4.04
movie.Guns, 143 , 1448944200, 4.805
我写了以下 sql 来实现这个:
select a.metric, a.channel, a.dps.key, a.dps.value from
(select flat.channel, flat.metric, flat.dps dps from
(select t.tags.channel as channel, t.metric, FLATTEN(KVGEN(t.dps)) as dps from dfs.`/Users/Home/Downloads/tmsdb.json` t)
由于某种原因,问题出在 a.dps.value
列。如果未返回此列,则其工作正常。只要我带上它,我就会收到错误消息 ARSE ERROR: Encountered ". value" at line 2, column 45...
如果我 select 只有 a.dps
我得到像 {"key":"1448942400","value":2.5174216027874565}
这样的值,如果 a.dps.key
是 select 编辑它 returns 正确的值。
不确定问题出在哪里。
一分钟后 post 我找到了答案:)
为了 return 正确的结果,应该这样选择 value
列:
select a.metric, a.channel, a.dps.key, a.dps.`value` ...