• Blog
  • Productos
    • Cursos
    • Libros
    • Apps y Plugins
  • Academia
    • Ir a la Academia
    • Membresía Power Elite
    • Próximos Lanzamientos
Power SkillPower Skill
  • Blog
  • Productos
    • Cursos
    • Libros
    • Apps y Plugins
  • Academia
    • Ir a la Academia
    • Membresía Power Elite
    • Próximos Lanzamientos

Últimas Innovaciones de DAX: Eleva tu Juego en Power BI con las Funciones INFO DAX

23/12/2023 Posted by Miguel Caballero Lenguaje DAX


Descubre cómo las funciones INFO DAX en Power BI ponen a disposición de información acerca del modelo semántico gracias a la vista de consultas DAX.



En diciembre de 2023, se enriqueció el lenguaje DAX con 52 funciones adicionales. Estas incorporaciones, enfocadas en información, añaden una dimensión de especificidad única a DAX al facilitar el acceso a una diversidad de metadatos y estadísticas de los modelos tabulares en Power BI. Estas funciones, especializadas, proporciona detalles sobre la estructura y el almacenamiento de tablas, columnas, relaciones, medidas, y otros elementos estructurales del modelo.

Su utilidad se extiende a análisis avanzados y diagnósticos profundos en Power BI, simplificando tareas complejas como compartir, monitoreo y documentación de todas tus expresiones de medidas DAX de manera eficiente y efectiva.

Esta publicación se beneficia significativamente de la colaboración del MVP de Microsoft Francisco Mullor de Power BI SP. Su amplia experiencia como creador de contenido enriquece enormemente a la comunidad de habla hispana. La calidad y originalidad de sus aportes son, sin duda, de lo mejor.

Introducción a Funciones INFO DAX

Las 52 nuevas funciones INFO DAX corresponden a las DMVs (Dynamic Management Views) del tipo TSCHEMA. Esto indica que estas funciones DAX abarcan solo un subconjunto de todas las sentencias DMV disponibles. Por supuesto, esto no es algo negativo, pero sí sugiere la posibilidad de que este grupo de funciones DAX podría ampliarse en el futuro.

— ¿Qué es una sentencia o consulta DMV?

Para aterrizar y no dejar cabos sueltos, entendamos brevemente ¿Qué es una DMV?.

Las Dynamic Management Views (DMV) son como ventanas especiales en un edificio grande y complejo, que es tu base de datos SQL. Imagina que cada ventana te permite mirar una habitación diferente: una puede mostrarte cómo están organizados los muebles (tablas y columnas), otra te permite ver cómo se conectan las habitaciones entre sí (relaciones), y otra te da una idea de cuánta gente está en cada habitación en un momento dado (rendimiento de la base de datos).

Consulta DMV Conceptualmente

Que en DMV sería algo así:

Ilustración de Consultas DMV

Así como mirar por estas ventanas te da una mejor comprensión del edificio sin tener que recorrerlo todo, las DMVs te permiten entender y monitorear tu base de datos SQL de forma rápida y eficiente, sin necesidad de sumergirte en los detalles técnicos.

— Primer Acercamiento

La idea de dominar 52 nuevas funciones INFO DAX puede resultar intimidante al principio, pero te sorprenderá saber que su sintaxis es sorprendentemente accesible. Cada función inicia con el término INFO, seguido por un punto (.) y el nombre específico que identifica el metadato del modelo que deseas explorar. En esencia, estas funciones se estructuran de manera intuitiva como INFO.X, donde X es el nombre personalizado que define el tipo de información que buscas.

Lo más interesante es que estas funciones se caracterizan por su simplicidad, ya que no requieren ningún parámetro, adicionalmente, todas retornan una tabla como resultado, es decir, las vamos a utilizar en consultas.

Si deseas conocer estas funciones un poco más a fondo, en Cartas DAX ya hemos creado las páginas dedicadas a estas funciones.

Considera, por ejemplo, la siguiente expresión de consulta DAX con la función INFO DAX INFO.EXPRESSIONS:

                1 | EVALUATE2 | INFO.EXPRESSIONS ( )            
