redshiftでunnestを実装する
Redshiftは以下のページに記載されている通りunnestはサポートされていない。
しかしながら昨今のRDBMS以外も多用される状況ではネストされたデータも多く、UNNESTは結構欲しい機能である。
なのでちょっち面倒だけど実装してみた。 ETLではなくELTを選択するなら意外と必要になるし。
前提
- generate_seriesも使えないので、あらかじめ連番を入れたseqテーブルを作成
UNNESTを模倣したSQL
SELECT json_extract_array_element_text(m.array_hoge, seq.i) AS hoge FROM ( SELECT '["hoge1","hoge2","hoge3"]' AS array_hoge ) AS m INNER JOIN seq ON i < JSON_ARRAY_LENGTH(m.array_hoge) ORDER BY hoge;