Usando Flujos de datos de PowerApps y el add-in para Excel de PowerApps

Durante bastantes años, he estado recibiendo una pregunta que no he profundizado completamente. Es algo parecido a esto:

Agrego manualmente nuevas columnas a la tabla resultante de mi consulta (creada con Power Query en Excel), y cuando presiono el botón Actualizar, pierdo todo. ¿Por qué pasa esto? ¿Cómo puedo conservar los datos de mi columna de tabla creada manualmente?

Esta pregunta surge desde el día en que Power Query se lanzó inicialmente.

Imagina este escenario:

  1. Creas una buena consulta
  2. Cargas tu consulta en una tabla dentro del libro de Excel
  3. Agregas nuevas columnas con tus propios comentarios o notas manualmente a las celdas de esas nuevas columnas
  4. Actualizas tu consulta y te das cuenta de que pierdes TODOS los datos de las celdas en esas columnas que creaste manualmente

Aquí hay unas fotos de antes y después de cómo se vería eso:

¿Por qué pasó esto? ¿Cómo podemos preservar los datos que ingresamos?

Una línea de tiempo para arreglos y soluciones

  • 6-Mayo-2014: fue abordado por primera vez por el equipo de Power Query para Excel aquí (url). Inicialmente, eliminaba completamente las columnas creadas manualmente, pero luego esta nueva versión de Power Query implementó una forma de preservar las nuevas columnas de la tabla si cumplen con ciertos criterios. No fue perfecto, pero fue un buen primer paso.

  • 8-Mayo-2014: la solución inicial que implementó Power Query no abordó por completo las necesidades de las personas, por lo que comenzaron a surgir algunas soluciones creativas. Una de ellos incluso fue sugerida por uno de los desarrolladores detrás de Power Query aquí (url)

  • 2015:surgieron más y más soluciones (tipo MacGyver, como me gusta llamarlas) durante esos tiempos, pero tanto Ken como yo estábamos demasiado ocupados escribiendo nuestro libro ‘M is for Data Monkey’ y teníamos una forma diferente de manejar estos escenarios. Yo personalmente sugerí a las personas que crearan un repositorio de datos.

  • 9-Febrero-2016: un artículo escrito por Imke golpeó al Internet por sorpresa donde habló sobre el concepto de consultas con auto-referencia o consultas de auto-abastecimiento. Lee el artículo aquí (url)

  • 21-Junio-2016: el artículo escrito por Imke despertó la creatividad de Matt Allington, quien escribió su propio artículo sobre consultas de autorreferencia dentro de Power Query para Excel que, hasta el día de hoy, todavía resuelve la situación principal que enfrenta la mayoría de las personas . Lee el artículo aquí (url).

Y desde que dicho artículo fue publicado, ha sido la referencia para las personas que desean hacer una consulta de autorreferencia en Power Query para Excel.

Por qué Power Query y Excel no pudieron resolver completamente el problema

¡Faltaba una pieza!

La realidad es que se trata más de un problema de almacenamiento o de base de datos, en lugar de uno relacionado con Power Query o Excel.

Power Query es una herramienta de preparación de datos diseñada para extraer, transformar y cargar los datos. Funciona con su propio motor llamado motor MashUp para realizar ese conjunto de transformaciones que uno define en la ventana de Power Query.

La forma en que lo hace es que se conecta a una fuente de datos de tu elección, aplica las transformaciones que haz definido y luego carga el resultado de esas transformaciones en una tabla, en este caso dentro de un Libro de Excel.

Lo que esto significa es que Power Query no almacena ningún dato y es por eso que cuando realizas una actualización, recalcula toda la tabla. También significa que Power Query no tiene conocimiento de ninguna columna nueva o cambios que podrían haberse realizado en la tabla de salida en Excel, ya que no almacena y no tiene conocimiento de esos datos.

Power Query solo conoce:

  1. la definición de fuente de datos (también conocida como Data Source)
  2. el conjunto de pasos de la transformación (también conocido como Query or Query definition)
  3. dónde debe cargar los datos (también conocido como Load destination)

