Je veux créer un tableau dans l'éditeur de requêtes (QE) qui montre mon numéro de client, l'année, le montant et une colonne personnalisée qui indique si le montant est vide ou non pour les 3 dernières années.

J'ai essayé plusieurs solutions mais aucune ne semble fonctionner. J'en ai besoin dans l'éditeur de requête. Je ne peux pas utiliser de mesure pour cela.

Quelqu'un pourrait m'aider avec ça? si l'un d'entre vous a besoin d'informations supplémentaires, faites-le moi savoir et je verrai ce que je peux faire.

Par exemple quel devrait être mon résultat: Clientnumber Year Montant Tableau personnalisé 1 2016 2100 FAUX 1 2017 2000 FAUX 1 2018100 VRAI
2 2016 0 FAUX 2 2017100 FAUX 2 2018 3800 FAUX 2 2019 2357 VRAI

J'espère que cet exemple vous aidera un peu!

1
rick van der horst 23 mai 2018 à 10:55

3 réponses

Meilleure réponse

OK, j'ai pensé à une méthode entièrement différente qui a plus de sens pour PQ même si cela semble un peu bizarre. Je pense que cela devrait fonctionner beaucoup plus rapidement.

Créez quelques colonnes personnalisées avec l'année - 1 et l'année - 2, pour obtenir vos deux dernières années. Utilisez maintenant la fonction Fusionner les requêtes et fusionnez la table avec elle-même. Cntrl-Sélectionnez le client, puis la colonne que vous avez créée pour l'année - 1 dans le tableau du haut, et Cntrl-sélectionnez le client, puis la colonne de l'année en cours dans le tableau du bas. Développez le montant du résultat, mais nommez-le Montant de l'année précédente ou autre. Faites de même pour la colonne Année -2.

enter image description here

Ensuite, ajoutez simplement une colonne personnalisée qui vérifie 0 ou des valeurs nulles dans les montants de trois ans, et vous avez votre réponse.

enter image description here

Voici à quoi ressemblait la table finale et le code M complet (évidemment, vous pouvez simplement supprimer les colonnes avec les références année / amt précédente lorsque vous avez terminé).

enter image description here

let
    Source = Table1,
    #"Merged Queries" = Table.NestedJoin(Source,{"Client", "Year"},Source,{"Client", "Year"},"Source",JoinKind.LeftOuter),
    #"Removed Columns" = Table.RemoveColumns(#"Merged Queries",{"Source"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "PY", each [Year]-1),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "PPY", each [Year]-2),
    #"Merged Queries1" = Table.NestedJoin(#"Added Custom1",{"Client", "PY"},#"Added Custom1",{"Client", "Year"},"Added Custom1",JoinKind.LeftOuter),
    #"Expanded Added Custom1" = Table.ExpandTableColumn(#"Merged Queries1", "Added Custom1", {"Amt"}, {"PY.Amt"}),
    #"Merged Queries2" = Table.NestedJoin(#"Expanded Added Custom1",{"Client", "PPY"},#"Expanded Added Custom1",{"Client", "Year"},"Expanded Added Custom1",JoinKind.LeftOuter),
    #"Expanded Expanded Added Custom1" = Table.ExpandTableColumn(#"Merged Queries2", "Expanded Added Custom1", {"Amt"}, {"PPY.Amt"}),
    #"Added Custom2" = Table.AddColumn(#"Expanded Expanded Added Custom1", "ThreeYearCheck", each not List.ContainsAny({[Amt],[PY.Amt],[PPY.Amt]}, {null, 0})),
    #"Sorted Rows" = Table.Sort(#"Added Custom2",{{"Client", Order.Ascending}, {"Year", Order.Ascending}})
in
    #"Sorted Rows"
1
Wedge 25 mai 2018 à 18:49

Il a fallu une minute pour comprendre ce que vous vouliez dire, mais je suppose que vous recherchez s'il y a un montant dans l'année du dossier que vous examinez ainsi que pour chacune des deux années précédentes.

Je travaille également sur l'hypothèse que ces données sont déjà agrégées, il n'y a donc qu'un seul montant par client et par an (vous pouvez facilement l'agréger dans PQ si ce n'est pas déjà le cas).

Je ne sais pas si c'est la "bonne" façon de faire cela, mais je fais simplement une fonction countifs. Ajoutez une colonne personnalisée et placez-la dedans (je suppose que l'exemple que vous avez fourni comme point de départ sans la colonne personnalisée, en faisant référence à "Source" comme première étape de la requête):

let CurClient = _[Clientnumber], CurYear = _[Year] in Table.RowCount(Table.SelectRows(Source, each [Clientnumber] = CurClient and [Year] >= CurYear-2 and [Year] <= CurYear and [Amount] <> 0)) >= 3
1
Wedge 24 mai 2018 à 17:48

DAX est ce que vous recherchez pour .

utiliser des expressions d'analyse de données (DAX) pour résoudre un certain nombre de problèmes de calcul et d'analyse de données de base

-1
Mxsky 23 mai 2018 à 08:40