Comment traduire avec PowerQuery une recherche avec les caractères joker

Accueil – Le CFO masqué Forums Power Query Comment traduire avec PowerQuery une recherche avec les caractères joker

Mots-clés : 

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

    Bonjour
    Cette question fait suite au sujet du blogue du 7 juin 2018 et à mon commentaire
    Mon problème est de trouver la première clé valide pour chaque élément d’une liste

    J’ai des clés classées dans un ordre spécifique (A46 en clé 1, 46 en 2, B1 en 3… voir fichier excel).

    J’ai une liste de code alphanumérique dans une autre liste (346, 35, 3A46…)

    Pour chaque élément de cette liste je veux trouver la première clé qui s’applique : dans mon cas, par quelle clé “commence” mon élément (variante “contient” ou “se termine par”)

    Avec les fonctions Excel j’utilise la formule matricielle
    {=INDEX(Règles[n° Règle];EQUIV(1;EQUIV(Règles[Clé]&”*”;[@Valeur];0);0))}
    ça marche bien et c’est assez rapide pour quelques centaines de clé et plusieurs milliers de recherches

    Je veux traduire cela avec PowerQuery. Tout va bien avec des clés “classiques”. Mais j’ai également des clés avec des ? ou de * et là je coince car PowerQuery considère les * comme des caractères en non des jokers (équivalent à ~* dans Excel)
    Question subsidiaire : la casse. Pour EQUIV “ABC” et “abc” c’est pareil, pas pour PowerQuery

    Voir mon fichier exemple

    Merci
    Stéphane

    Attachments:
    You must be logged in to view attached files.
    #46636
    Sophie Marchand
    Participant

    Bonjour,

    Il n’y a pas de façon officielle de traiter les caractères de remplacement dans Power Query. Dans le cas où les options recherchées étaient limitées, il y aurait toujours façon de combiner des fonctions Text.StartsWith et autres.

    Sinon, Chriss Webb a fait une tentative pour les ? ici: https://blog.crossjoin.co.uk/2014/05/27/implementing-a-basic-likewildcard-search-function-in-power-query/.

    Il n’en garantit pas le résultat toutefois…

    Si le cas que vous tentez de résoudre est exactement ce que vous avez soumis, il peut se résoudre mais si les règles sont beaucoup plus nombreuses, ça risque d’être plutôt costaud!

    Au plaisir,

    Sophie

    #46637
    Stéphane Lorin
    Participant

    Merci Sophie pour votre retour
    Dans mon cas je dois faire correspondre une table de milliers de codes alphanumériques de 6 à 8 caractères avec une autre table d’environ 500 règles (du style AB12* ou AB*12 ou encore AB?1*). Ma fonction matricielle avec 2 EQUIV imbriqués est très efficace, je vais la conserver sans chercher à le faire sous Power Query.

    Merci pour votre lien vers le blog de Chris Webb. Peut-être y aura-t-il en effet une fonction LIKE dans PowerQuery ?

    En tout cas un grand bravo pour votre site et votre travail.

    Stéphane

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