0
votes

Supprimer conditionnel DUPLICATES

J'ai une liste où je souhaite supprimer la colonne «Date de résiliation (travail)» est la dernière ou NULL.

échantillons de données xxx

Le résultat doit être xxx


0 commentaires

3 Réponses :


0
votes

J'ai trouvé une solution de contournement (groupe par max) mais je suis sûr qu'il y a une manière plus facile et plus rapide xxx


0 commentaires

0
votes

Autre moyen: xxx

 Entrez la description de l'image ici


5 commentaires

Il supprime également les données avec les données NULL ... Tri des descentes?


J'ai ajouté une photo. Après avoir tri des nulles, allez au bas de la table. Donc, pour les identifiants dupliqués, ils sont supprimés.


Merci pour le temps et les efforts. Mais nous devons garder le null parce que cette personne travaille toujours;) Donc, si c'est null, nous devrions garder cette ligne, sinon, la dernière date.


Merci d'explication, peut-être que je fournis une autre solution plus tard. Dans mon esprit, vous fournissez des informations assez trompeuses. Bien que la table souhaitée soit cristalline, vous écrivez également "Je veux supprimer le duplicate où" la date de résiliation (travail) "est la dernière ou null" et fournit le code, qui a la même sortie que les miennes (dates sans nulls) .


juste pas très clair en fait, il devrait être comme "Je veux supprimer les duplicats où si" date de résiliation (travail) "La colonne n'est pas nulle, la dernière ou null"



1
votes

Je reçois la sortie attendue:

 sortie p>

Utilisation du code ci-dessous: P>

let
    initialTable = Table.FromColumns({
        {12405, 33418, 33418, 33616, 33616, 48224},
        {"xxxx", "mmm", "mmm", "rrrr", "rrrr", "ttttt"},
        {"yyy", "nnnn", "nnnn", "sssss", "sssss", "kkkk"},
        {#date(2018, 10, 26), #date(2018, 01, 01), #date(2017, 1, 13), #date(2018, 7, 13), #date(2018, 7, 13), #date(2018, 7, 15)},
        {#date(2019, 02, 06), #date(2018, 7, 30), #date(2017, 12, 31), #date(2018, 11, 19), null, #date(2019, 4, 14)}
    }, type table [Id No = Int64.Type, Name = text, Surname = text, #"Date of Employment (Work)" = date, #"Date of Termination (Work)" = date]),
    nullElseMaxComparer = (x as record, y as record) =>
        let
            a = Record.Field(x, "Date of Termination (Work)"),
            b = Record.Field(y, "Date of Termination (Work)"),
            comparison = if a = null then 2 else if b = null then -2 else Value.Compare(a, b)
        in comparison,
    maxOrNullPerGroup = Table.Group(initialTable, "Id No", {"toCombine", each Table.Max(_, nullElseMaxComparer)}),
    combined = Table.FromRecords(maxOrNullPerGroup[toCombine])
in
    combined
  • Si je comprends correctement, pour chaque NO code>, vous voulez la date de terminaison la plus récente. LI>
  • Dans la sortie attendue indiquée dans la question et spécifiquement pour ID NO 33616 code>, null code> a été préféré sur 11/19/2018 code>. J'ai donc supposé que, aux fins de cette question, null code> est supérieur à n'importe quelle date. LI>
  • nullelsMaxComparer code> est une fonction de comparaison personnalisée qui tente de donner la préférence à des valeurs code> null peut être transmise directement à table.max code>. li> ul> p>


5 commentaires

Merci pour votre temps, vous avez tout compris correctement, mais il y a une erreur à venir avec votre formule bien que les données soient en place. Expression.Error: La date de résiliation (travail) de l'enregistrement n'a pas été trouvée. Détails: ID NO = 33418 Nom = XXX Nom de famille = Yyy Date d'emploi (travail) = 1/13/2017 12:00:00 Date de résiliation (travail) = 12/31 / 2017 12:00:00 et cette erreur est livrée avec toutes les données que la journée de résiliation est la fin de l'année.


@Umutk pourrait être parce que j'ai utilisé un U majuscule dans la date de terminaison (travail) , mais vos données semblent utiliser un O . Je vais éditer ma réponse pour utiliser un Minuscule .


Si tel est le cas, cela ne devrait pas fonctionner du tout, non?


@Umutk Désolé, il est difficile de dire sans voir ce que vous voyez. Êtes-vous en mesure de fournir une copie de votre classeur / fichier?


Je ne pouvais pas trouver en réalité le fichier avec l'erreur. Peut-être que cela causé par d'autres codes que j'ai utilisés dans ce fichier. J'ai créé un nouveau fichier et j'ai essayé votre code. travaillé comme un charme. Merci ! Voici le fichier ... 1Drv.ms/x/s beyanfkbrjqyhjqeil9Mahl51wc5oo?e=DCO2FI