lenguaje DAX Logo Cartas DAX

Esta función genera una tabla detallando todas las consultas de Power Query. En ella, la columna [Name] indica el nombre de cada consulta, mientras que [Expression] revela la consulta específica escrita en el lenguaje M.

Resultado de INFO.EXPRESSIONS()

Por supuesto, hay muchas otras columnas que considerar; la imagen presentada muestra solo una selección de ellas. Es importante destacar que el resultado exacto depende del modelo específico con el que se trabaje. Las columnas que retorna la función INFO.EXPRESSIONS incluyen:

  • [ID]
  • [ModelID]
  • [Name]
  • [Description]
  • [Kind]
  • [Expression]
  • [ModifiedTime]
  • [QueryGroupID]
  • [ParameterValuesColumnID]
  • [MAttributes]
  • [LineageTag]
  • [SourceLineageTag]

La función INFO DAX INFO.EXPRESSIONS se corresponde con la consulta DMV:

                1 | select * from $SYSTEM.TMSCHEMA_EXPRESSIONS            
lenguaje DAX Logo Cartas DAX

Funciones INFO DAX con Otras Funciones del Lenguaje DAX

Es importante señalar que no estamos limitados únicamente a las funciones INFO DAX en su uso aislado; todo el Lenguaje DAX está a nuestra disposición. Por ejemplo, si deseamos filtrar y quedarnos solo con las columnas Name y Expression, podemos lograrlo fácilmente utilizando la función SELECTCOLUMNS. Esto demuestra la versatilidad y la potencia de combinar distintas funciones de DAX.

                1 | EVALUATE2 | SELECTCOLUMNS ( 3 | 	INFO.EXPRESSIONS(),4 | 	"Nombre", [Name],5 | 	"Expresion M", [Expression]6 | )            
lenguaje DAX Logo Cartas DAX

Qué tal si ahora deseamos identificar únicamente aquellas consultas de Power Query que exceden los 1000 caracteres, un criterio útil para destacar consultas de mayor complejidad. Esta tarea se simplifica con DAX, combinando las funciones SELECTCOLUMNS, LEN y FILTER. Esta integración de funciones nos permite no solo aislar las consultas más extensas, sino también ofrecer una visión más precisa de su estructura y complejidad.

                 1 | EVALUATE 2 |     VAR SeleccionDeColumnasyCreacionDeColumna =  3 |         SELECTCOLUMNS (  4 |             INFO.EXPRESSIONS ( ), 5 |             "Nombre", [Name], 6 |             "Expresion M", [Expression], 7 |             "N_Caracteres", LEN ( [Expression] ) 8 |         ) 9 |     VAR TablaFiltrada = 10 |         FILTER ( 11 |             SeleccionDeColumnasyCreacionDeColumna, 12 |             [N_Caracteres] >= 1000 13 |        )14 |     RETURN15 |         TablaFiltrada16 | ORDER BY 17 |     [N_Caracteres] DESC            
lenguaje DAX Logo Cartas DAX

Documentación y/o Seguimiento

El método clásico de copiar y pegar ofrece una solución rápida. Es decir, podemos copiar fácilmente el resultado de nuestra expresión de consulta en el botón de parte superior derecha:

Copiar resultado de Consulta DAX

Ahora podríamos dirigiremos a Especificar datos. Para ello, accederemos a la pestaña Inicio, nos ubicaremos en el grupo Datos y seleccionaremos el comando Especificar Datos. En este lugar, podremos pegar el resultado obtenido de nuestra expresión de consulta.

Pega en Especificar Datos

Sin embargo, al pegar los datos, podemos enfrentarnos a un inconveniente: los saltos de línea en nuestras expresiones de Lenguaje M pueden ser malinterpretados como el comienzo de filas independientes. Esta interpretación errónea es la razón por la que, en la imagen anteriores, aparentemente aparecen más de 22 filas, a pesar de que la consulta DAX arroja sólo 3 filas.

