Función DAX ESTADÍSTICAS DE COLUMNAS En LuckyTemplates

Función DAX ESTADÍSTICAS DE COLUMNAS En LuckyTemplates

Me gustaría continuar explorando los usos dinámicos de la función DAX COLUMNSTATISTICS(): una función DAX nueva, casi completamente indocumentada, agregada a LuckyTemplates en agosto de 2021 que tiene algunos aspectos únicos con los que creo que será muy interesante familiarizarse. . Puedes ver el video completo de este tutorial en la parte inferior de este blog.

Experimenté mucho y aprendí algunas cosas nuevas realmente interesantes sobre cómo funciona esta función y qué se puede hacer con ella. En mi primer blog sobre esta función, hablé sobre algunos usos estáticos. Hoy, voy a hablar sobre algunos usos dinámicos realmente sorprendentes de la función en formas en las que incluso IntelliSense aún no está actualizado.

Tabla de contenido

Cómo funciona la función DAX ESTADÍSTICAS DE COLUMNAS

Para cada tabla y campo en su modelo de datos, COLUMNSTATISTICS produce una tabla de seis campos adicionales que tienen un nombre de tabla, un nombre de columna, valores mínimos y máximos para la columna, cardinalidad y una longitud máxima. Eso no parece una gran cantidad de datos, pero hay mucho que puedes hacer con eso.

Función DAX ESTADÍSTICAS DE COLUMNAS En LuckyTemplates

Los datos que estoy usando actualmente son solo el conjunto de datos de práctica para las herramientas externas de LuckyTemplates. Es un modelo de datos relativamente simple con cinco tablas de dimensiones, una tabla de hechos y una tabla de medidas . Un modelo como este no es tan difícil de seguir, pero un modelo complejo necesita un monitoreo de conjunto de datos mucho más complejo.

Los metadatos de un conjunto de datos complejo se vuelven mucho más importantes en términos de observar la cardinalidad, que es la cantidad de valores únicos dentro de un campo. Tiene una gran influencia en el tamaño de su modelo, así como potencialmente en la velocidad de procesamiento.

Además, mientras crea un modelo, es útil saber no solo el número de tablas, sino también el rango de fechas de esas tablas. A medida que construye su tabla de fechas, se asegura de cubrir el rango completo de datos en su tabla de hechos.

Entonces, para este ejemplo, intentemos agregar una tabla a este modelo de datos en el que estoy trabajando. En Power Query, iremos a New Source , luego a Blank Query . Y luego, iremos al Editor avanzado y simplemente pegaré una función que se llama List.Dates . Vamos a usar eso para crear una tabla de la cardinalidad de 10 000, por lo que son 10 000 fechas únicas.

Va a devolver una lista de 10.000 elementos y podemos convertirla en una tabla y luego cambiarle el nombre a esa tabla.

Podemos cambiar el campo hasta aquí hasta la fecha. Y si hacemos clic en Cerrar y aplicar, veremos que nuestra narrativa inteligente se actualizará dinámicamente, sin tener que actualizar todo el modelo (como hacíamos en el pasado).

La razón por la que esto es totalmente dinámico es que lo estamos haciendo todo con medidas. Lo interesante es que muestra muchos errores, y la función es tan nueva que IntelliSense no la detecta correctamente, pero en realidad funciona.

Vayamos a Tabular Editor 3, que creo que es la mejor manera de descubrir qué están haciendo realmente las complejas medidas DAX.

Recuerde que la consulta DAX devuelve tablas en lugar de escaladores. Entonces, si tomamos esta medida y la copiamos en una consulta DAX , muestra un error porque el resultado aquí todavía es un escalador. Podemos usar el enfoque de depuración de reemplazar ese resultado de RETORNO con componentes individuales de la medida.

En este caso, lo reemplazaremos con ColStats , que lo que hemos hecho en la parte superior es simplemente colocar la función COLUMNSTATISTICS DAX en una variable. Con eso, obtenemos exactamente lo que esperábamos, que es la tabla de estadísticas de columna estándar.

