Obtenir une valeur d’une colonne filtrée sur autres colonnes

Accueil – Le CFO masqué Forums Power BI Obtenir une valeur d’une colonne filtrée sur autres colonnes

  • Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par Xavier Allart, le il y a 1 année et 3 mois.
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Articles
  • #124298
    Capucine Benier
    Participant

    Bonjour,

    Je cherche à récupérer une valeur d’une colonne, basé sur une condition d’une autre Colonne.

    *Mise en contexte* :
    Table Transaction : donne les transactions (entrantes = Receipt/sortantes=Issue)
    – le numéro d’article (ItemId) (colonne cachée)
    – la date de la transaction (DatePhysical) (colonne cachée)
    – le type de la transaction (TransactionType)
    – Le numéro associé au type de transaction (Number)

    Table Dim_Item_Info :
    ItemId

    Table DateTransaction :
    Date

    *Besoin* :
    Récupérer, pour un article donné,
    – la date de sa dernière transaction de sortie (statusIssue<>””)
    – le type de transaction associé
    – le numéro du type de transaction associé

    *Efforts déployés 🙂 * :
    J’ai créé les mesures suivantes :

    LastIssue_TransactionDate =
    CALCULATE(
    MAX(‘Transaction'[DatePhysical].[Date]),
    FILTER(‘Transaction’,’Transaction'[StatusIssue] <> “”))
    –> semble fonctionner

    LastIssue_TransactionType =
    CALCULATE(
    LASTNONBLANK(
    ‘Transaction'[TransactionType],
    [LastIssue_TransactionDate]),
    FILTER(‘Transaction’,’Transaction'[StatusIssue]<>””))
    –> ne prend aucunement en compte le filtre ni la dernière date de transaction relative à l’article

    LastIssue_Number =
    CALCULATE(
    LASTNONBLANK(
    ‘Transaction'[Number],
    [LastIssue_TransactionDate]),
    FILTER(
    ‘Transaction’,
    ‘Transaction'[StatusIssue]<>””))
    –> idem

    LastIssue_Number2 =
    LOOKUPVALUE(
    ‘Transaction'[Number],
    ‘Transaction'[DatePhysical],
    [LastIssue_TransactionDate],
    “Nope”)
    –> je comprends pas vraiment le comportement obtenu ici..

    *Documents joints*

    Je ne peux malheureusement pas partager le fichier qui est confidentiel,
    Vous trouverez cependant deux imprime écran :
    CAPT1 : transactions pour un article
    – en bleu les filtres que je souhaiterais appliquer
    – en rouge : les résultats que j’obtiens suivant si j’utilise first/lastnonblank
    – en vert : les résultats que je souhaiterais obtenir

    CAPT2 : Résultat actuellement obtenu avec les mesures plus haut

    Serait-il possible de m’expliquer pourquoi les mesures actuelles ne fonctionnent pas et m’indiquer la meilleure manière pour répondre à mon besoin ?

    Rq : il peut y avoir plusieurs transactions pour un même article avec des types et numéros de transactions différents, cela n’est pas très important tant que j’en ai un de la liste (premier ou dernier)

    Rq : L’exemple ci-contre est filtré sur un ItemId spécifique mais mon besoin s’étend à la liste de tous les articles

    **Serait-il possible de m’expliquer pourquoi les mesures actuelles ne fonctionnent pas et m’indiquer la meilleure manière pour répondre à mon besoin ?**

    Merci

    Attachments:
    You must be logged in to view attached files.
    #124318
    Xavier Allart
    Participant

    Bonjour

    Je vous propose les mesures suivantes, si le tableau reste trié comme sur l’exemple du recent au plus ancien

    LastIssue_TransactionType =
    CALCULATE(
    MIN(Tableau1[TransactionType]),
    FILTER(Tableau1,Tableau1[statusIssue] <> “”))

    LastIssue_Number =
    CALCULATE(
    MIN(Tableau1[Number]),
    FILTER(Tableau1,Tableau1[statusIssue] <> “”))

    Cordialement

    #124370
    Capucine Benier
    Participant

    Bonjour Xavier,
    Merci pour votre réponse.

    Cependant ceci ne répond pas à mon besoin car l’information récupérée sera le minimum, indépendamment de la date.
    Dans l’exemple ci-joint,
    Number : cela va rapporter l’information suivante : “M0098197”
    Transaction : il se trouve que l’information est la bonne mais c’est une coincidence, car “Production Line” est alphabétiquement placé avant “Purchase”…

    #124389
    Xavier Allart
    Participant

    Bonjour

    Voici une autre solution avec l’ajout d’une colonne index et de 3 nouvelles mesures et plus de LastIssue_Date, à tester.

    LastIssue_Date =
    CALCULATE(
    MAX(Tableau1_2[DatePhysical]),
    FILTER(Tableau1_2,Tableau1_2[statusIssue] <> “”))

    Index_LastIssue =
    CALCULATE(
    MIN(Tableau1_2[Index]),
    FILTER(Tableau1_2,Tableau1_2[statusIssue] <> “”))

    Index_TransactionType =
    VAR index = [Index_LastIssue]
    RETURN
    CALCULATE(
    MIN(Tableau1_2[TransactionType]),
    FILTER(Tableau1_2,Tableau1_2[Index] = index))

    Index_Number =
    VAR index = [Index_LastIssue]
    RETURN
    CALCULATE(
    MIN(Tableau1_2[Number]),
    FILTER(Tableau1_2,Tableau1_2[Index] = index))

    Bonne et heureuse année 2023
    Cordialement

    Attachments:
    You must be logged in to view attached files.
4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.