Булевы условия, которые охватывают строки в Spark - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь вычислить логический столбец на основе группы и диапазона дат.

У меня есть таблица, в которой записываются транзакции со следующей структурой строк:

Person GUID - Date - Payment Amount

Есть несколько строк на человека.

Мне нужен новый логический столбец с именем Recent, который определяется тем, проводила ли человек транзакцию, скажем, за 3 дня до этого. Было бы True, если они имеют, False, если нет.

Есть идеи для запроса, чтобы сделать это?

1 Ответ

0 голосов
/ 07 марта 2020

Зависит от того, когда начальное время начала «предыдущего». Если это «сейчас» (текущее время), то это довольно просто: вы хотите найти максимальную дату на человека, а затем отфильтровать ее на расстоянии не более некоторого расстояния от текущего времени.

Посмотрите в оконные функции в Spark и как их можно использовать с временными рядами .

Чтобы найти максимальную дату, вы будете использовать такое выражение, как

max(Date) over (partition by Person) as max_date

Надеюсь, это поможет.

...