Y ahora, solo queremos mirar la columna Nombre de la tabla, y queremos sacar los distintos valores de eso y contarlos. Ese será el número de tablas en nuestro modelo de datos.

Primero, seleccionaremos columnas en nuestra tabla ColStats y solo devolveremos ese campo de nombre de tabla. Por lo general, en una medida DAX o una consulta DAX, desea devolver un nombre de campo con el nombre de la tabla delante. Pero en este caso, no sabemos a qué hace referencia el nombre de tabla apropiado porque solo existe virtualmente. No parece aceptar el nombre de la variable como el nombre de la tabla.

Entonces, en este caso, tenemos que quedarnos con lo que parece una medida, pero en realidad es una referencia de columna sin la referencia de tabla delante de ella. Y eso todavía funciona a pesar de que es confuso en la nomenclatura. Ahora, si reemplazamos esta declaración RETURN con nuestro TabCol , obtenemos exactamente lo que esperábamos, que es ese campo de tablas modelo.

Y luego, para el resultado, solo estamos contando las distintas columnas de la tabla. Entonces, si reemplazamos esto con DISTINCT(TabsCol) , obtenemos nuestras siete tablas.

Ahora echemos un vistazo a la cardinalidad más alta en la tabla de cardinalidad más alta y veamos cómo las obtuvimos. En realidad, este es un patrón importante que puede usar para muchas cosas diferentes en las que está buscando, no solo el número máximo, sino el atributo máximo asociado con ese número.

Así que echemos un vistazo a la MaxCardinalidad . Aunque se trata de un escalador, podemos convertirlo en una tabla de una celda con solo colocar corchetes alrededor. Y si llegamos a cinco, veremos que ese es el valor de cardinalidad de 10,000.

Entonces ahora la pregunta es, ¿cómo tomamos esto y devolvemos la tabla asociada con esa cardinalidad?

Para hacer eso, usamos este patrón muy común usando . Luego lo copiamos a nuestra declaración RETURN y nos dará la fila que esperábamos obtener, que es la columna de 10,000 fechas. En lugar de obtener una fila (porque es TOPN), obtenemos dos porque hay un empate.

Lo que ColStats también hace es crear, para cada tabla, un índice en una fila de índice oculta llamada RowNumber , siendo ese un identificador único para cada fila de la tabla. De modo que MaxCardinality siempre se reflejará en RowNumber si ese es un identificador único.

Entonces, realmente no importa que tengamos dos filas porque lo que estamos viendo es el Max of Table Name. Y ese máximo está ahí solo para devolver algún valor que, de lo contrario, sería solo una columna desnuda. Pero necesitamos poner algo de agregación alrededor de eso, y en este caso, usamos .

Luego, si colocamos MaxCardinality en nuestra instrucción RETURN y lo ponemos entre paréntesis para devolver una tabla en lugar de un escalador, devolverá el valor de Prueba.

Este patrón TOPN DAX es un patrón realmente bueno para recordar cuando desea calcular básicamente un valor máximo o mínimo, y luego devolver un atributo asociado con ese mínimo o máximo.


Optimice las fórmulas de LuckyTemplates con DAX avanzado
Análisis de medidas DAX: desglose de medidas DAX largas
Medidas DAX en LuckyTemplates con bifurcación de medidas

Conclusión

Le brindé el enfoque general y el contexto que podemos usar en términos de que haga el mejor uso de la función DAX COLUMNSTATISTICS de una manera dinámica. Ser capaz de rastrear esto dinámicamente en términos de un modelo complejo, creo que esta función tiene un gran valor.

Cuanto más experimentemos con la función COLUMNSTATISTICS y con su capacidad para manejar metadatos dinámicamente dentro de DAX, creo que más usos interesantes encontraremos. Entonces, si ya encontró algunos usos interesantes para esta función DAX, hágamelo saber en los comentarios a continuación.

¡Mis mejores deseos!


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber