Prestoには、Histgram関数がありますが、返値がMap型になっています。
なので、その結果をどこかに書き出したいと思ってもイマイチ使いづらいです。
SELECT
method,
histogram(code) AS hist
FROM
www_access
GROUP BY
method
こうしたときには、Mapの値を展開して、フラっトな形に直したいです。
そのためには、下記の関数を使います。
- map_keys(x)
- map_values(x)
- unnest
そんでもって、下のようなクエリを書きます。
With句のhist_tableでヒストグラムを作って、split_tableでそれらをkeyとvalueで分けて、最後にUnnestで展開してます。
WITH hist_table AS (
select method, histogram(code) as hist
from www_access group by method
),
split_table AS (
select
method,
map_keys(hist) as keys,
map_values(hist) as vals
from hist_table
)
select * from split_table
CROSS JOIN UNNEST(keys, vals) AS t (k, v);
ちゃんちゃん。