Home – Le CFO masqué › Forums › Power Query › Comment traduire avec PowerQuery une recherche avec les caractères joker
Tagged: powerquery EQUIV
- This topic has 2 replies, 2 voices, and was last updated 6 years, 10 months ago by
Stéphane Lorin.
-
AuthorPosts
-
8 June 2018 at 9 h 03 min #46591
Stéphane Lorin
ParticipantBonjour
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 listeJ’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 recherchesJe 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 PowerQueryVoir mon fichier exemple
Merci
StéphaneAttachments:
You must be logged in to view attached files.11 June 2018 at 16 h 59 min #46636Sophie Marchand
ParticipantBonjour,
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
12 June 2018 at 3 h 18 min #46637Stéphane Lorin
ParticipantMerci 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
-
AuthorPosts
- You must be logged in to reply to this topic.