Funciones de información DAX

Funciones de información DAX

Esta mañana hemos desayunado con la noticia de la aparición de nuevas funciones de información en DAX. Y vamos a desgranar superficialmente qué podemos y qué no podemos hacer con estas funciones y qué valor tienen.

Las podemos encontrar ya descritas en la gran guía de DAX de SQLBI y son todas aquellas funciones que comienzan por INFO.
Information – DAX Guide

¿Qué particularidad tienen?

Pues que leen directamente la información de las tablas DMV del modelo semántico.

Por ejemplo

EVALUATE INFO.MEASURES() va a devolver la información que se almacena en la tabla $SYSTEM.TMSCHEMA_MEASURES. Concretamente dice DAXGUIDE:
«Devuelve una lista de todas las medidas del modelo actual con columnas que coinciden con el conjunto de filas del esquema para los objetos de medida»

Esta información hasta ahora no podíamos obtenerla con licencia pro salvo a través de herramientas de terceros como DAX Studio

A partir de ahora, tenemos acceso de manera nativa a través de consultas DAX en el propio Power BI Desktop de la siguiente forma:

Nos vamos a la nueva vista de consultas DAX y ponemos allí nuestra función, que como es una función de tabla simplemente necesitaremos usar EVALUATE. Ejecutamos y ya tenemos acceso a la tabla de medidas de la DMV de nuestro modelo semántico:

A partir de esta consulta podríamos sin ningún problema copiar los resultados como en DAX Studio y ya tendríamos nuestra tabla de medidas.

¿Qué no se puede hacer?

No se puede crear una tabla o una medida en el modelo para llevarnos la información físicamente al propio modelo:

Si presiono en nueva tabla y pongo allí la medida INFO.MEASURES() me va a devolver un error


Aquí el EVALUATE no tiene el más mínimo sentido ya que estamos directamente creando una tabla con una función de Tabla.

Pensando entonces qué aplicación podríamos darle más automatizada, recordé que la API de Power BI permite lanzar consultas DAX desde hace algún tiempo y que existe un conector de Power Automate para ello. (¿No conocíais esta opción? — Pues es hora de explicarla).

Vamos a Power Automate a verlo… Dentro de mis limitaciones ya que la Power Platform no es mi especialidad, si es cierto que a todo lo relacionado con Power Automate y Power BI suelo sacarle muchísimo partido y este es uno de los casos.

Vamos a crear un flujo de nube instantáneo


Que desencadenaremos manualmente

Creamos una nueva acción y entre las acciones de Power BI tenemos la de ejecutar una consulta con un conjunto de datos

Aquí nos pide:
– Área de trabajo donde se encuentra el modelo semántico

– Conjunto de Datos sobre el que lanzaremos la consulta

– Texto de la consulta. Vamos a usar la consulta que pegué esta mañana en Linkedin que no nos trae toda la tabla sino una serie de campos que podemos configurar como queramos, en este caso hacemos un join con la información de tablas para traernos también la tabla donde se encuentra la medida:

EVALUATE
VAR _medidas = SELECTCOLUMNS(
INFO.MEASURES(),
«Medida»,
[Name],
«Descripcion»,
[Description],
«Formula DAX»,
[Expression],
«IdTabla»,
[TableID]
)
VAR _tablas = SELECTCOLUMNS(
INFO.TABLES(),
«IdTabla»,
[ID],
«Tabla»,
[Name]
)
RETURN
NATURALINNERJOIN(
_medidas,
_tablas
)

Esto nos va a servir para cualquier modelo, simplemente cambiando en la cajita el Conjunto de Datos

Ya simplemente con estas dos cajas podemos guardar nuestro flujo y ejecutarlo:

Esto ya nos va a devolver como salida el conjunto de las Medidas del modelo:

Pero claro esto hay que moverlo a algún sitio para consumirlo.

Una opción sencilla:
Podemos utilizar la acción: Crear tabla CSV para transformar esa salida de la API en un CSV poniendo como Origen la salida de la caja anterior:

Es muy sencillo desde fx, contenido dinámico y te muestra todo lo que se puede escoger de las cajas anteriores. En este caso cogemos primeras filas de la tabla, pero no os preocupéis que las coge todas.
Si usásemos directamente el body, como no tiene el formato adecuado daría error y no es hora de complicarse la vida formateando. Seguro que hay mejores formas si se es experto en Power Automate pero yo no lo soy y esta funciona.

Si ejecutamos ahora el flujo ya la salida de esta tercera caja es una tabla csv

Ya por último sólo nos queda guardar esta información donde queramos, por ejemplo Sharepoint.

Busco el conector Crear Archivo de sharepoint:

Y rellenamos los datos de destino con el contenido del archivo de la salida de Crear Tabla csv

Y esto automáticamente nos crea nuestro csv con las medidas

Igual que lo hemos llevado a csv esos datos los podemos llevar donde queramos ya es cuestión de imaginación y conocimiento.

A partir de aquí ya tenéis todo lo necesario para poder obtener toda la documentación de vuestros modelos publicados a través de las tablas DMV y con power automate y el conector de ejecución de consultas DAX de la API de Power BI.

Por último recordar que la limitación de la API es de 100.000 filas o 1.000.000 de valores y 120 consultas por minuto/usuario.

Y que en la documentación ya desactualizada pone que no soporta consultas DMV, aunque realmente es que no hacemos una consulta DMV sino una consulta DAX a las tablas DMV gracias a esta fantástica nueva funcionalidad

Francisco Mullor Cabrera

Deja una respuesta