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 p> Le résultat doit être p>
3 Réponses :
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
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"
Je reçois la sortie attendue:
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
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>
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 code> 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 code> dans la date de terminaison (travail) code>, mais vos données semblent utiliser un
O code> . Je vais éditer ma réponse pour utiliser un
Minuscule code>.
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