Power Query – NB.SI.ENS

Accueil – Le CFO masqué Forums Power Query Power Query – NB.SI.ENS

  • Ce sujet contient 1 réponse, 2 participants et a été mis à jour pour la dernière fois par Stéphane Lorin, le il y a 3 années et 7 mois.
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Articles
  • #78313
    Lionel
    Participant

    Bonjour à tous les membres du Forum !
    Je vous expose mon petit problème. Dans ma DB (j’ai effacé toutes les colonnes qui ne sont pas concernées mais qui me servent pour d’autres calculs), j’ai, dans l’onglet ‘DB_Départ’, la situation suivante :

    1. Colonne ‘DATUM’ : que des dates (jj/mm/aaaa).
    2. Colonne ‘Caller Number’ : une liste de tous les numéros de tél qui ont appelé. Les numéros peuvent avoir un nombre de caractères différents.
    3. Colonne ‘Call Result’ : le résultat de l’appel qui peut être ANSWERED ou NO ANSWER.

    Dans l’onglet ‘Résultat Voulu’, j’ai la même liste mais avec une colonne supplémentaire ‘NOTANSWER_D’ qui indique 1 si le numéro qui a appelé un certain jour n’a pas eu de réponse (NO ANSWER), en un ou plusieurs essais. Évidemment, un même numéro peut appeler plusieurs fois par jour et dès qu’il a eut une réponde (ANSWERED), l’indication doit être 0.

    J’arrive au résultat voulu via cette formule dans excel :
    =SI(ET([Call Result]="NO ANSWER";NB.SI.ENS([Caller Number];[@[Caller Number]];[Call Result];"ANSWERED";[DATUM];[@DATUM])=0);1;0)

    Pouvez-vous me dire comment je dois procéder pour avoir ce résultat directement dans Power Query ?
    Un grand merci pour vos pistes.

    Attachments:
    You must be logged in to view attached files.
    #78462
    Stéphane Lorin
    Participant

    Bonjour

    Voici comment je procéderai :

    1. regroupement sur les champs “DATUM” et “Caller Number” et en agrégat “toutes les lignes”
    vous obtenez une nouvelle colonne qui contient une table avec tous les appels de la journée pour chaque n°

    2. ajout d’une colonne en utilisant la fonction Table.Contains pour savoir si un des enregistrements de cette table contient le champ “Call Result” avec la valeur “ANSWERED”
    Table.Contains([le nom de votre colonne de l’étape 1],[Call Result=”ANSWERED”])
    la réponse sera TRUE ou FALSE

    En modifiant le code M du regroupement, vous pourriez même obtenir le résultat en une seule étape

    = Table.Group(Source, {“DATUM”, “Caller Number”}, {{“Appel_répondu”, each Table.Contains(_,[Call Result=”ANSWERED”]), type logical}})

    Au final voici le code
    let
    Source = Excel.CurrentWorkbook(){[Name=”OutputTEL”]}[Content],
    #”Lignes groupées” = Table.Group(Source, {“DATUM”, “Caller Number”}, {{“Appel_répondu”, each Table.Contains(_,[Call Result=”ANSWERED”]), type logical}})
    in
    #”Lignes groupées”

    puis ajoutez un filtre si vous voulez une table avec uniquement les appels non répondu sur la journée

    2 points d’attention
    – vous modifiez le type du “Caller Number” en entier alors qu’il y a des n° au format texte “anonymous”
    – avec votre formule Excel, vous comptez plusieurs fois le même n° comme en ligne 46 et 47 ou 53 à 55.

    Cordialement

    Stéphane

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