Я использую spark 2.3+, у меня есть массив struct, и я ОБЪЯВЛЯЮ его для обычного типа структуры, см. Схему ниже
|-- ARRAY_OF_STRUCT: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- FLAG: string (nullable = true)
| | |-- CODE: string (nullable = true)
| | |-- SOURCE: string (nullable = true)
|-- explode: struct (nullable = true)
| |-- FLAG: string (nullable = true)
| |-- CODE: string (nullable = true)
| |-- SOURCE: string (nullable = true)
Вопрос в том, как применить пустую проверку при разнесении столбец? Я хочу сохранить только строки со значениями, см. Пример
+--------------------------------------------------------------------------------+-------------+
|ARRAY_OF_STRUCT |explode |
+--------------------------------------------------------------------------------+-------------+
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[N, , 000000]|
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ] |
+--------------------------------------------------------------------------------+-------------+
Я хочу сохранить только первую строку, поскольку в столбце разнесения есть некоторые значения. как ниже ds
+--------------------------------------------------------------------------------+-------------+
|ARRAY_OF_STRUCT |explode |
+--------------------------------------------------------------------------------+-------------+
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[N, , 000000]|
+--------------------------------------------------------------------------------+-------------+
Я знаю, что могу проверять столбцы один за другим, но это неэффективно, когда нужно проверить много полей. ИЛИ: если есть что-то, что может помочь мне выбросить эти элементы в массиве, прежде чем я взорвусь.