bigqueryのpivotの使い方
概要
PIVOT
を記述することで特定のvalueをカラムに変換できる- 基本的にコード上でカラムにしたい値がわかっている前提の運用が期待されている
- カラムを動的に指定したい場合、
EXECUTE IMMEDIATE
で記述する必要がある
具体例
SELECT
*
FROM
(
SELECT
airline,
departure_airport,
departure_delay
FROM
`bigquery-samples.airline_ontime_data.flights`
)
PIVOT
(
AVG(departure_delay) AS mean_delay
FOR airline in ('AA', 'KH', 'DL', '9E')
)
動的にカラムを設定する例
DECLARE columns STRING;
SET columns = (
SELECT
CONCAT('("', STRING_AGG(DISTINCT airline, '", "'), '")'),
FROM `bigquery-samples.airline_ontime_data.flights`
);
EXECUTE IMMEDIATE format("""
SELECT * FROM
(
SELECT
airline,
departure_airport,
departure_delay
FROM `bigquery-samples.airline_ontime_data.flights`
)
PIVOT
(
AVG(departure_delay) AS avgdelay
FOR airline in %s
)
ORDER BY departure_airport ASC
""", columns);