En este caso, lo que estamos tratando de lograr implicaría una solución dedicada para almacenar los datos antes de presionar el botón de actualización. Esto es algo que nos encantaría que Excel y Power Query manejen directamente, pero, desafortunadamente, a menos que sea una fórmula de tabla, no hay garantía de que el valor / las fórmulas permanezcan en su lugar después de la actualización.

Un enfoque nuevo y óptimo para preservar datos en nuevas columnas

Han pasado 3 años desde que Matt escribió esa publicación de blog y no fue sino hasta hace unas semanas que surgió un enfoque nuevo y bastante simple. La funcionalidad está en Vista previa pública, pero llegará a GA durante el mes de octubre de 2019.

Nota: el enfoque de Matt sigue siendo válido y te servirá si estás buscando una solución rápida y fácil para una solución no crítica a corto plazo.

Ahora conocemos los componentes que queremos como usuario final. Nosotros necesitamos:

  • Excel
  • La experiencia de Power Query
  • Una manera de agregar nuevas columnas y preservar esos nuevos valores / columnas

¿Cómo lo hacemos?¡Flujos de datos para PowerApps al rescate!

Usando flujos de datos para PowerApps y el complemento PowerApps para Excel

Antes de comenzar, esta configuración requiere que tenga una cuenta de PowerApps y un ambiente con el acceso correcto para que pueda crear tus propios flujos de datos y tener el control total de tu entidad.

Si no tienes PowerApps, aún puedes usar el enfoque de Matt, pero te recomiendo que le des una oportunidad a Powerapps y a toda la PowerPlatform, ya que tienen una integración / historia bastante convincente y coherente y no tienes que preocuparte por cosas como:

  • Dependencia del autor: tu eres el único que sabe cómo solucionar problemas del dato que has creado en función de cómo se han realizado las fusiones y cómo trabajan.
  • Múltiples usuarios: no más problemas con credenciales, permisos o pedir a otras personas que actualicen y dejen de usar el archivo para que puedas trabajar en él.
  • Límite de fila y rendimiento: dependiendo de tu consulta, actualizar la consulta podría ser una operación exigente para tu computadora, sin mencionar que si se trata de grandes cantidades de datos, las cosas podrían ir bastante lentamente después en Excel

Hay otros beneficios, como el almacenamiento centralizado (el Common Data Model), pero son beneficios específicos que vienen con el uso de PowerApps no solo como tu aplicación sino también como tu almacenamiento (con CDM).

Vayamos paso a paso sobre cómo crear la solución.

Paso 1: Definir tu fuente de datos

En mi caso, usaré un libro de Excel simple con 3 campos:

  • ID – este es el identificador único de cada registro en mi fuente de datos
  • FirstName – el nombre del contacto.
  • LastName – el apellido del contacto

En esencia, esta es una tabla de contactos. Mi idea es luego agregar nuevas columnas a esta tabla como «País de origen» y otras como «Fecha de seguimiento».

Paso 2: Crear el flujo de datos y la nueva entidad en PowerApps

Puedes ir a powerapps.microsoft.com e iniciar sesión. Una vez que hayas iniciado sesión y en Powerapps, dirígete a:

  1. Data tab
  2. Dataflows (Flujos de datos)
  3. Create a dataflow (Crear flujo de datos)

Dale un nombre a tu flujo de datos:

Luego serás recibido por la experiencia en línea de Power Query que se ve así:

Me conectaré al archivo de Excel usando una puerta de enlace, pero la idea es que puedas conectarte a cualquier fuente de datos de tu elección. Esto funciona para cualquier fuente de datos y, hasta cierto punto, incluso podrías usar la misma consulta que ya has creado e importarla aquí como un nuevo flujo de datos.

Nuevamente, en mi caso, usaré el conector de Excel con una puerta de enlace (puede que necesites o no una puerta de enlace, lee aquí para obtener más información al respecto), pero cuando tuve que ingresar mi fuente de datos se veía así:

