Miguel Escobar Publicada enero 19, 2020

Refrescado incremental para archivos en una carpeta o SharePoint – Power BI

Power BI

Hace unos años publiqué mis primeras impresiones en la actualización incremental de Power BI que solo estaba disponible para las licencias de Power BI Premium.

Toda la idea de actualización incremental es excelente:

  • Solo actualiza los datos que necesita – nunca más se necesita una actualización COMPLETA
  • Hace que tu fuente de datos funcione menos – para que no accedas a tu fuente de datos con costosas consultas que demoran mucho tiempo en ejecutarse y cargarse
  • Carretera a las ideas! – no tienes que esperar esas largas horas solo para que tu conjunto de datos se actualice

Para que el incremental funcione según lo previsto, tu fuente de datos, en cierto grado, puede manejar el plegado de consultas y la mayoría de las fuentes de datos estructuradas, como bases de datos y OData, pueden manejar esto con facilidad. ¿Qué hay de los archivos de una carpeta alojados localmente o en SharePoint?

Nota: Antes de continuar leyendo, solo quería decir que este es un tema avanzado no solo en Power BI, sino también en Power Query. Si tu o tu empresa necesita ayuda para configurar esto, puedes comunicarte con nosotros en info@poweredsolutions.co para solicitar un presupuesto sobre cualquier tipo de asistencia que lo configure con la actualización incremental que mejor funcione para ti.

El escenario: archivos en una carpeta de SharePoint

Imagina que tenemos una carpeta que tiene subcarpetas. Una subcarpeta para cada año y dentro de esas carpetas anuales tenemos los datos para cada uno de esos años. Se parece a esto:

Lo que queremos hacer es conectarnos a esta carpeta y luego configurar una lógica de actualización incremental, de modo que solo refresquemos los datos del año actual o, en otras palabras, solo obtengamos datos nuevos y mantengamos intactos los datos de años anteriores. no estar en el proceso de actualización ya que agrega demasiado tiempo de procesamiento / actualización.

Esto significa que mientras estamos en enero de 2020, o cualquier mes del año 2020, solo actualizaremos los datos para 2020. Una vez que lleguemos al año 2021, solo comenzaremos a actualizar los datos. para 2021 y los datos para el año 2020 quedarán intactos.

En nuestro caso, tenemos archivos Excel en esas carpetas, pero tenemos tantos que se necesitan demasiados tiempo actualizarlos todos.

La solución: aprovechar el plegado de consultas y la evaluación diferida

Nota: Le recomiendo que leas estos pocos artículos si tienes la intención de implementar esto por tu cuenta para que puedas entender lo que estoy haciendo:

Lo que necesito hacer es bastante sencillo. Necesito usar una función de fuente de datos como base y luego crear mi función personalizada que tendrá la lógica correcta para impulsar la actualización incremental con los parámetros RangeStart y RangeEnd que requiere para el proceso de actualización incremental de Power BI.

Tenemos 2 opciones en términos de funciones de fuente de datos. Podemos usar la función de origen de datos «From Folder» (Folder.Files) para archivos locales o podemos usar los «SharePoint Files» (SharePoint.Files) para archivos alojados en SharePoint:

Para este ejemplo, usaré el conector de la carpeta de SharePoint / fuente de datos, ya que puedo rastrear lo que sucede detrás de escena y si la actualización incremental funciona correctamente o no.

Paso 1: crear la función personalizada

Esta es la función personalizada que he creado, pero la parte que impulsa la magia es en realidad el paso Filas filtradas (Filtered Rows):

#»Filtered Rows» = Table.SelectRows(Source, each List.Contains( List.Transform( Years, (x)=> Text.Contains( [Folder Path],x) ), true))

También es muy importante que los nombres de las carpetas se ingresen correctamente y que se tenga en cuenta la configuración que tenemos para la de nomenclatura de las carpetas.

Puedes cambiar esto a tus necesidades específicas, y he jugado con subcarpetas durante los meses y he creado otros escenarios donde hay una lógica de actualización incremental específicamente para los meses.

Nuevamente, puedes personalizar esto según tus necesidades y todo lo que necesita saber es un poco del lenguaje M.

Paso 2: cree los parámetros para la actualización incremental

Esta parte es bastante sencilla. Solo necesitas pasar por la ventana Parámetros para agregar nuevos parámetros como lo describí en mi primer artículo de impresiones para la actualización incremental en Power BI.

Paso 3: uso de tu nueva función personalizada

Ahora solo necesitas invocar esta función personalizada. En mi caso, mi ventana de Power Query se ve así:

