Skip to content

Función en Power Query para pasar Números a Textos.

Pasar Números a Palabras Utilizando Power Query en Conjunto con un Script de Python y Crear Función Personalizada.

¡Hola a todos!

En este artículo y video, vamos a explicar paso a paso cómo crear una Función de Power Query para pasar Números a Textos: como el 12, en su versión escrita en palabras. Es decir, el número 12 se transformará en “doce”. Esta es una tarea bastante común, especialmente en algunos procesos de facturación donde se requiere tanto la representación numérica como la escrita del número.

Aunque podríamos lograr esto únicamente utilizando las funciones nativas de Power Query, en esta ocasión, optaremos por un enfoque más directo utilizando scripts de Python en Power BI. No te preocupes si no tienes experiencia previa con Python o Python en Power BI, ya que explicaremos cada paso de manera detallada.

Si ya tienes experiencia con Python y Python en Power BI, puedes saltar directamente a la sección donde construimos la solución y creamos una función personalizada. Por ahora, comenzaremos con la instalación de Python y su habilitación en Power BI.

Instalación de Python y Librerías

Primero, si no hemos utilizado Python ni scripts de Python en Power BI, lo que debemos hacer es instalar Python. Aunque existen varias maneras de hacerlo, personalmente prefiero la distribución de Anaconda. Sin embargo, en esta ocasión, haremos una instalación más ligera.

Instalación de Python

Para comenzar, abrimos nuestro navegador y usamos el motor de búsqueda de nuestra preferencia. En la barra de búsqueda, escribimos Python y accedemos al sitio web de Python.org.

Figura 01 – Página python.org

Una vez allí, nos dirigimos a la sección de descargas Downloads y veremos la última versión disponible, que en este caso es Python 3.12.5. Es posible que la versión varíe dependiendo del momento en que estés viendo este video.

Figura 02 – Descargar Python

Pulsamos clic para descargar.

Una vez descargado el archivo, podemos abrir la carpeta de descargas y ejecutar el instalador. Al iniciar la instalación, aseguramos de marcar las dos casillas que aparecen en la ventana inicial y luego hacemos clic en Instalar ahora. No es necesario realizar una instalación personalizada; basta con seguir el proceso de instalación estándar.

Figura 03 – Instalador de Python

Esperamos a que termine y, una vez finalizado, Python estará instalado en nuestro sistema. Podemos cerrar la ventana de instalación.

Figura 04 – Instalación Exitosa

también necesitaremos instalar algunas bibliotecas que nos ayudarán a ejecutar Scripts de Python en Power Query y a convertir números en texto.

Instalación de Librerías

Para instalar las librerías abrimos la ventana de Ejecutar con las teclas Windows + R, escribimos cmd.

Command Prompt

Presionamos en Aceptar. Lo cual abre la ventana negra (command prompt).

Primero, instalaremos la biblioteca pandas, que simplificará el manejo de tablas. Para instalarla, en la consola de comandos escribimos:

pip install pandas

Presionamos en la tecla Enter. La instalación comenzará de inmediato. Además, necesitaremos una biblioteca para convertir números en palabras. Para ello, escribimos:

pip install num2words

Presionamos en la tecla Enter. Una vez que la instalación haya finalizado, todo estará listo. Con esto, hemos terminado el proceso en la consola de comandos, por lo que podemos cerrar la ventana.

Pasar Números a Textos en Power Query con Python

Vamos a proceder con nuestra solución para una Función de Power Query para pasar Números a Textos, sin embargo, primero carguemos algunos datos con números para pasarlos a texto.

Cargar Tabla de Datos

Para cargar una tabla de datos,abrimos el editor de Power Query. Primero, nos dirigimos a la pestaña Inicio y en el grupo Consultas, hacemos clic en Transformar datos.

Ir al Edito de Power Query

Esto nos llevará al editor de Power Query.

Podemos crear una tabla con los números que queramos para realizar las comprobaciones o cargar una tabla existente si es necesario. En este caso, voy a utilizar un Script del Lenguaje M que ya tengo preparado con algunos números, incluyendo algunos simples de 1 o 2 dígitos y otros más grandes, de 6 o 7 dígitos.

Para ello, vamos a la pestaña Inicio, desplegamos las opciones de Nuevo origen y seleccionamos Consulta en blanco.

Crear Consulta en Blanco

Esto creará una consulta en el Panel de Consultas. Luego, hacemos clic derecho sobre esta consulta y seleccionamos Editor avanzado en el menú que aparece.

Comando para ir al Editor Avanzado

En el Editor Avanzado borramos todo y pegamos la siguiente expresión de Lenguaje M:

                1 | let2 |     Origen = 3 |     Table.FromValue (4 |         { 5, 12, 567, 1001, 33564, 221188, 1000000, 10000000, 100000000,1000000000,10000000000, 0 },5 |         [ DefaultColumnName = "Numeros"]6 |     )7 | in8 |     Origen            

He dejado el nombre de la columna sin tilde, es decir, así: “Numeros” para el artículo, mientras que en el vídeo aparece con tilde, así: “Números”. Para todos los fines es lo mismo, solo tengamos en cuenta si usamos la tilde o no.

Creación de Script de Python

Como vamos a utilizar un script de Python, debemos ir a la pestaña Transformar en la cinta de opciones. Nos desplazamos hacia la derecha hasta encontrar el grupo Scripts y hacemos clic en Ejecutar script de Python.

Comando Ejecutar Script de Python

A continuación aparecerá la ventana Ejecutar script de Python, la cual tiene un comentario muy importante, que dice “dataset contiene los datos de entrada para este script. Esto significa que nuestra tabla, que en este caso solo tiene una columna, está referenciada en la variable dataset.

Ventana Ejecutar Script de Python