Por cierto si nos vamos a Excel, el problema persiste:

Pegar resultado de Consulta DAX en Excel

Si bien el método de copiar y pegar es sencillo, también presenta inconvenientes significativos. Además de ser un proceso manual y poco dinámico, implica que cualquier nueva medida requiere repetir casi todo el procedimiento. A esto se suma el problema de los saltos de línea en las expresiones DAX. Dado que formatear adecuadamente estas expresiones para una lectura clara es fundamental, es poco probable evitar completamente los saltos de línea

En suma dos limitaciones:

  • Proceso manual de copiar y pegar
  • Expresiones DAX con saltos de línea son un inconveniente

En el blog de Power BI, Zoe Douglas presenta en el artículo: DAX query view introduces new INFO DAX functions, nos presenta una forma de zanjar este problema en desktop, conectándonos directamente al modelo de Power BI desktop desde Excel y ejcutar la consulta desde allí.

Conexión Directa a la Instancia de SSAS

Iniciemos abriendo un archivo de Excel en blanco. Después, nos dirigimos a la pestaña Datos y expandimos las opciones en Obtener y Transformar Datos. El siguiente paso es elegir Obtener Datos, continuar con Desde una base de datos y, finalmente, seleccionar SQL Server Analysis Services (Importación).

Conexión a SSAS importacióm

Al realizar esta acción, se abrirá una ventana que nos solicita dos datos esenciales.

Datos Requeridos para Conexión

Para determinar el nombre del servidor local, podemos utilizar Power BI Desktop. Dentro de la aplicación, en la vista del Modelo, nos dirigimos al Panel de datos y accedemos a la sección Modelo. Aquí seleccionamos Modelo Semántico y luego miramos en el Panel de propiedades la sección que indica Servidor. En la parte inferior de este panel, se mostrará el nombre del servidor, usualmente en el formato localhost:xxxxx, donde xxxx es un número variable. Este nombre se puede copiar directamente utilizando el botón de copia provisto.

Obtener nombre del servidor local

Una vez copiado, pegamos el nombre del servidor en la casilla correspondiente de la ventana en Excel.

Proporcionando el Servidor

Artículo Actualmente en Construcción …

Otras Funciones INFO DAX

La función INFO DAX que nos permite obtener la información de las medidas en nuestro modelo semántico es INFO.MEASURES:

                1 | EVALUATE2 |     INFO.MEASURES ( )            
lenguaje DAX Logo Cartas DAX

— Su resultado es el siguiente

Resultado de INFO.MEASURES

Las columnas que arroja esta consulta son las siguientes:

  • [ID]
  • [TableID]
  • [ExplicitName]
  • [InferredName]
  • [ExplicitDataType]
  • [InferredDataType]
  • [DataCategory]
  • [Description]
  • [IsHidden]
  • [State]
  • [IsUnique]
  • [IsKey]
  • [IsNullable]
  • [Alignment]
  • [TableDetailPosition]
  • [IsDefaultLabel]
  • [IsDefaultImage]
  • [SummarizeBy]
  • [ColumnStorageID]
  • [Type]
  • [SourceColumn]
  • [ColumnOriginID]
  • [Expression]
  • [FormatString]
  • [IsAvailableInMDX]
  • [SortByColumnID]
  • [AttributeHierarchyID]
  • [ModifiedTime]
  • [StructureModifiedTime]
  • [RefreshedTime]
  • [SystemFlags]
  • [KeepUniqueRows]
  • [DisplayOrdinal]
  • [ErrorMessage]
  • [SourceProviderType]
  • [DisplayFolder]
  • [EncodingHint]
  • [RelatedColumnDetailsID]
  • [AlternateOfID]
  • [LineageTag]
  • [SourceLineageTag]

Dentro del amplio abanico de 41 columnas disponibles, podríamos enfocarnos específicamente en [Name], [Expression] y [TableID]. La columna [TableID] revela la tabla donde se ubica la medida, no obstante, no dice el nombre en sí.

                1 | EVALUATE2 |     SELECTCOLUMNS (3 | 		INFO.MEASURES ( ),4 | 		"Nombre", [Name],5 | 		"Expresion", [Expression],6 | 		"ID",[TableID]7 | 	)            
