13

次のような JSON の列を含むテーブルがあるとします。

{"payload":[{"type":"b","value":"9"}, {"type":"a","value":"8"}]}
{"payload":[{"type":"c","value":"7"}, {"type":"b","value":"3"}]}

bすべてのエントリの平均値を取得する Presto クエリを作成するにはどうすればよいですか?

これまでのところ、Hive の横方向ビューの爆発のようなものを使用する必要があると思います。これに相当するものは、Presto のクロス ジョイン アンネストです。

しかし、私は Presto クエリの書き方に行き詰まっていますcross join unnest

cross join unnestすべての配列要素を展開して選択するにはどうすればよいですか?

4

3 に答える 3

5

ご指摘のとおり、Presto 0.79 でようやく実装されました。:)

hereからのキャストの構文の例を次に示します。

select cast(cast ('[1,2,3]' as json) as array<bigint>);

特別なアドバイスです。Presto には、Hive にあるような「文字列」タイプはありません。つまり、配列に文字列が含まれている場合は、タイプ「varchar」を使用していることを確認してください。そうしないと、誤解を招く可能性がある「タイプ配列が存在しません」というエラー メッセージが表示されます。

select cast(cast ('["1","2","3"]' as json) as array<varchar>);
于 2015-09-07T08:27:59.773 に答える
2

問題は、古いバージョンの Presto を実行していたことです。

unnestバージョン 0.79 で追加されました

https://github.com/facebook/presto/blob/50081273a9e8c4d7b9d851425211c71bfaf8a34e/presto-docs/src/main/sphinx/release/release-0.79.rst

于 2015-04-30T22:43:20.227 に答える