Para dominar DAX (y ser un usuario avanzado en Power BI y Power Pivot ), hay que conocer tres secretos fundamentales.
Tanto Power BI como Power Pivort hacen uso de una herramienta muy poderosa que es DAX. Podríamos decir que DAX es el motor de estas dos herramientas por lo tanto conocer DAX es primordial si queremos ser un usuario, al menos, intermedio.
Es realmente difícil separar DAX de cualquiera de estas herramientas.
Pero cuáles son los tres principales aspectos que debemos conocer de DAX para poder decir que somos un usuario avanzado.
En primer lugar y como tema fundamental, tenemos los contextos.
Cualquier formula en DAX depende de ellos, por lo tanto, comprender los contextos es un tema principal.
Y qué son los contextos. Cuando montamos una formula en DAX, esta formula no funciona como en Excel, atendiendo a las filas y columnas involucradas en la formula, simplemente porque esto no existe. En DAX lo que indicamos son campos de tablas, un simple sum(tabla[campo]) hace referencia al valor del campo en función de donde se esté mostrando la fórmula. Por ejemplo, si esta formula la mostramos en una tabla donde en la fila tenemos una categoría, nos mostrará la suma de ese campo de esa tabla filtrada por esa categoría, sin embargo, si esta misma formula la mostramos en una tarjeta, donde no es afectada por ningún filtro de ningún tipo, mostrará la suma completa de esa columna para todos los valores de la tabla. Para dar otro ejemplo, si esa misma fórmula esta en una matriz donde tenemos una fila correspondiente a un campo y una columna correspondiente a otro campo, estos campos afectarán al resultado, dado que serán filtros de esa fórmula.
En segundo lugar, debemos comprender el funcionamiento del calcúlate.
El calculate tiene la capacidad de alterar los contextos y casi que es su principal función. El calculate tiene los siguientes parámetros: el primero es una expresión y el segundo es un filtro (y aquí podemos tener mas de un parámetro de filtro).
Pues estos filtros son los que alteran el contexto y se evalúan antes que ningún otro contexto. Por ejemplo si escibo un calculate(sum(tabla[campo]); tablaFecha[año] = 2020) esto nos traerá siempre los datos del año 2020, independientemente de dónde este la fórmula. Otro ejemplo sería calculate(sum(tabla[campo]); tablaCategorías[categoría] = categoriaX), nos traería en este caso los datos de esa categoría, con independencia de si en una fila o columna se hace referencia a otra. O sea el calculate, altera los contextos.
El tercer “secreto” que debemos saber, es que existen soluciones genéricas a temas complejos, pero muy usuales en DAX. Estas soluciones se llaman Patrones de DAX y están basados en lo que un señor muy famoso en el área d programación orientada a objetos escribió, hace ya unos cuantos años en un libro muy famoso llamado “patrones de diseño”, y el nombre de este autor es Eric Gamma, junto con Richard Helm, Ralph Johnson, and John Vlissides, con un prólogo de Grady Booch. ( ver: https://en.wikipedia.org/wiki/Design_Patterns ).