Y luego pude ver mi libro de trabajo y la tabla que necesitaba:

Una vez más, todo se parece bastante a la experiencia a la que estoy acostumbrado con Power Query. Es solo que es la experiencia en línea.

En mi caso no tuve que hacer tantas transformaciones. Todo lo que quería hacer era fusionar el Nombre y el Apellido en un solo campo » Full Name » y luego mantener la columna ID como el identificador único de mis registros y luego terminar configurando los tipos de datos.

Ahora viene la parte que es diferente a la experiencia de Power Query para Excel.

En Power Query para Excel, solo podemos cargar los datos a una tabla del libro o al modelo de datos. En PowerApps, podemos cargar los datos en una nueva entidad, que es un tipo específico de objeto para el Modelo de datos comunes (CDM), pero para simplificar todo, es básicamente una tabla que vive en la nube a través del CDM .

Aquí configuro mi flujo de datos para cargar la consulta a una nueva entidad, nombrar la nueva entidad y configurar el campo clave de esa nueva entidad:

Ten en cuenta que también marqué la opción «Eliminar filas que ya no existen en el resultado de la consulta», que me será útil más adelante.

Después de presionar Siguiente, puedo configurar cómo actualizar mi flujo de datos. De manera predeterminada, está configurado para «Actualizar manualmente», pero puedes cambiarlo para que se realice en el horario que elijas, como se muestra a continuación:

Para mi demostración, solo usaré el enfoque manual y presionaré » Create » para que podamos crear esa nueva entidad, pero puedes ver el potencial de tener que actualizar automáticamente la consulta cada vez que necesites que se actualice.

Al final, me dio este resultado:

Paso 3: Agregar nuevas columnas a nuestra entidad

Ahora que se ha creado la nueva entidad, ve a la pestaña Data en la pestaña » Entities » y busca tu nueva entidad. En mi caso, mi entidad se llama «dataflowTest» y tiene este aspecto:

Aquí, as clic en el botón ‘Agregar campo’ y podrás crear una nueva columna o campo. En mi caso, agregaré una nueva columna con el nombre de » Country»:

Después de presionar el botón Done, debes guardar tu entidad.

Paso 4: Agregar datos a su columna recién creada

¿Ves ese botón en la parte superior que dice » Edit data in Excel «? Haz click en él. Esto descargará un archivo que se abrirá en Excel.

Tu Excel se verá así:

Haz clic en Habilitar edición (Enable Editing) y, si no tienes el complemento PowerApps Office Store, te pedirá permisos para instalar el complemento PowerApps.

Después de instalar ese complemento, te pedirá que inicies sesión. También puedes encontrar un error sobre los credenciales, solo asegúrate de haber iniciado sesión y que todo se cargue correctamente como se muestra a continuación:

Podrás ver la tabla con sus datos (1 y 2) y su campo recién creado (3). También obtienes el panel de complementos de Microsoft PowerApps Office a la derecha para confirmar cambios, actualizar o incluso filtrar sus registros.

Ingresé algunos valores en el campo País y luego presioné la opción «Publish» (Publicar) para confirmar los cambios en la nube. Así es como se ve después de hacer eso:

Mientras realizas la operación de publicación, te dará un montón de estados de lo que está haciendo que son útiles.

Paso 5: Probar nuestra solución

Ahora aquí viene la parte importante. Probar nuestra solución.

¿Recuerdas nuestro archivo fuente original? Se veía así

Y luego lo cambie para que se vea así:

Observa que agregué la ID 4 antes de la ID 1 y eliminé la fila donde estaba Ken.

Luego seguí adelante y actualicé mi flujo de datos. Después de que se realizó la actualización del flujo de datos, volví al archivo de Excel creado por Powerapps y presioné la actualización desde el panel de PowerApps y compruebo esto:

Ken ya no es parte de la tabla y tanto Bill como Miguel todavía aparecen con el país correcto allí. La fila «New Row» no tiene ningún dato para el campo Country, pero eso se debe a que es una nueva fila.

