Accueil – Le CFO masqué › Forums › Power BI › Calcul du stock (mesures) via date de création et date de cloture
- Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par
24.marko, le il y a 1 mois.
-
AuteurMessages
-
17 mars 2025 à 10 h 53 min #151067
24.marko
ParticipantBonjour,
j’ai une table de transactions assez simple, contenant pour chaque transaction :
– clé primaire pour récupérer le dernier statut
– date de transaction
– statut (Open, ou Match qui correspond à clos)
– date de cloture (uniquement renseignée si statut = Match)
– et d’autres attributs comme l’organisation interne (Business unit, business line…), le type de transaction, le type de compte… ((importants car je souhaite que la mesure du stock puissent être actualisées en fonction des attributs)J’ai créé une table ‘calendar’ paramétrée comme table de dates et avec des relations actives (entre la date de transaction et la date ‘calendar’) ou non (entre la date de cloture et la date ‘calendar’)
le résultat attendu doit correspondre à la table calculée stock (mais inutilisable car ce résultat ne tiens pas compte des attributs, mais permet de comprendre ce que je dois produire)
je suis parvenu à créer une mesure pour calculer le nombre de transactions créées à date :
Items_created_at_date =
CALCULATE (
COUNTA ( Transactions[Transaction_date] ),
FILTER (
ALL ( ‘Calendar'[Date] ),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)cependant, impossible de créer la mesure pour calculer le nombre de transactions cloturées à date même avec différentes méthodes :
Items_closed_at_date =
CALCULATE (
COUNTA ( Transactions[Closing_date] ),
FILTER (
ALLSELECTED ( ‘Calendar’),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)ou
Items_closed_at_date2 =
CALCULATE (
COUNTA ( Transactions[Closing_date]
),
USERELATIONSHIP (Transactions[Closing_date], ‘Calendar'[Date] ),
FILTER (
ALL ( ‘Calendar’ ),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)KO car j’ai l’impression qu’il affiche le compteur à la date de transaction et non de cloture dans la visualisation par un graphe de type matrice
ou encore
Closed_Transactions =
FILTER ( Transactions, Transactions[Status] = “Match” )puis
Items_closed_at_date3 =
0+
CALCULATE (
COUNTA ( Closed_Transactions[Closing_date] ),
FILTER (
ALLSELECTED ( ‘Calendar’),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)j’ai meme essayé d’ajouter des colonnes dans la table calendar :
nb_In =
calculate(
count(transactions[Transaction_date]),
filter(
transactions,
‘Calendar'[Date]=transactions[Transaction_date]
)
)et
nb_Out =
calculate(
count(Transactions[Closing_date]),
filter(
Transactions,
‘Calendar'[Date]=Transactions[Closing_date]
)
)Bref, je galère à mesurer le nombre de transactions fermées et ainsi calculer le stock global (puis après selon les différents attributs)
est-ce que vous voyez ce qui cloche ?
merci d’avance
Attachments:
You must be logged in to view attached files.17 mars 2025 à 11 h 21 min #151077Aline Clozel
ParticipantBonjour,
Je ne suis pas experte mais il me semble que tout ça est lié à la structure des données et à leur relation. Moi je décomposerai avec
-une table pour la commande, une table pour la livraison, un table de date,
-une jointure entre la table commande et la table livraison avec l’id transaction
-une jointure entre chaque table commande et livraison avec la table de date.
Quand tu fais le calculate sur ta table livraison il faut appeller/filtrer la table de date (et non la table livraison)
J’espère t’aider et ne pas t’engager dans une fausse piste mais c’est comme ça que j’essaierai !
A +17 mars 2025 à 12 h 47 min #15108124.marko
ParticipantBonjour aline.closel
j’ai essayé mais cela ne marche pas
– j’ai créé 2 sous-tables:
Open_transactions = FILTER ( Transactions, Transactions[Status] = “Open” )
Closed_transactions = FILTER ( Transactions, Transactions[Status] = “Match” )
– j’ai mis à jour les relations
– j’ai créé une mesure dans la table Closed_transactions :
Items_closed_at_date3 =
0+
CALCULATE (
COUNTA ( Closed_Transactions[Closing_date] ),
FILTER (
ALLSELECTED ( ‘Calendar’),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)
==> cette mesure ne me ramène que des 0j’ai même tenté auter chose en dépivotant la table Transactions :
Transactions_unpivot =
UNION(
SELECTCOLUMNS(Transactions,”Date”, Transactions[Transaction_date], Transactions[Transaction_ID], “Status”,”Open”,Transactions[BU_viaDAX], Transactions[BL_viaDAX]),
SELECTCOLUMNS(filter( Transactions, transactions[Status] = “Match”),”Date”, Transactions[Closing_date],Transactions[Transaction_ID],”Status”,”Closed”,Transactions[BU_viaDAX], Transactions[BL_viaDAX])
)et en ajoutant un compteur :
compteur =
if(Transactions_unpivot[Status]=”Open”,
1,
-1
)et 3 nouvelles mesures :
Stock =
CALCULATE (
sum ( Transactions_unpivot[compteur] ),
FILTER (
all(‘Calendar’),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)
Ne marche pasItems_created_at_date_unpivot =
CALCULATE (
COUNTROWS(
FILTER (
Transactions_unpivot,
Transactions_unpivot[Status]=”Open”
)
),
FILTER (
ALLSELECTED ( ‘Calendar’),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)
qui fonctionneet là, chose super étrange, la même mesure mais juste en adaptant le filtre sur le statut ne fonctionne pas du tout (ramène des 2 qlq que soit la date)
Items_closed_at_date_unpivot =
CALCULATE (
COUNTROWS(
FILTER (
Transactions_unpivot,
Transactions_unpivot[Status]=”Closed”
)
),
FILTER (
ALLSELECTED ( ‘Calendar’),
ISONORAFTER ( ‘Calendar'[Date] , MAX ( ‘Calendar'[Date] ), DESC )
)
)en PJ, le pbix remis à jour
Attachments:
You must be logged in to view attached files.17 mars 2025 à 13 h 17 min #15108424.marko
Participantoulà,
j’avais fait une erreur grossière…
en effet, la date de mise à jour du statut = datetime (par ex: 01/03/2025 09:45:00)j’ai oublié que cela ne pouvait pas marcher car j’avais une info sur l’heure, donnée qui est absente du calendar…
j’ai donc dupliquer la colonne via PQ et j’en ai extrait la date…
encore qlq soucis, mais j’ai déjà un comportement plus cohérent… ouf
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.