Bonjour,
Dans mon environnement professionnel nous venons de passer sous DATABRICKS et je dois donc apprendre à utiliser python.
Je cherche à obtenir l'antériorité d'un stock de produit en calculant le délai entre la date du stock et la date du jour. Ca, je sais faire.
Ma table se met à jour quotidiennement en APPEND avec chaque jour une nouvelle date de référence. J'ai donc environ 300 000 lignes par jour.
Je souhaite extraire à chaque fois la dernière "version" de mon stock.
Voici comment j'ai procédé :
Ca fonctionne et je peux utiliser date_max dans la suite du code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 date_max = spark.sql("""select max(date1) `date1` from Matable""") date_max = list(date_max.select('date').toPandas()['date'])
MAIS j'aimerais pouvoir éviter de passer par date_max et le faire directement dans le .filter().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 stock = spark.table("table") .select ("date1" , "date2", "etc", "etc", (weekofyear("date2")).alias("NUM_week") )\ .filter (col("date1") .isin (date_max))
J'ai essayé d'utiliser les fonctions max() avec des (), des []. Ca ne fonctionne pas.
J'ai bien cherché sur internet, mais rien trouvé de probant.
De même, à la place de passer par la liste de pandas, je sais qu'on peux également utiliser collect().
Là encore, ça ne fonctionne pas.
J'imagine que c'est un problème de format des données.
Je sais faire ça en SQL, néanmoins, je ne progresserai pas en python sans comprendre pourquoi ça plante.
Merci d'avance pour vos explications.
Partager