lenguaje DAX Logo Cartas DAX

Por lo previo, debemos integrar este resultado con el resultado de otra función INFO DAX, para así, desentrañar el nombre concreto de la tabla. La función INFO.TABLES nos proporciona una variedad de columnas, incluyendo el [ID] y el nombre de la tabla en [Name]. Por lo tanto, nos centraremos exclusivamente en las columnas [ID] y [Name], que son fundamentales para nuestro objetivo:

                1 | EVALUATE2 | 	SELECTCOLUMNS (3 | 		INFO.TABLES ( ),4 | 		"ID", [ID],5 | 		"NombreTabla", [Name]6 | 	)            
lenguaje DAX Logo Cartas DAX

Ahora, podemos fusionar estos dos conjuntos de resultados en una única expresión de consulta, utilizando variables para mayor claridad de la expresión DAX. Para combinar estos datos, emplearemos la función NATURALLEFTOUTERJOIN. Esta función une dos tablas: una tabla izquierda (primer parámetro) y una tabla derecha (segundo parámetro), emparejando las columnas con nombres idénticos en ambas tablas. El resultado final incluye todos los registros de la tabla izquierda (primer parámetro), complementados con la información correspondiente de la tabla derecha (segundo parámetro) donde haya coincidencias.

                 1 | EVALUATE 2 |     VAR MedidaEnElModelo = 3 | 		SELECTCOLUMNS ( 4 | 			INFO.MEASURES ( ), 5 | 			"Nombre", [Name], 6 | 			"Expresion", [Expression], 7 | 			"ID",[TableID] 8 | 		)	 9 | 	VAR InformacionDeTablas	=10 | 		SELECTCOLUMNS (11 | 			INFO.TABLES ( ),12 | 			"ID", [ID],13 | 			"NombreTabla", [Name]14 | 		)15 | 	VAR Combinacion = 16 | 		NATURALLEFTOUTERJOIN ( MedidaEnElModelo, InformacionDeTablas )17 | 	RETURN18 | 		Combinacion            
lenguaje DAX Logo Cartas DAX

— El resultado es el siguiente:

Resultado

Visualización del Resultado

Integración con Power Automate

Vamos a abordar en estos puntos uno por uno con ayuda de un integrante del Power Platform: Power Automate.

Share
2

You also might be interested in

Revoluciona Tu App: Crea un Carrusel en Power Apps con Power Fx

Mar 12, 2024

Crea Mediante una Galería Horizontal en Power Apps un Carrusel de Prodcutos Paso por Paso con Apoyo de Power Fx y Controles Básicos.

¿Desbancará un Lenguaje de Programación Natural a Python en Popularidad?

Oct 31, 2023

La Evolución Incesante: Del Código a la Conversación. ¿Python no[...]

Desvelando el Power Query No Documentado: List.ReplaceValue en Lenguaje M

Nov 14, 2023

Descubre los secretos ocultos de Power Query con nuestro artículo sobre List.ReplaceValue en Lenguaje M. Sumérgete en un mundo de posibilidades no documentadas y aprende a transformar tus datos como nunca antes. ¡Un viaje fascinante te espera!

Nuevo Mensaje!

No estamos disponibles en estos momentos, por favor déjanos un mensaje, te responderemos lo antes posible, ¡Gracias!

Envíar Mensaje
Academia de Power Skill ¡Quiero ir Ahora!

Información de Contacto

  • Power Skill
  • Coworking ocasional: HubBog
  • (+57) 313 353 47 56
  • excelfreebymcs@gmail.com
  • https://powerskill.tech/

Social Icons Widget

Copyright © 2023 - 2025 | Power Skill & Power Skills • Todos los derechos reservados.

  • Blog
  • Productos
    • Cursos
    • Libros
    • Apps y Plugins
  • Academia
    • Ir a la Academia
    • Membresía Power Elite
    • Próximos Lanzamientos