Examinar el contexto de filtro

Completado

La función VALUES de DAX permite que las fórmulas determinen qué valores se encuentran en el contexto de filtro.

La sintaxis de la función VALUES es la siguiente:

VALUES(<TableNameOrColumnName>)

La función requiere pasar una referencia de tabla o una referencia de columna. Cuando se pasa una referencia de tabla, devuelve un objeto de tabla con las mismas columnas que contienen filas para lo que está en el contexto de filtro. Cuando se pasa una referencia de columna, devuelve una tabla de una sola columna con valores únicos que se encuentran en el contexto del filtro.

La función siempre devuelve un objeto de tabla y es posible que una tabla contenga varias filas. Por lo tanto, para comprobar si un valor específico está en el contexto de filtro, la fórmula debe comprobar primero que la función VALUES devuelve una sola fila. Dos funciones pueden ayudarle a realizar esta tarea: las funciones HASONEVALUE y SELECTEDVALUE de DAX.

La función HASONEVALUE devuelve TRUE cuando una referencia de columna determinada se ha filtrado a un valor único.

La función SELECTEDVALUE simplifica la tarea de determinar lo que puede ser un único valor. Cuando la función pasa una referencia de columna, devolverá un valor único, o cuando haya más de un valor en el contexto de filtro, devolverá BLANK, o un valor alternativo que se pasa a la función.

En el ejemplo siguiente, usará la función HASONEVALUE. Agregue la siguiente medida, que calcula la comisión de ventas, a la tabla Sales. Tenga en cuenta que, en Adventure Works, la tarifa de la comisión es el 10 % de los ingresos de todos los países y regiones, excepto Estados Unidos. En Estados Unidos, el personal de ventas gana una comisión del 15 %. Dé formato a la medida como moneda con dos posiciones decimales y, luego, agréguela a la tabla que se encuentra en la Página 3 del informe.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Una imagen muestra un objeto visual de tabla con tres columnas: Region, Revenue y Sales Commission. Se muestran diez filas de regiones y un total. La comisión total de ventas es BLANK.

Tenga en cuenta que el resultado total de Sales Commission es BLANK. La razón es que hay varios valores en el contexto de filtro para la columna Country de la tabla Sales Territory. En este caso, la función HASONEVALUE devuelve FALSE, lo que da lugar a que se multiplique la medida Revenue por BLANK (un valor multiplicado por BLANK es BLANK). Para generar un total, debe usar una función de iterador, que se explica más adelante en este módulo.

Otras tres funciones que puede usar para probar el estado del filtro son:

  • ISFILTERED: devuelve TRUE cuando una referencia de columna pasada se filtra directamente.
  • ISCROSSFILTERED: devuelve TRUE cuando una referencia de columna pasada se filtra indirectamente. Una columna tiene un filtro cruzado cuando un filtro aplicado a otra columna de la misma tabla o de una tabla relacionada afecta a la columna de referencia filtrándola.
  • ISINSCOPE: devuelve TRUE cuando una referencia de columna pasada es el nivel de una jerarquía de niveles.

Vuelva a la Página 2 del informe y, a continuación, modifique la definición de la medida Revenue % Total Country para comprobar que la columna Region de la tabla Sales Territory está en el ámbito. Si no está en el ámbito, el resultado de la medida debe ser BLANK.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

Una imagen muestra un objeto visual de matriz titulado Reseller Revenue tiene Group, Country y Region agrupados en filas, además de los resúmenes de Revenue, Revenue % Total Region, Revenue % Total Country y Revenue % Total Group. Los valores BLANK se encuentran en los resúmenes de Revenue % Total Country.

En el objeto visual de matriz, observe que los valores de Revenue % Total Country ahora solo se muestran cuando una región está en el ámbito.