2014-03-03 59 views
0

我有一个数据组,如:侧视图爆炸给出笛卡尔乘积

{ “标记物”:{ “标记物”:[{ “ID”: “3540A”, “LT”: “28.46880448”,“LN “:” 77.09402561" , “速度”: “25.7657263185792”, “方位角”: “359.3928885”, “时间”: “1392975226”},{ “ID”: “3549B”, “LT”: “28.46207019”,“LN “:” 77.08945513" , “速度”: “16.7443583120476”, “方位角”: “254.4740405”, “时间”: “1392975227”},{ “ID”: “3554B”, “LT”: “28.51104306”,“LN “:” 77.09399343" , “速度”: “46.8510996103777”, “方位角”: “161.7287907”, “时间”: “1392975205”},{ “ID”: “3564A”, “LT”: “28.4964115”,“LN “:” 77.08691239" , “速度”: “42.9285245904275”, “方位角”: “39.96777172”, “时间”: “1392975204”}]}}

我使用的查询:CREATE TABLE测试AS SELECT ID ,速度 FROM raw_data LATERAL VIEW爆炸(markers.marker.id)ID为ID LATERAL VIEW爆炸(markers.marker.speed)速度为速度;

这给了我一个笛卡尔的id和速度的产品。有人可以建议我应该如何摆脱这一点。

回答

1

我认为这应该工作:

SELECT s.id, s.speed FROM raw_data LATERAL VIEW explode(markers.marker) s as s; 

而不是做多侧面视图,只是做一个让整个结构,然后选择的是结构的各个领域。

+0

Thanx。我已经破解了这个:) –