TomLU123
Estimados expertos,
Estoy construyendo un informe para monitorear la tendencia del precio. Deseo crear una medida para contar la cantidad de cambios que tiene el precio. El conjunto de datos es como a continuación.
Fecha | Precio |
8/1/2018 | 300 |
8/2/2018 | 400 |
8/3/2018 | 500 |
4/8/2018 | 500 |
5/8/2018 | 450 |
8/6/2018 | 400 |
8/7/2018 | 400 |
En este caso, el precio cambió 4 veces.
¿Es posible construir una medida para contar este número de cambios?
¡Muchas gracias!
Zubair_Muhammad
@TomLU123
Puede crear una columna calculada como y luego usar la suma de esta columna
Column = VAR PreviousPriceRow = TOPN ( 1, FILTER ( Table1, [Date] < EARLIER ( [Date] ) ), [Date], DESC ) VAR PreviousPrice = MINX ( PreviousPriceRow, [Price] ) RETURN IF ( OR ( [Price] = PreviousPrice, ISBLANK ( PreviousPrice ) ), 0, 1 )
Zubair_Muhammad
En respuesta a Zubair_Muhammad
@TomLU123
Por favor ver archivo adjunto
Zubair_Muhammad
En respuesta a TomLU123
@TomLU123
Puedes modificarlo así.
Cambio en fuente roja
Column = VAR PreviousPriceRow = TOPN ( 1, FILTER ( Table1, [Product] = EARLIER ( [Product] ) && [Date] < EARLIER ( [Date] ) ), [Date], DESC ) VAR PreviousPrice = MINX ( PreviousPriceRow, [Price] ) RETURN IF ( OR ( [Price] = PreviousPrice, ISBLANK ( PreviousPrice ) ), 0, 1 )
Zubair_Muhammad
En respuesta a Zubair_Muhammad
@TomLU123
Ver archivo revisado con MEDIDA adjunta
Zubair_Muhammad
@TomLU123
Puede crear una columna calculada como y luego usar la suma de esta columna
Column = VAR PreviousPriceRow = TOPN ( 1, FILTER ( Table1, [Date] < EARLIER ( [Date] ) ), [Date], DESC ) VAR PreviousPrice = MINX ( PreviousPriceRow, [Price] ) RETURN IF ( OR ( [Price] = PreviousPrice, ISBLANK ( PreviousPrice ) ), 0, 1 )
TomLU123
En respuesta a Zubair_Muhammad
Hola @Zubair_Muhammad,
¡Gracias por tu gran ayuda!
Solo una pregunta: si ahora hay una columna más en el conjunto de datos que deseo contar la cantidad de cambios de precio de cada producto, ¿cómo debemos modificar la expresión y lograr eso?
Fecha | Producto | Precio |
8/1/2018 | A | 300 |
8/2/2018 | A | 400 |
8/3/2018 | A | 450 |
8/1/2018 | B | 600 |
8/2/2018 | B | 600 |
8/3/2018 | B | 800 |
8/1/2018 | C | 500 |
8/2/2018 | C | 300 |
8/3/2018 | C | 200 |
¡Muchas gracias!
Zubair_Muhammad
En respuesta a TomLU123
@TomLU123
Puedes modificarlo así.
Cambio en fuente roja
Column = VAR PreviousPriceRow = TOPN ( 1, FILTER ( Table1, [Product] = EARLIER ( [Product] ) && [Date] < EARLIER ( [Date] ) ), [Date], DESC ) VAR PreviousPrice = MINX ( PreviousPriceRow, [Price] ) RETURN IF ( OR ( [Price] = PreviousPrice, ISBLANK ( PreviousPrice ) ), 0, 1 )
TomLU123
En respuesta a Zubair_Muhammad
Hola @Zubair_Muhammad,
Solo una pregunta más: si hay un filtro de fecha que le permite al usuario seleccionar el intervalo de tiempo que desea ver, nos enfrentaremos a la siguiente situación:
Si seleccionan el Producto A y filtran la fecha del 2/8/2018 al 3/8/2018, la suma será 2. Pero en realidad, el precio solo cambia 1 vez en esos dos días.
Fecha | Producto | Precio | Cambiar etiqueta |
8/1/2018 | A | 300 | 0 |
8/2/2018 | A | 400 | 1 |
8/3/2018 | A | 450 | 1 |
8/1/2018 | B | 600 | 0 |
8/2/2018 | B | 600 | 0 |
8/3/2018 | B | 800 | 1 |
8/1/2018 | C | 500 | 0 |
8/2/2018 | C | 300 | 1 |
8/3/2018 | C | 200 | 1 |
En ese caso, ¿es posible modificar el DAX e ignorar la primera fecha en el rango seleccionado?
¡Muchas gracias!
Zubair_Muhammad
En respuesta a TomLU123
@TomLU123
En ese caso, tenemos que usar una MEDIDA
Measure =
VAR temp =
ADDCOLUMNS (
Table1,
"Price Change",
VAR PreviousPriceRow =
TOPN ( 1, FILTER ( Table1, [Date] < EARLIER ( [Date] ) ), [Date], DESC )
VAR PreviousPrice =
MINX ( PreviousPriceRow, [Price] )
RETURN
IF ( OR ( [Price] = PreviousPrice, ISBLANK ( PreviousPrice ) ), 0, 1 )
)
RETURN
COUNTX ( FILTER ( temp, [Price Change] = 1 ), 1 )
Zubair_Muhammad
En respuesta a Zubair_Muhammad
@TomLU123
Ver archivo revisado con MEDIDA adjunta
Zubair_Muhammad
En respuesta a Zubair_Muhammad
@TomLU123
Por favor ver archivo adjunto