Dado que hemos instalado una biblioteca externa de Python llamada num2words, debemos indicarle explícitamente a Python en Power BI que la use. Para ello, utilizamos la siguiente sentencia:

from num2words import num2words

Ahora, vamos a ejecutar nuestra solución. Vamos a agregar una nueva columna a nuestra tabla, que en este caso tiene una única columna llamada Numeros. La nueva columna se llamará, por ejemplo, Numeros En Letras. Para ello, escribimos:

dataset['Numeros En Letras'] = dataset['Numeros'].apply(lambda x: num2words(x, lang='es'))

En este código, estamos usando el método apply para aplicar una función anónima (lambda) a cada valor en la columna Numeros. La función num2words convertirá el número en palabras, y el parámetro lang=’es‘ asegura que la conversión se haga en español.

El código en la venta se ve así:

Script de Python

Luego de la ejecución, veremos en el área de resultados la siguiente tabla:

Tabla de Resultado

Pulsamos clic sobre la palabra Table que aparece en la columna Value y voilà, aquí la solución:

Solución Números a Textos

Podemos comprobar que los números se han convertido correctamente a palabras, como por ejemplo:

  • 512 → “quinientos doce”
  • 500567 → “quinientos mil quinientos sesenta y siete”
  • 1001 → “mil uno”
  • 33564 → “treinta y tres mil quinientos sesenta y cuatro”

Hemos logrado crear una solución sencilla utilizando Power Query y un script de Python en Power BI para convertir números a palabras.

Función de Power Query para pasar Números a Textos

Pero esto podemos llevarlo un paso más allá y crear una función personalizada de Power Query para reutilizar cada vez que necesitemos de manera sencilla.

Para crear nuestra función personalizada, lo primero que haremos es clonar la consulta existente. Para ello, hacemos clic derecho sobre la consulta y seleccionamos Duplicar.

Duplicar Consultas

En la consulta original, dejaremos únicamente los datos, por lo que eliminaremos los pasos Tipo cambiado, dataset y Ejecutar script de Python. Podemos renombrar esta consulta simplemente como Datos.

Eliminar Desde el Paso Ejecutar Scrip de Python

A continuación, trabajaremos en la consulta clonada, que se llamará Consulta 1 (2). Aquí es donde crearemos nuestra función personalizada. Hacemos clic derecho sobre esta consulta y seleccionamos Editor avanzado. En el editor, veremos el código generado, que incluye el paso Origen, el paso de ejecución del Script de Python con la función del Lenguaje M Python.Execute, el paso dataset que es de navegación y el paso Tipo Cambiado.

Primero, en la parte superior de toda la expresión del Lenguaje M, pondremos la sintaxis para crear una función con un parámetro que llamaremos tabla, que será la tabla que indicará la persona donde se encuentra una columna con números, y un segundo parámetro que llamaremos columna, el cual será un valor de tipo texto que proporcionará el usuario y corresponde al nombre de la columna a la cual se le desea derivar una nueva columna con los números en textos, el código de Lenguaje M a poner es:

                1 | ( tabla as table, columna as text) =>            

El código asociado al paso Origen lo eliminamos. En el segundo paso, modificamos el segundo parámetro de la función Python.Execute, ya que debemos cambiar la asignación de Origen a tabla. Es decir, pasa de: dataset = Origen a dataset = tabla, ahora será la tabla que indique el usuario la que será parte del código.

El primer parámetro de la función Python.Execute también debe ser modificado. Aunque esto es todo una cadena de texto, lo cierto es que allí es donde está el código de Python. Podemos remover el comentario y hacer concatenaciones de texto para que haga referencia al parámetro columna en lugar de quedar estático un nombre de columna llamado Numeros. Observemos detenidamente el siguiente código para que entendamos los cambios:

                 1 | ( tabla as table, columna as text )=> 2 | let 3 |     #"Ejecutar script de Python" =  4 |     Python.Execute (  5 |         "from num2words import num2words#(lf)#(lf)dataset['Numeros En Letras'] = dataset['" & columna  & "'].apply(lambda x: num2words(x, lang='es'))#(lf)#(lf)", 6 |         [ dataset = tabla ] 7 |     ), 8 |  9 |     dataset = 10 |     #"Ejecutar script de Python"{[Name="dataset"]}[Value]11 | in12 |     dataset            

Y eso es todo. Ahora tenemos una función personalizada en Power Query que convierte números a texto, la cual podemos usar siempre que la necesitemos. Si lo preferimos, podemos integrarla de manera nativa, como explico en este video, o simplemente utilizarla cuando sea necesario. Por esta razón, la he añadido al repositorio de Power Query Zone. Puedes encontrarla aquí.

Conclusiones de Función de Power Query para pasar Números a Textos

Función de Power Query para pasar Números a Textos: Convertir números a texto en Power Query es bastante sencillo, especialmente cuando aprovechamos la librería num2words de Python, que ya tiene toda la lógica de conversión desarrollada. En lugar de reinventar la rueda, simplemente utilizamos esta solución y la adaptamos al Lenguaje M para crear una función personalizada en Power Query.

Sin embargo, es importante considerar las limitaciones de usar scripts de Python en Power BI, como la necesidad de instalación adicional. Esto significa que esta solución puede no ser adecuada para todos los usuarios o escenarios. Por esa razón, en el futuro podría ser útil crear una solución completamente en Lenguaje M. Mientras tanto, conocer Python nos coloca en un nivel superior, y no hay mejor conclusión que esa.

El Ing. Miguel Caballero es Microsoft MVP en la categoría Data Platform, además, es Microsoft Certified Trainer. Exmiembro de Power Skill (Escuela de Inteligencia de Negocios S.A.S) y Excel Free Blog

Back To Top