Accueil – Le CFO masqué › Forums › Power BI › Prorata de dates selon segment
- Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par
alexleseche28, le il y a 2 années.
-
AuteurMessages
-
9 mars 2023 à 10 h 31 min #126402
alexleseche28
ParticipantBonjour,
J’ai une table avec plusieurs lignes de quittances comprenant les champs suivants:
un numéro de quittance
une date début de quittance
une date fin de quittance (mes quittances couvrent en effet une période avec un début et une fin)
le TTC de la quittance.J’ai ensuite un segment temporel sur ma table Calendrier.
Je souhaite ressortir le TTC de la quittance proratisé selon le segment sélectionné.
Exemple:
Ma première ligne est une facture de 100 EUR avec une date début 01/01/2023 et date de fin 31/12/2023Sur mon report, je sélectionne mon segment sur 01/01/2021 au 30/06/2023
Il y a donc 181 jours de commun entre le segment et ma quittance et j’aimerais donc que la valeur suivante s’affiche:
100 / (31/12/2023 – 01-01-2023 +1) * 181 = 49.59Je ne sais pas si je peux effectuer ce calcul dans la table ou directement dans le report . Et dans les 2 cas, je ne vois pas quelle formule utilisée.
Merci pour votre aide.
Alexandre
9 mars 2023 à 21 h 36 min #126464Daniel
ParticipantBonjour alexleseche2, le Forum,
1 – Création d’une table de dates (utilisation des fonctions TimeIntelligence)
2 – Duplication de cette table de dates, la nouvelle table que j’ai nommée dimDateS pour table Dates Segment.
Ce qui nous donne dimDates et dimDatesS comme table de dates.
3 – Liaison à faire entre la tables des quittances (date début) et dimDates (date)
4 – Création de la mesure suivante :
Montant quittance (periode) =
VAR DateFinSegment = MAX( DimDatesF[Date] )
VAR DateDebutSegment = min(DimDatesF[Date])
VAR DateDebutQuittance = MIN( tabQuittances[Date début])
VAR DateFinQuittance = MIN( tabQuittances[Date fin])
VAR nbJours = DATEDIFF(IF(DateDebutQuittance > DateDebutSegment, DateDebutQuittance, DateDebutSegment), IF(DateFinQuittance < DateFinSegment, DateFinQuittance, DateFinSegment), DAY)+1
VAR nbJoursQuittance = DATEDIFF(MIN(tabQuittances[Date début]), MAX(tabQuittances[Date fin]), DAY)+1
VAR MttQuittanceParJour = [Mtt_Quittance]/nbJoursQuittance
RETURN
SUMX(VALUES(tabQuittances[Quittance]), mttQuittanceParJour*nbJours)Dans le fichier joint, tu trouveras deux colonnes de calcul
“MttPeriodeSegment” utilisant plusieurs mesures pour le calcul, je ne les détaille pas ici (voir fichier pbix) et “Montant quittance (periode)” regroupant toutes ces mesures dans des variables. Les deux donnant le résultat attendu.
D’autres membres auront certainement d’autres solutions à te proposer.
Cordialement
DanielAttachments:
You must be logged in to view attached files.10 mars 2023 à 3 h 00 min #126470alexleseche28
ParticipantBonjour et un grand merci, cela fonctionne.
J’ai juste rajouté une condition pour le cas où la période de la quittance est hors période du segment pour éviter les montants négatifs.Je tournais autour de ces formules mais j’hésitais à utiliser des Min et des Max sur les données de la table quittances (date début, date de fin, prime totale) car je me disais que cela allait mal réagir avec des regroupements mais tout se passe bien.
Je dois avouer que je ne comprends pas bien pourquoi cela fonctionne.
C’est pour cela que j’étais parti sur la création de ces champs mesure que vous avez créé en rajout de colonnes dans la table de base puis utilisation d’un CALCULATETABLE pour venir les mettre à jour avec les données du segment. Mais je n’y arrivais pas non plus.En tout cas encore un grand merci pour votre réactivité.
Très bonne journée,
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.