J'ai des données dans où j'ai plusieurs formats de date dans le champ J'ai du code de travail < / p> mais la sortie p> lorsque le format de date est comme Pour afficher toutes les dates sans nulls, comment pourrais-je faire cela de manière simple et élégante? P> Merci d'avance. P> P> JSON code> comme ceci
"version_date" code> comme < Code> 26-mar-99 code> ou
1963-01-01 code> ou
4-juillet 08 code> p>
"18 oct-oct-06" Code> Cela fonctionne bien, mais lorsque le format de date est différent, il montre NULLS. P>
3 Réponses :
C'est parce que Vous devez maintenant lire le texte de la date de JSON avec tous les formats de date possibles. P>
écrire un UDF. Passez le texte de la date comme entrée. Dans UDF, vérifiez que le format de date possible et si correspondez, renvoyez l'objet de date approprié. UDF est certainement utile ici p> to_date (col ("version_date"), "dd-mmm-yy") code>. Ici, vous fournissez un format de date d'entrée et il se lit correctement si le format de date JSON correspond à cela. Sinon, il serait nul p>
Dans tous les cas, vous devez avoir la liste finie du format de date que vous avez dans le fichier pour Vous pouvez écrire ou utilisez version_date code> ou que vous souhaitez prendre en charge dans le traitement.
udf pour analyser la chaîne de date code> en utilisant la méthode ci-dessous - p>
coalesce code> p>
val dt_formats= Seq("dd-MMM-yyyy", "MMM-dd-yyyy", "yyyy-MM-dd","MM/dd/yy","dd-MM-yy","dd-MM-yyyy","yyyy/MM/dd","dd/MM/yyyy")
val newDF = df.withColumn("Actual_Release", coalesce(dt_formats.map(fmt => to_date($"Release_Date", fmt)):_*))
Vous pouvez essayer quelque chose comme ça, je ne sais pas s'il est élégant mais simple, c'est le cas: