Cuando trabajamos con Power BI, si tenemos un origen con muchos datos y lo importamos, podemos llegar a tener un fichero pbix muy pesado, lo que influye a la hora de trabajar con el modelo y posteriormente en los despliegues, ya que tendríamos que desplegar el archivo de gran tamaño.

Normalmente el gran numero de datos lo tendríamos en la tabla de hechos, por lo que podemos aplicar un truquillo y trabajar con un subconjunto de datos de esta tabla.

Para realizar esto, vamos a trabajar modificando la query de obtención añadiendo un TOP N d y con el concepto de Query folding.

Power Query y Query folding

En Power Query, las expresiones se ejecutan por separado y una a una. Cada línea de código o expresión, tienen unos datos como entrada y otro conjunto de datos como salida.

Según la fuente de datos que se tenga, se puede aplicar plegado de consultas (Query folding) o no. Este concepto se basa en que se agrupan los pasos y se ejecutan todos de forma conjunta en la fuente de datos.

El problema de esto es que, por ejemplo, cuando el origen es un fichero plano, no es posible usar el plegado, pero en otros orígenes como una base de datos SQL relacionada, aplica a la perfección.

Para saber si el plegado de consultas aplica a nuestro origen, podemos hacer click derecho sobre uno de los pasos de nuestra query, y si tenemos habilitada la opción “ver consulta nativa” es que esta disponible. En esta opción podremos ver la consulta real que se lanza contra el origen.

Para mi ejemplo, he cargado la tabla de ventas de la base de datos de ejemplo AdventureWorks, que será mi tabla de hechos. Si vemos la consulta nativa:

Aplicando el Top N y parametrizando por entorno

Aplicamos el top N a nuestra query:

En mi caso, aplicare un top 10. Ahora si vemos de nuevo la query nativa, tenemos:

Ahora bien, cuando tengamos nuestro Power BI publicado, no vamos a querer tener aplicada la restricción del top. Estar quitando y poniendo, seria un poco engorroso, por lo que vamos a añadir un parámetro a nuestro report, de forma que podamos quitar y poner la restricción de una forma fácil.

El parámetro lo voy a llamar LocalReport, será de tipo booleano y por defecto le pondré el valor TRUE

Una vez creado, vamos a modificar la query para que, dependiendo del valor de la variable, apliquemos el top 10 o no.

Cambiamos esta línea:

Por:

Quedando la query completa así:

Para validar el numero de registros, he añadido una tarjeta con el count de la tabla:

De esta forma, vamos a trabajar con este subconjunto de datos y publicaremos nuestro report de pequeño tamaño. Una vez publicado, modificamos este parámetro en el portal de Power BI service, y una vez refresquemos el dataset, estaremos con nuestro informe publicado con el conjunto completo de datos.

Para ello vamos a los settings del dataset publicado y en parámetros, modificamos nuestro parámetro a False.

Una vez actualizado el dataset, accedemos al report y vemos de nuevo la tarjeta con el número de registros:

Evidentemente, debemos tener cuidado a la hora de aplicar el top, ya que, si aplicamos a varias queries que estén relacionadas, podemos tener perdidas de datos, pero me parece una buena solución para no trabajar con reports tan pesados.

Un saludo!!

Procesando…
¡Lo lograste! Ya estás en la lista.
Última modificación: junio 2, 2020

Autor

Comentarios

Comenta o responde a los comentarios

Tu dirección de correo no será publicada.