Contact: 514-605-7112 / info@lecfomasque.com
Contact: 514-605-7112 / info@lecfomasque.com

Supprimer ligne répétitive et non les doublons

3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Articles
  • #71968
    sebastien.bertrand
    Participant

    Bonjour!
    Je dois analyser les log d’une machine, une lecture des capteurs est réalisée toutes les 5 secondes.
    L’objectif est pour une durée donnée, de savoir combien de temps le capteur était à « 1 »

    Par exemple
    Ligne 1 : M1 / 2020-07-23 00 :00 :00 / 0
    Ligne 2 : M1 / 2020-07-23 00 :00 :05 / 0
    Ligne 3 : M1 / 2020-07-23 00 :00 :10 / 0
    Ligne 4 : M1 / 2020-07-23 00 :00 :15 / 1
    Ligne 5 : M1 / 2020-07-23 00 :00 :20 / 1
    Ligne 6 : M1 / 2020-07-23 00 :00 :25 / 1
    Ligne 7 : M1 / 2020-07-23 00 :00 :30 / 1
    Ligne 8 : M1 / 2020-07-23 00 :00 :35 / 0
    Ligne 9 : M1 / 2020-07-23 00 :00 :40 / 0

    En M, la première chose que j’essaie de faire est de garder seulement la première ligne du changement d’état, dons supprimer les lignes 2, 3, 5, 6, 7 et 9. Mais sans succès…

    Par la suite, je pensais faire une formule DAX pour calculer la différence entre le MAX et le MIN, pour ainsi atteindre l’objectif.

    Merci de votre aide!

    #72047

    Bonjour,

    Je vous ai joint un fichier dans lequel j’ai complété la première étape que vous souhaitiez compléter. À noter que cette technique est enseignée dans notre formation Recettes magiques pour transformer vos données, juste ici: https://www.lecfomasque.com/cours/recettes-magiques-pour-transformer-vos-donnees/

    Au plaisir,

    Sophie

    Attachments:
    You must be logged in to view attached files.
    #72297
    SL
    Participant

    Bonjour
    Je me permets de proposer une solution alternative qui ne compare pas les lignes successives entre-elles mais qui utilise une option de la fonction de regroupement Table.Group.

    Le principe est de regrouper les lignes sur les champs « Capteur » (M1 ou M2) et « Statut » (0 ou 1), de récupérer la date/heure minimum (pour le début) et le nombre de lignes (pour la durée)

    A la main, dans la formule créée avec le menu « regroupement », j’ajoute le mot clé « GroupKind.Local » pour spécifier que le regroupement ne sera pas sur la totalité de la table mais sur chaque groupe de lignes successives qui ont le même capteur et le même statut.

    = Table.Group(# »Type modifié », {« Capteur », « Statut »}, {{« Début », each List.Min([Date Heure]), type datetime}, {« Durée », each Table.RowCount(_), type number}}, GroupKind.Local)

    Je n’ai plus qu’à multiplier par 5 le nombre de lignes pour avoir la durée en secondes de chaque statut.

    Un inconvénient est qu’on perd le petit engrenage pour modifier le regroupement

    Cette option de la fonction Table.Group ne peut pas être utilisée à chaque fois que l’on veut comparer une ligne avec la précédente mais elle permet de simplifier certaines requêtes et elle est moins gourmande en mémoire que la technique des index décalés d’un.

    Cordialement

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