Come qualcuno di voi saprà, Power Query non supporta nativamente le espressioni regolari (RegEx), che sono uno strumento potentissimo per trovare delle parti di testo "nascoste" all'interno di stringhe complesse. In Power BI Desktop è possibile ricorrere a uno script in R o Python, ma Excel non ha questa opzione.
Seguendo un articolo di Imke Feldmann (nota divulgatrice di script avanzati in codice M), ho trovato questo workaround che voglio mostrarvi: utilizza il comando Web.Page costruendo al suo interno una stringa in JavaScript. Lo sto ancora sperimentando per capire quali elementi di RegEx riesca a supportare, e spero mi aiuterete anche voi a implementare pattern più complessi
La funzione M che dobbiamo creare è questa:
Codice: Seleziona tutto
// fnRegex
let
fx=(text,regex)=>
Web.Page(
"<script>
var x='"&Text.Replace(text, "'", "\'")&"';
var y=new RegExp('"®ex&"','g');
var b=x.match(y);
document.write(b);
</script>"
)[Data]{0}[Children]{0}[Children]{1}[Text]{0}
in
fx
Una volta caricata nel nostro modello, possiamo utilizzarla per creare una colonna personalizzata: tutti i match trovati saranno messi nella colonna creata, concatenati da una virgola.
Esempio:
Per trovare i numeri di 4 cifre presenti nelle stringhe, utilizzeremo il pattern "\\d{4}":
Codice: Seleziona tutto
= Table.AddColumn(#"Modificato tipo", "Numero di 4 cifre", each fnRegex([Frasi], "\\d{4}"))
Che ne pensate? E' una funzione che userete? Fatemi sapere e mettete qui sotto i vostri esempi!