Je suis nouveau sur Spark SQL. Nous migrons des données du serveur SQL vers Databricks. J'utilise SPARK SQL. Pouvez-vous suggérer comment réaliser les fonctionnalités ci-dessous) en SPARK sql pour les fonctions de date ci-dessous. Je peux voir que dateiff ne donne que des jours en spark sql.
DATEDIFF (YEAR, StartDate, EndDate) DATEDIFF (Month, StartDate, EndDate) DATEDIFF (Quarter, StartDate, EndDate)
Comme vous l'avez mentionné, SparkSQL prend en charge DATEDIFF
mais pour les jours seulement. Je ferais également attention car il semble que les paramètres soient inversés pour Spark, c'est-à-dire
--SQL Server
DATEDIFF ( datepart , startdate , enddate )
--Spark
DATEDIFF ( enddate , startdate )
Spark prend cependant en charge une fonction similaire appelée months_between
que vous pourriez utiliser à la place de DATEDIFF( month ...
. Cette fonction renvoie également une quantité décimale, vous pouvez donc la caster sur INT
pour des fonctionnalités similaires à
SELECT startDate, endDate,
DATEDIFF( endDate, startDate ) AS diff_days,
CAST( months_between( endDate, startDate ) AS INT ) AS diff_months
FROM yourTable
ORDER BY 1;
Il existe également des fonctions year
et quarter
pour déterminer respectivement l'année et le trimestre d'une date. Vous pourriez simplement réduire les années, mais les trimestres seraient plus difficiles. Il se peut que vous deviez "faire le calcul" ou finir par utiliser un tableau de calendrier.