Цель, которую я имею, состоит в том, чтобы показывать данные (полученные из CSV-файла) для каждого 15-минутного интервала в день.
Решение, которое я приду, представляет собой SQL-запрос, который создает необходимые мне данные:
select
dateadd(minute, datediff(minute, 0, cast ([date] + ' ' + [time] as datetime2) ) / 15 * 15, 0) as dateInterval,
SecurityDesc,
StartPrice,
SUM(CAST(TradedVolume as decimal(18,2))) as totalTradedVolume,
SUM(cast(NumberOfTrades as int)) as totalNumberOfTrades,
ROW_NUMBER() over(PARTITION BY dateadd(minute, datediff(minute, 0, cast ([date] + ' ' + [time] as datetime) ) / 15 * 15, 0) ORDER BY Date) as rn
from MyTable
group by [date],[time],SecurityDesc,StartPrice
Но как только я хочу использовать это в своем Python-коде Spark, он жалуется на datediff / dateadd и даже приводится к datetime.
Я понимаю, что, вероятно, не вижу функций sql, но я импортировал:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
from pyspark.sql import Row
import pyspark.sql.functions as F
from datetime import datetime as d
from pyspark.sql.functions import datediff, to_date, lit
Что я должен сделать, чтобы это работало? Я предпочитаю, чтобы мой запрос работал, если нет, то как в общем случае я могу отображать агрегированные данные за каждые 15 минут в spark python?
ОБНОВЛЕНИЕ: поиск данных в результате выглядит примерно так: