Reemplazo de valores en Power BI / Power Query (código HTML)

image

Con Power Query dentro de Excel o Power BI, puedes reemplazar los valores mediante el botón «Replace values», pero hay otros enfoques cuando se necesita reemplazar valores múltiples al mismo tiempo, como los siguientes:

La realidad es que hay varias formas de hacerlo, pero a menudo requiere crear otra tabla de traducción para realizar el reemplazo o la traducción necesarios.

Reemplazando valores automáticamente sin tabla de traducción

Esto a menudo se puede optimizar con las funciones que Power Query ya tiene, pero necesitamos averiguar cuál es nuestra cadena de texto o cómo se ve. En esta publicación del blog, abordaré un escenario específico donde obtienes cadenas de texto que se parecen a las de la siguiente tabla

Text
<p>I will
display &euro;</p>
<p>I will
display &#8364;</p>
<p>I will
display &#x20AC;</p>
<p>&#42; These are specific codes used in
HTML &#40;this is just a sample&#44; but things look great with
&quot;Power Query&quot;&#41;</p>

y la tabla de salida debería tener el siguiente aspecto:

fnDecodeHTML
I will display €
I will display €
I will display €
* These are specific codes used in HTML (this is just
a sample, but things look great with «Power Query»)

Lo que podrías haber notado es que se trata de cadenas de texto escritas en código HTML. En lugar de crear una tabla de traducción personalizada para todos los caracteres y símbolos especiales del lenguaje / código HTML, podemos usar una función / función nativa que Power Query tiene para simplemente traducir todo automáticamente. ¡Averigüemos cómo!

Haz clic en el botón a continuación para que puedas descargar las muestras utilizadas en este artículo:

Download Sample File

Una función M nativa disponible para decodificar HTML – Web.Page

Power Query tiene múltiples funciones que le permiten conectarse a diferentes estructuras de archivos y decodificar sus contenidos como archivos XML, JSON, Excel e incluso archivos HTML. Para nuestra página específica, necesitamos usar la función que extrae el contenido y decodifica ese archivo HTML. La función que necesitamos se llama Web.Page:

image

Esta función puede usar una cadena de texto de HTML y traducirla en una cadena de texto simple que. ¡Esto es exactamente lo que necesitamos!

Una cosa a tener en cuenta sobre esta función es que su salida es más una jerarquía, por lo que para obtener lo que necesitamos tendremos que navegar a través de esa jerarquía.

Crear una función personalizada basada en la función nativa Web.Page

(¡ahorrando tiempo!)

Para simplificar las cosas y para ahorrarnos algo de tiempo, ya que reutilizaremos esa función varias veces, pudes seguir la navegación jerárquica adecuada y crear una función personalizada a partir de ella. El código para esa función es el siguiente:

(Text as any) => let
         Source = Text,
         Custom1 = Web.Page(Source),
         Data = Custom1{0}[Data],
         Children = Data{0}[Children],
         Children1 = Children{1}[Children],
         Children2 = Children1{0}[Children],
         Text1 = Children2{0}[Text]
     in
         Text1

que puede copiar / pegar en una consulta en blanco a través del Editor avanzado y nombrar esa función fnDecodeHTML.

Luego puedes invocar esa función utilizando el botón Invoke en la pestaña Add Column y el resultado de esa operación te dará esto:

image

Conclusión

Power Query puede manejar MUCHOS escenarios de reemplazo de valores, pero siempre es una mejor idea comprender primero qué valores estás tratando de encontrar, cómo se están creando y si hay alguna fuente de datos actual o funciones de decodificación disponibles en Power Query puede ayudarnos. En este caso específico, Web.Page es una función que entra en juego y nos ayuda al no tener que crear una tabla de traducción personalizada, que hubiera tomado horas o incluso días para investigar y crear correctamente.

Para aprender técnicas más geniales y escenarios más avanzados con el lenguaje M,  Inscríbete en la prueba GRATUITA de la Academia Power Query donde hablo con más detalle sobre este tipo de técnicas.

Join the FREE trial of the Power Query Academy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.