Open1
Redshift SUPER

SUPER
SUPER データ型は、スキーマレス形式の半構造化データの永続性をサポートします。階層データモデルは変更できますが、データの古いバージョンは同じ SUPER 列に共存することができます。
Navigation (ナビゲーション)
ドット表記を使用して構造体に、角括弧表記を使用して配列にナビゲーションを混在させることができます
ネスト解除構文
select g.* from great_table g
と書くと、g は great_table の1レコードを取り出して反復処理していると考えられる。これと同様にSUPERの配列も反復処理できる。
- c_orders は SUPER配列
SELECT c.*, o FROM customer_orders_lineitem c, c.c_orders o;
c.c_orders o
で、配列の要素を o として反復処理することになる。customer_orders_lineitem と c_orders の2重ループになる。
SELECT c_name,
orders.o_orderkey AS orderkey,
index AS orderkey_index
FROM customer_orders_lineitem c, c.c_orders AS orders AT index
と書くと、配列のインデックス(0 origin)を取得できる。
CREATE TABLE foo AS SELECT json_parse('[[1.1, 1.2], [2.1, 2.2], [3.1, 3.2]]') AS multi_level_array;
SELECT array, element FROM foo AS f, f.multi_level_array AS array, array AS element;
array | element
-----------+---------
[1.1,1.2] | 1.1
[1.1,1.2] | 1.2
[2.1,2.2] | 2.1
[2.1,2.2] | 2.2
[3.1,3.2] | 3.1
こんな感じで展開できる。簡単!