Club Power BI

Please login or click SIGN UP FOR FREE to create your PowerBIUG account to join this user group.
 View Only
  • 1.  En cours

    Gold Contributor
    Posted 19 days ago
    Bonjour,
    j'utilise une table date et une table de données de production
    je calcule mon encours de production en lien avec ma table de dates avec la formule suivante :
    Nb_EnCours =
    CALCULATE(
    COUNT(Gestion_Prod_DAR[Type_Cie] ),
    USERELATIONSHIP(Gestion_Prod_DAR[Date signaturedevis] , Dates[Date] ),
    FILTER(
    ALL(Gestion_Prod_DAR[Date de facturation] ),
    ISBLANK( Gestion_Prod_DAR[Date de facturation] )
    )
    )
    Le résultat est bon (65 fab en cours) sauf quand je fais un tri sur les mois. Nous sommes en juillet et je sélectionne tous les mois de janvier à juillet
    et à ce moment-là mon résultat n'est plus le bon (38 fab en cours) car sur les années antérieures (dossiers encours initiés en 2021) mon calcul ne va prendre que les dossiers en cours des 7 mois depuis 2018 à 2022.
    La solution serait de supprimer l'interaction des mois avec mon résultat mais je n'aurais plus un suivi sur l'année en cours mois par mois.
    Donc je souhaiterais qu'il prenne les années complètes antérieures (n-1) et que sur l'année en cours les mois sélectionnés.
    Quelle serait ma formule de calcul ?

    Merci beaucoup,

    ------------------------------
    Olivier FAURE
    ------------------------------


  • 2.  RE: En cours

    Bronze Contributor
    Posted 14 days ago
    Je fais la supposition qu'il existe :
    • une relation inactive entre la table calendrier et la colonne Gestion_Prod_DAR[Date signaturedevis]
    • une relation active entre la table calendrier et la colonne Gestion_Prod_DAR[Date de facturation]

     La première étape consiste à déterminer quelle est la date de référence pour le calcul.On peut par exemple prendre dernière date disponible dans le contexte d'évaluation sans aller au-delà de la date courante :

    VAR _dateref = MIN(MAX(Dates[Date]),TODAY())

     On cherche ensuite à établir la liste des dates qui précèdent cette date de référence, sans tenir compte du contexte d'évaluation. On peut utiliser la fonction DATESBETWEEN sans paramètre startdate. Attention, la table Dates doit etre correctement formée et marquée en tant que table date.

    VAR _prevdates = DATESBETWEEN(Dates[Date],BLANK(), dateref)

     

    On peut alors calculer la table des faits qui répondent au critère recherché

    VAR _encours =
    CALCULATETABLE (
      VALUES ( Gestion_Prod_DAR[Type_Cie] ),
      USERELATIONSHIP ( Gestion_Prod_DAR[Date signaturedevis], Dates[Date] ),
      _prevdates,
      ISBLANK ( Gestion_Prod_DAR[Date de facturation]
    )

    La formule complète pourrait être - sous réserve de test :

    Nb_EnCours =
    VAR _dateref =
        MIN ( MAX ( Dates[Date] ), TODAY () )
    VAR _prevdates =
        DATESBETWEEN ( Dates[Date], BLANK (), _dateref )
    VAR _encours =
        CALCULATETABLE (
            VALUES ( Gestion_Prod_DAR[Type_Cie] ),
            USERELATIONSHIP ( Gestion_Prod_DAR[Date signaturedevis], Dates[Date] ),
            _prevdates,
            ISBLANK ( Gestion_Prod_DAR[Date de facturation] )
        )
    RETURN
        COUNTROWS ( _encours )​


    ------------------------------
    Bertrand d'Arbonneau
    ------------------------------



  • 3.  RE: En cours

    Gold Contributor
    Posted 8 days ago
    Bonjour Bertrand,
    effectivement j'ai une relation ACTIVE mais entre Date et Gestion_Prod_DAR[Date signaturedevis];
    et une relation INACTIVE entre Date et Gestion_Prod_DAR[Date de facturation]

    merci beaucoup pour l'aide et je l'ai testée avec cette formule DAX :
    _Nb_EnCours =
    VAR _dateref =
        MIN ( MAX ( Dates[Date] ), TODAY () )
    VAR _prevdates =
        DATESBETWEEN ( Dates[Date], BLANK (), _dateref )
    VAR _encours =
        CALCULATETABLE (
            VALUES ( Gestion_Prod_DAR[Type_Cie] ),
            USERELATIONSHIP ( Gestion_Prod_DAR[Date signaturedevis], Dates[Date] ),
            _prevdates,
            ISBLANK ( Gestion_Prod_DAR[Date de facturation] )
        )
    RETURN
        COUNTROWS ( _encours )

    Mais le résultat obtenu est de... 6, et non de 65
    Est-ce à cause de la relation ?
    vous faut-il le modèle ?




    ------------------------------
    Olivier FAURE
    CEO
    LA TALAUDIERE
    ------------------------------