Accueil – Le CFO masqué › Forums › Power Query › Comment traduire avec PowerQuery une recherche avec les caractères joker
Mots-clés : powerquery EQUIV
- This topic has 2 réponses, 2 participants, and was last updated il y a 6 years et 5 months by Stéphane Lorin.
-
AuteurArticles
-
8 juin 2018 à 9 h 03 min #46591Stéphane LorinParticipant
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 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 juin 2018 à 16 h 59 min #46636Sophie MarchandParticipantBonjour,
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 juin 2018 à 3 h 18 min #46637Stéphane LorinParticipantMerci 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
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.