Prorata de dates selon segment

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 1 année et 2 mois.
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Articles
  • #126402
    alexleseche28
    Participant

    Bonjour,

    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/2023

    Sur 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.59

    Je 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

    #126464
    Daniel
    Participant

    Bonjour 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
    Daniel

    Attachments:
    You must be logged in to view attached files.
    #126470
    alexleseche28
    Participant

    Bonjour 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,

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.