En aras de las pruebas, solo para asegurarnos de que estamos obteniendo los datos que queremos, cambiemos el valor del parámetro RangeEnd para que sea 2/1/2019 (1 de febrero de 2019). Ahora ve al menú Herramientas (habilítalo desde las funciones de vista previa si aún no lo tienes) y selecciona la opción para Paso de diagnóstico (Diagnose Step):

Una vez que hagas clic en él, actualiza la consulta, lo que creará un nuevo conjunto de consultas que verá en el panel de consultas a la izquierda:

Ve al que dice «Detailed» (Detallado) en su nombre. Allí, ve al campo «Data Source Query»(Consulta de origen de datos) y ves todas las llamadas realizadas a la API de SharePoint. En mi caso, solo veo que los datos para el año 2018 y 2019 se solicitaron a la API. No el del año 2020, que es exactamente el comportamiento previsto que estaba buscando:

En aras de la limpieza, eliminamos todas estas consultas nuevas que fueron creadas por la herramienta de diagnóstico y también cambiemos el RangeEnd para que sea la fecha de hoy. En mi caso, escribo esta publicación de blog el 18 de enero. Para mí, se ve así:

Y todo lo que tienes que hacer ahora es presionar «Close and Load»(Cerrar y cargar) para cargar sus datos en su modelo de datos. Esta actualización inicial llevará un tiempo, pero estamos a solo unos pasos de tener una actualización incremental para nuestros archivos.

Paso 4: configurar la política de actualización incremental

Ahora que nuestros datos están en nuestro Modelo de datos (Data Model), necesitamos configurar la actualización incremental para esa tabla / consulta específica. Haz clic derecho en la consulta y selecciona la opción de actualización incremental:

Una vez dentro de la ventana de actualización incremental, necesito configurarla para almacenar solo los datos de los últimos 2 años y luego actualizar las filas en el último año (actual) «last».

Puedes cambiar absolutamente todo y personalizarlo según tus necesidades, pero asegúrate de personalizar también tu función y configuración en las carpetas.

En este punto, has finalizado todo lo que tiene que suceder en Power BI Desktop y ahora necesitas publicar tu archivo en el servicio.

Puedes seguir los pasos que se encuentran en la documentación oficial de Power BI aquí (url).

Probando nuestra actualización incremental

Una vez que el archivo ha sido publicado, continúa y realiza la actualización inicial del archivo. Utilice un conjunto de datos bastante pequeño, por lo que la actualización tardara solo unos segundos:

La forma en que puedo verificar que todo funcione según lo previsto es mediante el uso del punto final XMLA para este espacio de trabajo / conjunto de datos y ver cómo se crearon las particiones.

Comprobando desde SQL Server Management Studio, puedo ver que se crearon las 3 particiones:

No te dejes engañar por la cantidad de filas. Estoy usando los mismos archivos en cada carpeta, pero la columna que deberíamos mirar es «Last Processed» (Último procesado). Así es como se ven las particiones después de la creación inicial.

Ahora, espera unos minutos y luego actualiza el conjunto de datos varias veces más y verifica cómo se ven las particiones ahora:

¡FUNCIONA!

Comprueba cómo los valores para las particiones en el año 2018 y 2019 son exactamente las mismas, pero la marca de tiempo para la partición 2020 ha cambiado.

Conclusión

Este patrón se puede personalizar en cualquier repositorio de archivos como SharePoint o una carpeta local.

Si necesitas ayuda profesional para configurar esto, puedes contactarnos en info@poweredsolutions.co cuando quieras.

Te ayudaremos a crear una Política de actualización incremental que se ajuste a tus necesidades en casi cualquier fuente de datos.

Power BI
Subscribe
Notify of
guest
3 Comentario
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Fernando

Hola Miguel, se ve genial
Recomendarías esta solución para un conjunto de datos que supera 20 millones de registros anuales utilizando apenas una cuenta Profesional de PBI?

Toni Jurado

Hola! Alguna vez he utilizado esta técnica y me ha funcionado perfectamente, pero ahora me está reportando un error cuando la replico y actualizo el dataset en PowerBI Service. Tienes constancia de algún posible bug en las últimas actualizaciones de PowerBI Desktop o PowerBI Service?

error.jpg
Gabriel Rodriguez

Hola Miguel,

Este dato esta super y realmente es lo que necesito para aplicar en un informe que extrae la información alojada en una carpeta de SharePoint. De casualidad no tienes un video respecto a este ejemplo