¿Cuan genial es esto? ¡Todo funciona!

Más formas de hacer esto aún mejor

Dado que los datos se almacenan como una entidad en el Common Data Model, varias herramientas pueden aprovechar esto. Principalmente Power BI y Microsoft Flow.

Puedes conectarte a su repositorio central (entidad) utilizando Power BI Desktop para realizar tu nuevo análisis.

Puedes desencadenar flujos en función de los datos que se ingresan o modifican en esos registros (con Microsoft Flow).

Esta ni siquiera es la única forma en que puedes interactuar con los datos. Incluso podrías crear tu aplicación con Powerapps para proporcionar la mejor experiencia de usuario posible para que tu usuario final ingrese o modifique los datos junto con la forma en que funciona su flujo de datos y cómo sigue actualizando sus datos.

Conclusión

Si tienes Powerapps, te recomiendo que lo pruebes y el complemento en la tienda de Office que Powerapps tiene para Excel.

Los flujos de datos dentro de Powerapps cambian completamente el juego que solo hace que el CDM sea aún más relevante e importante para los usuarios comerciales con una interfaz amigable, de bajo código, para encontrar soluciones sólidas.

Toda esta solución podría crearse en cuestión de minutos. No pierdas más tus datos debido a una operación de actualización: la operación de actualización debería ser tu amigo, no tu enemigo.

Si no tienes Powerapps, aún puede usar la solución de Matt y es completamente válida. Es posible que deba sortear ciertos inconvenientes en la primera configuración y monitorear la calidad de tus datos manualmente, pero podrías manejarlo. Simplemente no lo recomendaría si es algo súper importante para su negocio, ya que recomendaría ir con algo como Powerapps que no tiene un alto costo de implementación o mantenimiento.

7 Comments

  1. Cada vez más me sorprende estimado MIguel, Gracias por tomarse el tiempo de redacción para que podamos entender un poco más estas maravillosas herrmamientas. MI gran reconocimiento hacia usted.

  2. Hola! Miguel, genial, siempre he tenido este incoveniente, en mis tablas de carga en excel desde power Query, no mucho conozco acerca del tema de powerapps pero luce genial, ademas del articulo de Matt e Inke. Muchas gracias por la información. 🙂

  3. Cuando tuve este problema también se me ocurrió la idea de cargar una nueva tabla en power query utilizando la tabla inicial con las columnas agregadas manualmente, esto me ocasiona que tarde más la actualización por el reproceso.

    Sin embargo, también se me ocurrió crear una tabla a la derecha
    (dejé una columna en blanco para que no se mezclaran), enlazando id de la tabla inicial, agregar las nuevas columnas necesarias a la tabla 2, y luego combinar en la primera tabla las nuevas columnas de la tabla 2 usando el id como referencia.

    Tendría que identificar cual es la manera más eficiente.

    • También es válida! Y creo que es la recomendada por Curt del equipo de Power Query, pero también cae en el tema de que los datos se están re procesando con cada actualización lo cual podría añadirle más tiempo de espera.
      Lo ideal sería utilizar algo como lo mostrado en el artículo, donde se tiene el Power Query Online (dataflows) trabajando al unísono con PowerApps para brindarle al usuario esa capacidad de poder agregar nuevos datos a la tabla resultante / entidad

  4. Hola a todos, replique paso a paso el ejercicio y me arroja el siguiente error:
    Error al crear esta entidad. Detalles: SecLib::CheckPrivilege failed. User: d94bbafd-c870-e911-a971-000d3a18b4b9, PrivilegeName: prvCreateEntity, PrivilegeId: 341e3ebf-74b8-4335-84f3-7f617bb7d081, Required Depth: Basic, BusinessUnitId: f854e968-426e-e911-a9c0-000d3a1ad6d8, MetadataCache Privileges Count: 1619, User Privileges Count: 588.
    Si pueden ayudarme se lo agradecería.

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.