Взорвать несколько массивов структуры в улье - PullRequest
0 голосов
/ 27 сентября 2018

Разобрать массив структур в кусте можно по следующему синтаксису.

col1  col2     col3   col4
A1    29      [{"M1":"P1","M2":"-1","M3":"22","M4":"0"},{"M1":"PE","M2":"136","M3":"95","M4":"0.25"}] [{"M5":"10","M6":1},{"M5":"11","M6":2}]
A2    2       [{"M1":"P1","M2":"-1","M3":"10","M4":"-0.13"}]      [{"M5":"5","M6":1}]
A3    6       NULL    NULL
A4    2       NULL    NULL
A5    3       NULL    NULL


select 
col1,
col2,
explode_col3.M1,
explode_col3.M2,
explode_col3.M3,
explode_col3.M4
from table1
LATERAL VIEW explode(col3) exploded_table as explode_col3;

Как взорвать несколько массивов col3, col4?

col3 & col4 - это массив, который будет иметь равныйколичество записей.В приведенном ниже сценарии первая строка имеет 2 записи внутри col3 и col4, а вторая строка имеет 1 запись внутри col3 & col4.Первая запись в столбце col3 сопоставляется с первой записью в столбце col4, аналогично для других.

Выходные данные:

col1 col2  M1       M2       M3      M4      M5      M6
A1    29    P1      -1       22      0       10      1
A1    29    PE      136      95      0.25    11      2
A2    2     P1      -10      10     -0.13    5       1
A3    6   
A4    2 
A5    3   

1 Ответ

0 голосов
/ 27 сентября 2018

Предполагая, что столбцы являются массивом структур, вы можете использовать lateral view в сочетании с inline.

select col1,col2,v1,v2,v3,v4--,v5,v6
from tablename
lateral view inline(col3) t1 as m1,v1,m2,v2,m3,v3,m4,v4
--lateral view inline(col4) t2 as m5,v5,m6,v6

Использование inline нескольких структур столбцов массива приводит к выводу, подобному перекрестному соединениюследовательно, это закомментировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...