Trabajar con funciones DAX
La biblioteca de funciones DAX consta de cientos de funciones, y todas están diseñadas para lograr un objetivo específico.
Como DAX se originó con el complemento Power Pivot para Microsoft Excel 2010, hay más de 80 funciones disponibles que también se pueden encontrar en Excel. Eso fue una estrategia de diseño deliberada de Microsoft para garantizar que los usuarios de Excel puedan ser productivos rápidamente con DAX.
Sin embargo, hay muchas funciones que existen en Power BI, pero no en Excel, ya que son específicas para el modelado de datos:
- Funciones de navegación de relaciones
- Funciones de modificación del contexto de filtro
- Funciones iteradoras
- Funciones de inteligencia de tiempo
- Funciones de rutas
Sugerencia
Para buscar la documentación relacionada con una función DAX, escriba la palabra clave DAX en una búsqueda web, seguida del nombre de la función.
Para obtener más información, consulte la Referencia de funciones de DAX.
Funciones que se originan en Excel
En las secciones siguientes, hablamos de varias funciones útiles con las que es posible que ya esté familiarizado, ya que existen en Excel.
La función IF comprueba si se cumple una condición que se proporciona como primer argumento. Devuelve un valor si la condición es TRUE y otro distinto si es FALSE. La sintaxis de la función es la siguiente:
IF(<logical_test>, <value_if_true>[, <value_if_false>])
Sugerencia
Un argumento de función es opcional cuando la documentación lo muestra entre corchetes.
Si logical_test evalúa a FALSE y no se proporciona value_if_false, la función devuelve BLANK.
Hay muchas funciones de resumen de Excel disponibles, como SUM, COUNT, AVERAGE, MIN, MAX y muchas otras. La única diferencia es que, en DAX, se pasa una referencia de columna, mientras que en Excel se pasa un rango de celdas.
También están disponibles muchas funciones matemáticas, textuales, temporales, informativas y lógicas de Excel. Por ejemplo, esta es una pequeña muestra de funciones de Excel que están disponibles en DAX: ABS, ROUND, SQRT, LEN, LEFT, RIGHT, UPPER, DATE, YEAR, MONTH, NOW, ISNUMBER, TRUE, FALSE, AND, OR, NOT e IFERROR.
Funciones que no se originan en Excel
Dos útiles funciones DAX que no son específicas para el modelado y que no se originan en Excel son DISTINCTCOUNT y DIVIDE.
Función DISTINCTCOUNT
Puede usar la función DAX DISTINCTCOUNT para contar el número de valores distintos de una columna. Esta función es especialmente eficaz en una solución de análisis. Tenga en cuenta que el recuento de clientes es diferente del recuento de clientes distintos. Esto último no cuenta los clientes repetidos, por lo que la diferencia es "cuántos clientes" con respecto a "cuántos clientes distintos".
Función DIVIDE
Puede utilizar la función DAX DIVIDE para dividir. Debe pasar expresiones para el numerador y el denominador. Si lo desea, puede pasar un valor que represente un resultado alternativo. La sintaxis de la función DIVIDE es la siguiente:
DIVIDE(<numerator>, <denominator>[, <alternate_result>])
La función DIVIDE controla automáticamente los casos de división por cero. Si no se pasa un resultado alternativo y el denominador es cero o BLANK, la función devuelve BLANK. Cuando se pasa un resultado alternativo, se devuelve este resultado en lugar de BLANK.
Esta función es útil porque guarda la expresión para que no tenga que probar primero el valor de denominador. La función también está mejor optimizada para probar el valor del denominador que la función IF. La mejora del rendimiento es importante porque la comprobación de la división por cero es costosa. Además, el uso de la función DIVIDE da como resultado una expresión más concisa y elegante.
Sugerencia
Recomendamos que use la función DIVIDE siempre que el denominador sea una expresión que pueda devolver cero o BLANK. En caso de que el denominador sea un valor constante, se recomienda utilizar el operador de división (/), que se presenta más adelante en este módulo. En este caso, está garantizado que la división se realizará correctamente; además, la expresión funcionará mejor porque evitará pruebas innecesarias.