cómo usar SWITCH en una expresión de filtro en CALCULATE

Un usuario Pregunto ✅

qubit813

Tengo una medida cuyos filtros deben cambiar según una selección de una tabla desconectada («Opciones de conjunto de pares»). Un usuario selecciona un empleado. Cuando ‘Opciones de conjunto de pares'[Option] = «todos», no se debe aplicar ningún filtro adicional; cuando ‘Opciones de conjunto de pares'[Option] = «grupo», la medida debe filtrarse adicionalmente a todas las personas en el grupo del empleado seleccionado. Intenté usar SWITCH para este comportamiento, pero arroja el siguiente error:

La expresión Verdadero/Falso no especifica una columna. Cada expresión Verdadero/Falso utilizada como expresión de filtro de tabla debe hacer referencia a exactamente una columna.

¿Cómo puedo resolver esto?

mi medida es:

Horas totales – Conjunto de compañeros =
VAR __peer_set_option =
VALOR SELECCIONADO(

‘Tabla desconectada'[Option]

,BLANCO()

)

VAR __Grupos =
DISTINTO(
SELECCIONAR COLUMNAS(
ALLSELECTED(‘Dimensión Empleado’)
,»Grupo»
,’Dimensión Empleado'[Group]

)
)

REGRESO

CALCULAR(

SUM(‘Tiempo real trabajado'[Hours])
,ALL(‘Dimension Employee’) //borra el contexto del filtro creado por la selección del empleado

,CAMBIAR(

__peer_set_option

,»todo cierto

,»grupo», __Grupos

)
)

CNENFRNL

Hola, @ qubit813, es posible que desee crear la medida de esta manera,

Total Hours - Peer Set =
VAR __peer_set_option =
    SELECTEDVALUE ( 'Disconnected Table'[Option] ) //it defaults to BLANK() if the 2nd parameter is omitted
VAR __Groups =
    DISTINCT (
        SELECTCOLUMNS (
            ALLSELECTED ( 'Dimension Employee' ),
            "Group", 'Dimension Employee'[Group]
        )
    )
RETURN
    SWITCH (
        __peer_set_option,
        "all", CALCULATE ( SUM ( 'Fact Time Worked'[Hours] ), ALL ( 'Dimension Employee' ) ),
        "group",
            CALCULATE (
                SUM ( 'Fact Time Worked'[Hours] ),
                ALL ( 'Dimension Employee' ),
                __Groups
            ),
        "Some other calculation when __peer_set_option evaluates to BLANK()"
    )

Hola @qubit813

Debido a que no conozco su modelo de datos y valores, construyo una muestra para usted.

Mi tabla de muestra:

1.png

Tabla de grupo:

2.png

Construye una tabla de personas también.

People = VALUES('Fact Time Worked'[People]) 

La medida:

M.Hour = 
VAR _Group = SELECTEDVALUE('Group'[Group])
VAR _People = SELECTEDVALUE(People[People])
Return
SWITCH(TRUE(),
_Group = "ALL",SUM('Fact Time Worked'[Hours]),
_Group=BLANK(),SUMX(FILTER('Fact Time Worked','Fact Time Worked'[People]=_People),'Fact Time Worked'[Hours]),
SUMX(FILTER('Fact Time Worked','Fact Time Worked'[Group]=_Group&&'Fact Time Worked'[People]=_People),'Fact Time Worked'[Hours]))

El resultado es el siguiente.

Solo seleccione «A» en Personas:

3.png

Seleccione «Todos» en Grupo y luego seleccione «A» en Personas:

4.png

Seleccione «G1» en Grupo y seleccione «A» en Personas:

5.png

Puede descargar el archivo pbix desde este enlace: cómo usar SWITCH en una expresión de filtro en CALCULATE

Si esta respuesta aún no pudo ayudarlo a resolver su problema, proporcione una muestra de datos como la suya. Y muéstrame el resultado que quieres. (Una captura de pantalla puede ser mejor)

Esto puede facilitarme la comprensión de sus requisitos y su lógica de cálculo.

Atentamente,

rico zhou

Si esta publicación ayudaentonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @qubit813

¿Podrías decirme si tu problema se ha solucionado? Si es así, por favor acéptelo como la solución. Más personas se beneficiarán de ello. O todavía está confundido al respecto, proporcione más detalles sobre su tabla y su problema o compártame con su archivo pbix de su Onedrive para empresas.

Atentamente,

rico zhou

Hola @qubit813

Debido a que no conozco su modelo de datos y valores, construyo una muestra para usted.

Mi tabla de muestra:

1.png

Tabla de grupo:

2.png

Construye una tabla de personas también.

People = VALUES('Fact Time Worked'[People]) 

La medida:

M.Hour = 
VAR _Group = SELECTEDVALUE('Group'[Group])
VAR _People = SELECTEDVALUE(People[People])
Return
SWITCH(TRUE(),
_Group = "ALL",SUM('Fact Time Worked'[Hours]),
_Group=BLANK(),SUMX(FILTER('Fact Time Worked','Fact Time Worked'[People]=_People),'Fact Time Worked'[Hours]),
SUMX(FILTER('Fact Time Worked','Fact Time Worked'[Group]=_Group&&'Fact Time Worked'[People]=_People),'Fact Time Worked'[Hours]))

El resultado es el siguiente.

Solo seleccione «A» en Personas:

3.png

Seleccione «Todos» en Grupo y luego seleccione «A» en Personas:

4.png

Seleccione «G1» en Grupo y seleccione «A» en Personas:

5.png

Puede descargar el archivo pbix desde este enlace: cómo usar SWITCH en una expresión de filtro en CALCULATE

Si esta respuesta aún no pudo ayudarlo a resolver su problema, proporcione una muestra de datos como la suya. Y muéstrame el resultado que quieres. (Una captura de pantalla puede ser mejor)

Esto puede facilitarme la comprensión de sus requisitos y su lógica de cálculo.

Atentamente,

rico zhou

Si esta publicación ayudaentonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.

CNENFRNL

Hola, @ qubit813, es posible que desee crear la medida de esta manera,

Total Hours - Peer Set =
VAR __peer_set_option =
    SELECTEDVALUE ( 'Disconnected Table'[Option] ) //it defaults to BLANK() if the 2nd parameter is omitted
VAR __Groups =
    DISTINCT (
        SELECTCOLUMNS (
            ALLSELECTED ( 'Dimension Employee' ),
            "Group", 'Dimension Employee'[Group]
        )
    )
RETURN
    SWITCH (
        __peer_set_option,
        "all", CALCULATE ( SUM ( 'Fact Time Worked'[Hours] ), ALL ( 'Dimension Employee' ) ),
        "group",
            CALCULATE (
                SUM ( 'Fact Time Worked'[Hours] ),
                ALL ( 'Dimension Employee' ),
                __Groups
            ),
        "Some other calculation when __peer_set_option evaluates to BLANK()"
    )

Deja un comentario

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