1

次のようなデータセットがあります。

{
    "markers":{
        "marker":[
            {
                "id":"3540A",
                "lt":"28.46880448",
                "ln":"77.09402561",
                "speed":"25.7657263185792",
                "brng":"359.3928885",
                "time":"1392975226"
            },
            {
                "id":"3549B",
                "lt":"28.46207019",
                "ln":"77.08945513",
                "speed":"16.7443583120476",
                "brng":"254.4740405",
                "time":"1392975227"
            },
            {
                "id":"3554B",
                "lt":"28.51104306",
                "ln":"77.09399343",
                "speed":"46.8510996103777",
                "brng":"161.7287907",
                "time":"1392975205"
            },
            {
                "id":"3564A",
                "lt":"28.4964115",
                "ln":"77.08691239",
                "speed":"42.9285245904275",
                "brng":"39.96777172",
                "time":"1392975204"
            }
        ]
    }
}

私はクエリを使用しています:

CREATE TABLE test AS 
SELECT id,speed
FROM raw_data 
LATERAL VIEW explode (markers.marker.id)id as id
LATERAL VIEW explode (markers.marker.speed)speed as speed;

これにより、id と速度のデカルト積が得られます。誰かがこれを取り除く方法を提案できますか.

4

1 に答える 1

1

私はこれがうまくいくと思います:

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

複数の横方向のビューを実行する代わりに、構造体全体を取得するために 1 つのビューを実行してから、その構造体の個々のフィールドを選択します。

于 2014-03-05T19:43:48.887 に答える