Я получаю данные из местоположения BLOB-объекта в кадре данных, как показано ниже.
| NUM_ID| Event|
+-------+-----------------------------------------------------------------------------------------------------------------------------------+
|XXXXX01|[{"SN":"SIG1","E":1571599398000,"V":19.79},{"SN":"SIG1","E":1571599406000,"V":19.80},{"SN":"SIG2","E":1571599406000,"V":25.30},{...|
|XXXXX02|[{"SN":"SIG1","E":1571599414000,"V":19.79},{"SN":"SIG2","E":1571599414000,"V":19.80},{"SN":"SIG2","E":1571599424000,"V":25.30},{...|
Если мы возьмем одну строку, это будет так, как показано ниже.
|XXXXX01|[{"SN":"SIG1","E":1571599398000,"V":19.79},{"SN":"SIG1","E":1571599406000,"V":19.80},{"SN":"SIG1","E":1571599414000,"V":19.20},{"SN":"SIG2","E":1571599424000,"V":25.30},{"SN":"SIG2","E":1571599432000,"V":19.10},{"SN":"SIG3","E":1571599440000,"V":19.10},{"SN":"SIG3","E":1571599448000,"V":19.10},{"SN":"SIG3","E":1571599456000,"V":19.10},{"SN":"SIG3","E":1571599396000,"V":19.79},{"SN":"SIG3","E":1571599404000,"V":19.79}]
Столбец события имеет разные сигналы, такие как пара E, V.
Схема для этого кадра данных показана ниже.
scala> df.printSchema
root
|-- NUM_ID: string (nullable = true)
|-- Event: string (nullable = true)
Я хочу принять несколько сигналов (предположим, мне нужнотолько SIG1 и SIG3) вместе с парами E, V в качестве нового столбца, как показано ниже.
+-------+--------+--------------+------+
| NUM_ID| Event| E| V|
+-------+--------+--------------+------+
|XXXXX01| SIG1| 1571599398000| 19.79|
|XXXXX01| SIG1| 1571599406000| 19.80|
|XXXXX01| SIG1| 1571599414000| 19.20|
|XXXXX01| SIG3| 1571599440000| 19.10|
|XXXXX01| SIG3| 1571599448000| 19.10|
|XXXXX01| SIG3| 1571599406000| 19.10|
|XXXXX01| SIG3| 1571599396000| 19.70|
|XXXXX01| SIG3| 1571599404000| 19.70|
+-------+--------+--------------+------+
и окончательный результат должен быть таким, как показано ниже для каждого NUM_ID .
+-------+--------------+------+------+
| NUM_ID| E|SIG1 V|SIG3 V|
+-------+--------------+------+------+
|XXXXX01| 1571599398000| 19.79| null|
|XXXXX01| 1571599406000| 19.80| 19.70|
|XXXXX01| 1571599414000| 19.20| null|
|XXXXX01| 1571599440000| null| 19.10|
|XXXXX01| 1571599448000| null| 19.10|
|XXXXX01| 1571599448000| null| 19.10|
|XXXXX01| 1571599406000| 19.80| 19.10|
|XXXXX01| 1571599396000| null| 19.70|
|XXXXX01| 1571599404000| null| 19.70|
+-------+--------------+------+------+
Цените любые выводы. Заранее спасибо!