Función de Power Query para Traducir una Columna en Inglés a Español con la Ayuda de Power Autoamte.
Como reza el título de la presente publicación, gracias a las bondades del Lenguaje M podemos desencadenar un flujo en Power Automate desde Power Query.
Un ejemplo clásico consiste en crear un flujo que tome un texto de entrada en inglés y traducirlo a español, esto por que tenemos el conector de Microsoft Translator del servicio cognitivo de Azure, sin embargo: ¿Qué sucede si queremos hacer la traducción para una columna de texto en Power Query?
Es aquí donde conocer el Lenguaje M es una gran ventaja, aunque no es complicado, si que es cierto que debemos utilizar sus funciones y conocer algunos conceptos que desglosaremos en esta publicación y su vídeo, adicional mente, es verdad que esta solución se puede conseguir por otra vías, empero, es un ejemplo sencillo que tiene la intención de ilustrar cómo desencadenar un flujos de Power Automate con Power Query y el Lenguaje M.
A continuación puedes leer el paso a paso con ilustraciones o ver el vídeo aquí según tu formato para consumir el contenido de tu preferencia personal.
Creación de Flujo de Nube Automatizado
Lo primero es crear un flujo que nos ayude a traducir un texto, por ello, ubicados en la plataforma de Power Automate (puede crear una cuenta gratuita desde aquí si no cuentas con una), vamos a la parte izquierda para pulsar clic en la sección Crear y luego clic en Flujo de nube Automatizado.
El motivo por el cual nos hemos decantados por Flujo de nube automatizado es que este se desencadena cunado sucede algún evento, por ejemplo: Cunado llega un correo a nuestra bandeja de outlook o Cundo se crea una reunión de Teams o Cunado hay una alerta en el servicio de Power BI en un Panel, etc. etc.
Lo que notros queremos es que se desencadena el flujo cuando Power Autoamte detecte que una aplicación externa realiza una solicitud para su ejecución.
En la venta emergente que se despliega luego de lo previo tenemos la posibilidad de señalar un nombre para el flujo y ubicar el desencadenador que mas se ajuste a nuestra necesidad, no obstante, es mucho más cómodo navegar en la página principal cuando es uno no tan frecuente, por ello pulsamos clic en el botón omitir en al parte inferior derecha.
En la página para la elaboración del flujo podrás notar en la parte superior izquierda que el mismo no tiene un título:
Simplemente, pulsamos clic allí y le indicamos un nombre descriptivo:
Desencadenador de Solicitud HTTP
El evento que necesitamos es: Solicitud, pues detecta cuando hay un requerimiento a la web por parte de una aplicación externa a Power Automate mediante una solicitud HTTP (que es el protocolo por excelencia de comunicación entre servicios y aplicaciones), que para nuestro caso quien hace el «pedido» es Power Query.
Para localizarlo con mayor agilidad en la parte central de la página tenemos el navegador de conectores y desencadenadores, sus pestaña seleccionamos: PREMIUM.
Si PREMIUM …
Algo tan potente tiene un costo asociado, pero no te preocupes si estas iniciando en Power Automate puedes optar por los 90 días de prueba de las funcionalidades y explorar sin ningún problema.
En el buscador escribimos Solicitud y veremos que se filtra el deseado:
Cuando lo seleccionamos veremos inmediatamente el desencadenador: Cuando se recibe una solicitud HTTP.
A continuación veremos el paso:
La URL a la cual vamos hacer la solicitud (por ponerlo en esos términos) aún no esta habilitado, dad que como muy bien dice: Se genera después de guardar, ahora bien, aunque el paso tiene más opciones como el Esquema JSON, Método, y Ruta Relativa, nada de esto es obligatorio, por lo que, con este paso los hemos finalizado.
Enseguida pasamos a agregar un nuevo paso:
Nuestra misión consiste en buscar una acción que nos permita traducir, para ello, tenemos el sericio de Microsoft Translator que por supuesto se encuentra disponible en Power Autoamte, una vez navegamos seleccionamos la acción de: Translate Text:
Su configuración es sencilla, dado que sólo hay dos campos obligatorios, el primero: Target Languague que significa a cuál idioma queremos traducir, por lo que aquí nos apoyamos de la lista desplegable para seleccionar español, el segundo campo es el Texto a traducir, que corresponde a lo que enviará Power Query desde Power BI desktop o Excel, y que es captado por el paso anterior (Cuando se genera una splcitud HTTP) gracias a que es una solicitud POST. En este punto nos apalancamos de la opción Agregar contenido dinámico y allí seleccionamos el único disponible que es: Cuerpo.
A continuación clic en nuevo paso en la parte inferior del flujo y ubicamos nuevamente: Solicitud, pero ahora en Acciones seleccionamos Respuesta:
En este paso tampoco hay que hacer mayor caso, tan sólo en el campo: Cuerpo, mediante Agregar Contenido Dinámico escogemos: Translate Tex:
Guardamos y eso es to en cuanto a Power Automate.
Creación de Función con Lenguaje M
Ahora en una consulta en Blanco en Power Query creamos la siguiente función M:
Con la función Web.Contents podemos hacer una solicitud a un servicio Web, La URL que se debe señalar en su primer argumento para llevar acabo esta tarea la obtenemos del primer paso en el flujo de Power Autoamte una vez guardado:
No obstante, debe ser una solicitud de tipo POST ya que desde Power Query queremos enviarle un texto al servicio, por este motivo no es factible implementar el conector web desde la interfaz dado que la función detrás de cámaras que utiliza es: Html.Table y esta no nos permite hacer tal cosa y es de otra naturaleza en su totalidad.
Para enviarle estos datos al servicio con la función Web.Contents lo hacemos en el segundo parámetro de la función, el cual es un valor de tipo registro, no obstante, cuando se utiliza con el campo Content automáticamente pasa de GET (Sólo obtener datos del servicio) a POST (Enviar algo al servicio y obtener algo)
El motivo por el cual se utilizan las función Text.ToBinary y Text.FromBinary es porque estas aplicaciones hablan su propio idioma, imagina por ejemplo: Que tú (Power Query) deseas comida de un restaurante de comida china (Power Autoamte),cada uno habla su idioma, tu español y el restaurante en chino, por ello para poder solicitar la orden y comunicarse se debe buscar un idioma estándar e intermedio que ambos entiendan, esto vendría hacer el inglés (lenguaje binario o JSON).
Por eso se convierte a binario .
Otro Ejemplo de API
Si sientes curiosidad por conocer más acerca de la función Web.Contents y su segundo parámetro y los campos de este registro, la función de Power Query Zone llamda Table.MyTopOnSpotify tiene como objetivo ser un ejemplo básico que permita como explorar la API con GET Resquest.
Eso ah sido todo por este artículo y vídeo, por favor, cuéntame que te a parecido y si te gustaría que sigamos indagando sobre Power Automate, agradezco infinitamente tu comentarios.
Un fuerte abrazo !!!
— Miguel Caballero