Realizar la transición de contexto

Completado

¿Qué ocurre cuando se evalúa una expresión de medida o una medida en el contexto de fila? Este escenario puede producirse en una fórmula de columna calculada o cuando se evalúa una expresión en una función de iterador.

En el ejemplo siguiente, agregará una columna calculada a la tabla Customer para clasificar los clientes en una clase de fidelidad. El escenario es sencillo: cuando los ingresos producidos por el cliente son inferiores a 2500 $, el cliente se clasifica como Bajo; de lo contrario, se clasifica como Alto.

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

En la Página 4 del informe, agregue la columna Customer Segment como la leyenda del gráfico circular.

Una imagen muestra un objeto visual de un gráfico circular titulado Ingresos por segmento de cliente. Solo hay un segmento: Alto, que representa el 100 % de los datos.

Tenga en cuenta que solo existe un valor Customer Segment. La razón es que la fórmula de la columna calculada genera un resultado incorrecto: A cada cliente se le asigna el valor Alto porque la expresión SUM(Sales[Sales Amount]) no se evalúa en un contexto de filtro. Por consiguiente, cada cliente se evalúa en la suma de cada columna Importe de venta en la tabla Sales.

Para forzar la evaluación de la expresión SUM(Sales[Sales Amount])para cada cliente, debe tener lugar una transacción de contexto que aplique los valores de la columna de contexto de fila al contexto de filtro. Puede realizar esta transacción mediante la función CALCULATE sin pasar expresiones de filtro.

Modifique la definición de la columna calculada para que genere el resultado correcto.

Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

En el objeto visual de gráfico circular, agregue la nueva columna calculada al cuadro de Leyenda y compruebe que se muestren dos segmentos circulares.

Una imagen muestra un objeto visual de un gráfico circular titulado Ingresos por segmento de cliente. Hay dos segmentos: Alto y Bajo. Alto representa el 76 % de los datos y Bajo representa el 24 %.

En este caso, la función CALCULATE aplica los valores de contexto de fila como filtros, conocidos como transición de contexto. Para ser precisos, el proceso no funciona de la misma manera cuando en la tabla hay una sola columna. Cuando hay una sola columna en la tabla, solo tiene que aplicar un filtro en esa columna para que se produzca la transición. En este caso, Power BI aplica un filtro en la columna CustomerKey para el valor en el contexto de fila.

Si hace referencia a medidas en una expresión que se evalúa en el contexto de fila, la transición de contexto es automática. Por lo tanto, no es necesario pasar referencias de medida a la función CALCULATE.

Modifique la definición de la columna calculada, que hace referencia a la medida Revenue y observe que continúa generando el resultado correcto.

Customer Segment = 
VAR CustomerRevenue = [Revenue]
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Ahora puede completar la fórmula de medida Sales Commission. Para generar un total, debe usar una función de iterador para iterar todas las regiones en el contexto de filtro. La expresión de función de iterador debe usar la función CALCULATE para realizar la transición del contexto de fila al contexto de filtro. Tenga en cuenta que ya no es necesario comprobar si un único valor de la columna Country en la tabla Sales Territory está en el contexto de filtro, porque se sabe que está filtrando por un único país (porque está iterando por las regiones en el contexto de filtro y una región pertenece solo a un país).

Cambie a la Página 3 del informe y, a continuación, modifique la definición de medida Sales Commission para usar la función de iterador SUMX:

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

En el objeto visual de tabla ahora se muestra un total de comisión de ventas para todas las regiones.

Una imagen muestra un objeto visual de tabla con tres columnas: Región, Ingresos y Comisión de ventas. Se muestran diez filas de regiones y un total. La columna de comisión total de ventas ahora tiene un total.