Фильтр Pyspark для массива структурPython

Программы на Python
Anonymous
Фильтр Pyspark для массива структур

Сообщение Anonymous »

У меня есть кадр данных pyspark со схемой ниже:

Код: Выделить всё

root
|-- channelGrouping: string (nullable = false)
|-- clientId: string (nullable = false)
|-- customDimensions: array (nullable = true)
|    |-- element: struct (containsNull = true)
|    |    |-- index: long (nullable = true)
|    |    |-- value: string (nullable = true)

Я хочу получить все те записи, для которых индекс «2» customDimensions соответствует регулярному выражению r'b'.
Пример ввода

Код: Выделить всё

+--------+---------------+--------------------------+
|clientId|channelGrouping| customDimensions         |
+--------+---------------+--------------------------+
|  123   |  alpha        | [[1, a], [2, b]          |
|  456   |  beta         | [[1, a], [2, b], [3, c]  |
|  789   |  gama         | [[1, a], [2, a], [3, c]  |
+--------+---------------+--------------------------+
Ожидаемый результат:

Код: Выделить всё

+--------+---------------+--------------------------+
|clientId|channelGrouping| customDimensions         |
+--------+---------------+--------------------------+
|  123   |  alpha        | [[1, a], [2, b]          |
|  456   |  beta         | [[1, a], [2, b], [3, c]  |
+--------+---------------+--------------------------+
В bigquery этого можно добиться, используя следующий запрос:
select
*
from

Код: Выделить всё

some_table
where
REGEXP_CONTAINS((ВЫБЕРИТЕ значение FROM UNNEST(customDimensions) WHERE index=2), r'b')

Подробнее здесь: https://stackoverflow.com/questions/645 ... of-structs

Вернуться в «Python»