У меня есть следующий код, написанный на SQlite SQL.
select min(date_before), count(utc_timestamp) + 1
from (select strftime('%d', utc_timestamp) - lag(strftime('%d', utc_timestamp)) over (order by utc_timestamp) diff
, strftime('%m', utc_timestamp) month
, strftime('%Y', utc_timestamp) year
, utc_timestamp
, lag(utc_timestamp) over (order by utc_timestamp) date_before
FROM (
SELECT utc_timestamp, AVG(GB_temperature) as avgt
FROM weather_data
GROUP BY strftime('%Y-%m-%d', utc_timestamp)
HAVING avgt < -4
)
order by utc_timestamp)
where diff = 1
group by month, year;
data (csv):
utc_timestamp, GB_temperature
1980-01-01T00:00:00Z, 4.6640
Желаемый результат:
...
1982-01-10T00:00:00Z
... (24 rows)
1982-01-11T00:00:00Z
...
'1982-01-10T00:00:00Z'
'1982-01-11T00:00:00Z'
'1982-01-14T00:00:00Z'
'1985-01-16T00:00:00Z'
'1985-01-17T00:00:00Z'
'1985-02-12T00:00:00Z'
'1987-01-11T00:00:00Z'
'1987-01-12T00:00:00Z'
'1987-01-13T00:00:00Z'
до:
'1982-01-10T00:00:00Z', 2
'1985-01-16T00:00:00Z', 2
'1987-01-11T00:00:00Z', 3
Как мне переписать его в Spark SQL? Я должен заменить функцию strftime, также у меня есть синтаксическая ошибка в строке 2 после «diff»
какие-либо подсказки?
, если вы знаете, как написать ее на pandas или другом python Инструмент анализа данных может объяснить, пожалуйста.