DATEDIFF в SPARK SQl - PullRequest
       7

DATEDIFF в SPARK SQl

0 голосов
/ 27 сентября 2018

Я новичок в Spark SQL.Мы переносим данные с сервера SQL на блоки данных.Я использую SPARK SQL.Можете ли вы предложить, как достичь ниже функциональности в SPARK sql для следующих функций даты.Я вижу, что datediff дает только дни в искре

1 Ответ

0 голосов
/ 01 октября 2018

Как вы уже упоминали, SparkSQL поддерживает DATEDIFF, но только на несколько дней.Я также был бы осторожен, так как кажется, что параметры для Spark противоположны, то есть

--SQL Server
DATEDIFF ( datepart , startdate , enddate )

--Spark
DATEDIFF ( enddate , startdate )

Spark, тем не менее, поддерживает аналогичную функцию под названием months_between, которую можно использовать вместо DATEDIFF( month ....Эта функция также возвращает десятичную сумму, поэтому необязательно приведите ее к INT для функциональности, аналогичной

SELECT startDate, endDate, 
  DATEDIFF( endDate, startDate ) AS diff_days,
  CAST( months_between( endDate, startDate ) AS INT ) AS diff_months      
FROM yourTable
ORDER BY 1;

. Существуют также функции year и quarter для определения года и квартала даты соответственно.,Вы могли бы просто минус годы, но кварталы были бы более хитрыми.Возможно, вам придется «сделать математику» или использовать таблицу календаря.

...