Функции Spark Window, которые зависят от самого себя - PullRequest
0 голосов
/ 13 декабря 2018

Скажем, у меня есть столбец отсортированных временных меток в кадре данных.Я хочу написать функцию, которая добавляет столбец в этот DataFrame, который разрезает временные метки на последовательные временные интервалы в соответствии со следующими правилами:

  • начинаются с первой строки и продолжают повторяться до конца
  • для каждой строки, если вы прошли n рядов в текущей группе ИЛИ вы прошли более чем временной интервал t в текущей группе, сделайте вырез
  • , чтобы получить новый столбец сгрупповое назначение для каждой строки, которое должно быть возрастающим целым числом

На английском языке: каждая группа должна быть не более n строк и не должна занимать более t времени

Например: (Использование целых чисел для отметок времени для упрощения)

INPUT

     time
---------
        1
        2
        3
        5
       10
      100
     2000
     2001
     2002
     2003

OUTPUT (после функции среза с n = 3 и t = 5)

     time | group
----------|------
        1 |     1
        2 |     1
        3 |     1
        5 |     2 // cut because there were no cuts in the last 3 rows
       10 |     2
      100 |     3 // cut because 100 - 5 > 5
     2000 |     4 // cut because 2000 - 100 > 5
     2001 |     4
     2002 |     4
     2003 |     5 // cut because there were no cuts in the last 3 rows

У меня такое ощущение, что это можно сделать с помощью оконных функций в Spark.В конце концов, оконные функции были созданы, чтобы помочь разработчикам вычислять скользящие средние.Вы бы в основном вычислили совокупный (в данном случае средний) столбец (цена акций) на окно из n строк.

То же самое можно сделать здесь.Для каждой строки, если в последних n строках отсутствует вырез или промежуток времени между последним вырезом и текущей отметкой времени больше, чем t, cut = true, o.w. cut = false.Но я не могу понять, как заставить оконную функцию осознавать себя.Это было бы похоже на скользящую среднюю определенной строки, осведомленной о последней скользящей средней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...