topn dax para valores negativos

Un usuario Pregunto ✅

nikahafiz

Hola,

No tengo problemas para obtener resultados para topn dax para valores positivos. sin embargo, necesito ayuda para resolver el topn dax para valores negativos.

este es mi típico topn dax:

TopN.ADPR =
CALCULAR (
[16000-ADPR.EM],
SUPERIOR (
‘mn-valor'[n-value Value],
TODOS (‘mperfil'[Org_Name] ),
[16000-ADPR.EM]
),
VALORES (‘mperfil'[Org_Name] )
)

agradecería cualquier ayuda en esto.

Gracias, -nik

amichandak

@nikahafiz

Ordenar Ascendente debería darle los números negativos principales. O Top significa todo cerca de 0. Entonces tenga un filtro de <0 en su medida

pedido
(Opcional) Un valor que especifica cómo ordenar orderBy_expression valores, ascendente o descendente:

valor valor alternativo Descripción
0 (cero) FALSO Ordena en orden descendente de valores de ordenar_por.

Este es el valor predeterminado cuando pedido se omite el parámetro.

1 CIERTO Clasifica en orden ascendente de ordenar_por.

O usa el rango

Para el rango, consulte estos enlaces
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale

En respuesta a nikahafiz

Hola @nikahafiz

Puede crear un parámetro hipotético como se muestra a continuación.
g1.png

Entonces puede crear una medida como se muestra a continuación.

IsDisplay = 
var _topn = SELECTEDVALUE(Parameter[Parameter])
var _name = SELECTEDVALUE('Table'[Name])
var tab = 
ADDCOLUMNS(
    ALLSELECTED('Table'),
    "Rank",
    RANKX(
        ALLSELECTED('Table'),
        'Table'[Value]
    )
)
var _rank = 
SUMX(
    FILTER(
        tab,
        [Name] = _name
    ),
    [Rank]
)
return
IF(
    _rank<=_topn,
    1,0
)

Finalmente, debe colocar la medida en el filtro de nivel visual de una tabla visual. Aquí está el resultado.

g2.png

Atentamente

Alano

amichandak

@nikahafiz

Ordenar Ascendente debería darle los números negativos principales. O Top significa todo cerca de 0. Entonces tenga un filtro de <0 en su medida

pedido
(Opcional) Un valor que especifica cómo ordenar orderBy_expression valores, ascendente o descendente:

valor valor alternativo Descripción
0 (cero) FALSO Ordena en orden descendente de valores de ordenar_por.

Este es el valor predeterminado cuando pedido se omite el parámetro.

1 CIERTO Clasifica en orden ascendente de ordenar_por.

O usa el rango

Para el rango, consulte estos enlaces
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale

nikahafiz

En respuesta a amichandak

gracias por su tiempo y esfuerzo para tratar de ayudar, @amitchandak.

si la parte superior significa todo cerca de 0, aconseje cómo tener un filtro de <0 en mi medida en el mismo dax que escribió anteriormente.

krgds, -nik

En respuesta a nikahafiz

Hola @nikahafiz

Según su descripción, creé datos para reproducir su escenario.

Tabla:

e1.png

Puede crear una tabla de parámetros What-if como se muestra a continuación.

mn-value = GENERATESERIES(0, 6, 1)

Entonces necesita crear una medida como la siguiente.

Result = 
var _topn = SELECTEDVALUE('mn-value'[mn-value])
return
CALCULATE(
    SUM('Table'[Value]),
    TOPN(
        _topn,
        FILTER(
            ALL('Table'),
            'Table'[Value]<0
        ),
        'Table'[Value]
    )
)

Resultado:

e2.png

e3.png

Atentamente

Alano

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

nikahafiz

En respuesta a v-alq-msft

gracias, @v-alq-msft.

Lo siento por no responder antes (tomé un breve descanso). Además, lo siento por no dejarlo más claro.

la situación es si tengo todos los valores negativos, ¿cómo puedo clasificarlos entre los primeros n?

Usando la tabla que reproduciste, la lista será la siguiente:

Nombre Valor
amy -11
allen -20

Miguel

-19
Miguel -46
lucia -dieciséis
Lirio -33
Jack -25
John -10

si filtro por los 3 primeros, será-

Nombre Valor
John -10
amy -11
lucia -dieciséis

¿Cómo será el dax b para clasificar los valores negativos como en el caso anterior, por favor?

Gracias y amables saludos, -nik

En respuesta a nikahafiz

Hola @nikahafiz

Puede crear un parámetro hipotético como se muestra a continuación.
g1.png

Entonces puede crear una medida como se muestra a continuación.

IsDisplay = 
var _topn = SELECTEDVALUE(Parameter[Parameter])
var _name = SELECTEDVALUE('Table'[Name])
var tab = 
ADDCOLUMNS(
    ALLSELECTED('Table'),
    "Rank",
    RANKX(
        ALLSELECTED('Table'),
        'Table'[Value]
    )
)
var _rank = 
SUMX(
    FILTER(
        tab,
        [Name] = _name
    ),
    [Rank]
)
return
IF(
    _rank<=_topn,
    1,0
)

Finalmente, debe colocar la medida en el filtro de nivel visual de una tabla visual. Aquí está el resultado.

g2.png

Atentamente

Alano

nikahafiz

En respuesta a v-alq-msft

muchas gracias, @v-alq-msft.

Probaré esas sugerencias.

krgds, -nik

Deja un comentario

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