Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Quiero escribir dos medidas de DAX que devuelvan el último y el penúltimo valor distinto de cero por categoría de la tabla siguiente.
Puedo obtener el último valor distinto de cero, sin embargo, no puedo obtener el segundo último número distinto de cero por la categoría .
Categoría | Fecha | Número |
a | 01.12.2022 | 2 |
a | 01.01.2023 | 3 |
a | 01.02.2023 | 0 |
a | 01.03.2023 | 0 |
a | 01.04.2023 | |
b | 01.10.2022 | 2 |
b | 01.11.2022 | 5 |
b | 01.12.2022 | 5 |
b | 01.01.2023 | 6 |
b | 01.02.2023 | 4 |
b | 01.03.2023 | 0 |
b | 01.04.2023 | |
c | 01.09.2022 | 2 |
c | 01.10.2022 | |
c | 01.11.2022 | |
c | 01.12.2022 | 6 |
c | 01.01.2023 | |
c | 01.02.2023 | 0 |
c | 01.03.2023 | 9 |
c | 01.04.2023 |
1. Último número distinto de cero por categoría
Categoría | Número |
a | 3 |
b | 4 |
c | 9 |
2. Del mismo modo, penúltimo número distinto de cero Número por categoría de la tabla.
Por favor, ayúdame a escribir la medida dax para devolver
Gracias de antemano.
Hubo un par de problemas con eso. En primer lugar, se quejó de que podría haber valores duplicados, por lo que incluir el MATCHBY eliminó ese problema.
En segundo lugar, en la fila total habría varios valores devueltos, uno para cada categoría, por lo que arrojaría un error.
¿Cuál fue el problema en la primera solución, si puede explicarlo?
Usando los datos de muestra que publicaste, los tengo trabajando con
Second last =
IF(
ISINSCOPE( 'Table'[Category] ),
SELECTCOLUMNS(
INDEX(
2,
FILTER( 'Table', 'Table'[Number] > 0 ),
ORDERBY( 'Table'[Date], DESC ),
PARTITIONBY( 'Table'[Category] ),
MATCHBY( 'Table'[Category], 'Table'[Date] )
),
"@value", 'Table'[Number]
)
)
Recibo el siguiente error
Probar
Second last =
SELECTCOLUMNS (
INDEX (
2,
FILTER ( 'Table', 'Table'[Number] > 0 ),
ORDERBY ( 'Table'[Date], DESC ),
PARTITIONBY ( 'Table'[Category] )
),
"@value", 'Table'[Number]
)