У меня есть столбец массивов в кадре данных, и я хочу знать, находится ли какой-либо из элементов массива в определенном диапазоне. Пример:
input:
+------------------------------------------------------------------------------------------+
|dateTimeValue |
+------------------------------------------------------------------------------------------+
|[2019-11-11T20:08:47.453+0000, 2020-10-15T20:08:47.453+0000, 2021-09-19T20:08:47.453+0000]|
|[2017-11-05T20:08:47.453+0000, 2020-05-05T20:08:47.453+0000, 2021-11-11T20:08:47.453+0000]|
+------------------------------------------------------------------------------------------+
Интересующий диапазон дат - 8 августа 2018 г. и 8 декабря 2019 г.
output:
+------------------------------------------------------------------------------------------+------------+
|dateTimeValue |includedFlag|
+------------------------------------------------------------------------------------------+------------+
|[2019-11-11T20:08:47.453+0000, 2020-10-15T20:08:47.453+0000, 2021-09-19T20:08:47.453+0000]|True |
|[2017-11-05T20:08:47.453+0000, 2020-05-05T20:08:47.453+0000, 2021-11-11T20:08:47.453+0000]|False |
+------------------------------------------------------------------------------------------+------------+
Схема моегофрейм данных:
root
|-- dateTimeValue: array (nullable = true) |
|-- element: timestamp (containsNull = true)
Ввод может быть сгенерирован с помощью:
import datetime
df = spark.createDataFrame([([datetime.datetime(2019,11,11,20,8,47), datetime.datetime(2020,10,15,20,8,47), datetime.datetime(2021,9,19,20,8,47)],), ([datetime.datetime(2017,11,5,20,8,47), datetime.datetime(2020,5,5,20,8,47), datetime.datetime(2021,11,11,20,8,47)],)], ['dateTimeValue'])
Спасибо.