DAX para modelar con Excel 2016

Posted by anabisbe on abril 04, 2016
General

En esta versión, Excel 2016 hay mucho interés en potenciar los aspectos importantes para la creación y consumo de informes analíticos, DAX es uno de ellos.

Lenguaje de expresiones DAX

El lenguaje de expresiones DAX se utiliza para crear objetos (columnas calculadas y medidas) en modelos tabulares. Además, se emplea para consultar dichos modelos. Sobre DAX he escrito una miniserie, no es mucho; pero al menos, un comienzo. Los modelos tabulares son muy eficientes para basar en ellos informes analíticos, se pueden crear dentro de Power Pivot, en proyectos SQL Server Analysis Services Tabular y en la sección de modelado de Power BI.

Funciones DAX

DAX viene dotado en su versión para Excel 2016, de nuevas funciones. Hay muchas  funciones interesantes para estadísticas y tratamiento de fechas. Este nuevo lenguaje DAX se basa en el lenguaje de expresiones Excel y también en lenguajes de modelado de bases de datos transaccionales,  ya que se nutre de la experiencia de los usuarios y desarrolladores del mundo relacional en tratamiento de datos. Por eso, me llama mucho la atención, especialmente un grupo de funciones que implementa capacidades del modelo relacional transaccional, por ejemplo en T-SQL.

No le dedicaré tiempo, al menos las voy a mencionar agrupadas según su perfil, aunque se me ocurren algunos casos de uso, no me es posible desarrollarlos ahora.

  • Estadísticas como por ejemplo MEDIAN, MEDIANX, PERCENTILE.EXC, PERCENTILE.INC, PERCENTILEX.INC, PERCENTILEX.EXC
  • Tratamiento de cadena: CONCATENATEX
  • Tratamiento de fechas: DATEDIFF, CALENDAR, CALENDARAUTO
  • Tratamiento de datos geométricos: GEOMEAN, GEOMEANX
  • Cálculos: PRODUCT, PRODUCTX
  • Finanzas: XIRR, XNPV
  • Además: ISONORAFTER
  • Heredadas del modelo relacional: GROUPBY, CURRENTGROUP, NATURALINNERJOIN, NATURALLEFTOUTERJOIN, SELECTCOLUMNS, SUMMARIZECOLUMNS, EXCEPT, INTERSECT, UNION, ISEMPTY, SUBSTITUTEWITHINDEX

Funciones MIN y MAX

Hay una diferencia en estas funciones. A partir de Excel 2016 y Power BI ambas están sobrecargadas.

Hasta Excel 2013, admiten un parámetro, que se corresponde con un valor de columna y devuelve el valor máximo o mínimo de esa columna. En cualquier caso, solo evalúa valores numéricos, omitiendo valores lógicos y texto como se muestra en la siguiente imagen.

max2013

En Excel 2016, admiten dos parámetros. Si se pasa un único parámetro cumple la misma funcionalidad; pero si se pasan dos, realiza la comparación entre ambos y devuelve el mayor o menor valor, según sea la función.

La imagen muestra la sobrecarga de estas funciones en Excel 2016.

max2016

Trabajo con Variables en expresiones DAX

Definitivamente la posibilidad de crear variables y emplearlas en expresiones DAX es una novedad, es un paso enorme y habrá que dedicarle más tiempo. De momento, podemos ver un ejemplo de uso en este artículo de SQLBI, por cierto es un sitio más que recomendado para todos los temas relacionados con DAX.

Cambio de nombre inteligente para columnas referenciadas

Otra novedad, otra alegría para el cuerpo 🙂

Veamos lo que ocurre cuando cambiamos el nombre a una columna que está siendo utilizada en un cálculo, en este caso, en una medida, en Excel 2013

image72 image73

Hay que ir a la expresión DAX, a esta y a todas que utilicen esta columna, ¡¡ qué manera de sufrir !!, especialmente si estamos heredando un modelo. ¿Y en Excel 2016?

image75 image74

¡¡¡ Se ha actualizado !!! Es muy importante, es muy útil, es muy grande el salto que se ha dado, gracias !!

Esto es desde dentro de la ventana Power Pivot, no he probado lo que ocurre con la opción de crear y modificar medidas desde la ficha Power Pivot en el menú Excel.

Y ya que me estoy pasando a la hoja Excel 2016, ¿qué tal si vemos, en la próxima entrega, las novedades en la tabla dinámica?, algunas de ellas están muy vinculadas al modelo de datos.

Este artículo forma parte de la serie dedicada a MS Office Excel 2016.

Tags: , ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *