Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Necesito realizar un seguimiento de las veces que una columna tiene un valor establecido para [Nombre del producto] y [Fecha].
La columna de la que se debe realizar un seguimiento es la columna [BuyBoxStatus].
Una vez que el valor de [BuyBoxStatus] cambia, el recuento se reiniciaría de nuevo a 1.
El resultado previsto es la última columna [Días en estado actual]
Ejemplo:
Productname | BuyBoxStatus | Fecha | Días en estado actual |
A | 2 | 12/7/2020 | 1 |
B | 1 | 12/7/2020 | 1 |
A | 2 | 12/8/2020 | 2 |
B | 1 | 12/8/2020 | 2 |
A | 2 | 12/9/2020 | 3 |
B | 1 | 12/9/2020 | 3 |
A | 5 | 12/10/2020 | 1 |
B | 3 | 12/10/2020 | 1 |
A | 5 | 12/11/2020 | 2 |
¿Cómo puedo lograr esto ya sea en una medida o en una columna calculada?
Solved! Go to Solution.
No me sorprende que sea lento. Hay mucho cálculo en curso, y no sabía cuántas filas tiene en sus datos. Aquí está la versión de medida de la misma. Funciona en un objeto visual de tabla con la columna de nombre del producto y con o sin la columna Fecha de esa tabla. Por supuesto, será mucho más rápido con sólo el nombre del producto (mostrará los días que ha estado en el estado actual).
Días Estado actual ?
Fue vCurrentStatus =
LASTNONBLANKVALUE (
'Status'[-Date-],
máximo ( 'Status'[-BuyBoxStatus-] )
)
Fue vLatestDate =
máximo ( 'Estado'[-Fecha-] )
Fue vMinDateSameStatus =
Calcular (
Min ( 'Estado'[-Fecha-] ),
Filtro (
todo ( 'Estado'[-Fecha-] ),
'Estado'[-Fecha-] <- vLatestDate
),
'Status'[-BuyBoxStatus-] vCurrentStatus
)
Fue vPrevDate =
Calcular (
máximo ( 'Estado'[-Fecha-] ),
Filtro (
todo ( 'Estado'[-Fecha-] ),
'Status'[-Date-] < vLatestDate
),
'Status'[-BuyBoxStatus-] <> vCurrentStatus
)
Fue Vresult =
Si (
vPrevDate > vMinDateSameStatus,
Datediff (
vPrevDate,
vLatestDate,
Día
),
Datediff (
vMinDateSameStatus,
vLatestDate,
Día
) + 1
)
devolución
Vresult
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
No me sorprende que sea lento. Hay mucho cálculo en curso, y no sabía cuántas filas tiene en sus datos. Aquí está la versión de medida de la misma. Funciona en un objeto visual de tabla con la columna de nombre del producto y con o sin la columna Fecha de esa tabla. Por supuesto, será mucho más rápido con sólo el nombre del producto (mostrará los días que ha estado en el estado actual).
Días Estado actual ?
Fue vCurrentStatus =
LASTNONBLANKVALUE (
'Status'[-Date-],
máximo ( 'Status'[-BuyBoxStatus-] )
)
Fue vLatestDate =
máximo ( 'Estado'[-Fecha-] )
Fue vMinDateSameStatus =
Calcular (
Min ( 'Estado'[-Fecha-] ),
Filtro (
todo ( 'Estado'[-Fecha-] ),
'Estado'[-Fecha-] <- vLatestDate
),
'Status'[-BuyBoxStatus-] vCurrentStatus
)
Fue vPrevDate =
Calcular (
máximo ( 'Estado'[-Fecha-] ),
Filtro (
todo ( 'Estado'[-Fecha-] ),
'Status'[-Date-] < vLatestDate
),
'Status'[-BuyBoxStatus-] <> vCurrentStatus
)
Fue Vresult =
Si (
vPrevDate > vMinDateSameStatus,
Datediff (
vPrevDate,
vLatestDate,
Día
),
Datediff (
vMinDateSameStatus,
vLatestDate,
Día
) + 1
)
devolución
Vresult
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Esta expresión de columna debe funcionar incluso si un producto repite un estado. Reemplace los nombres de tabla/columna por los reales.
Días Este estado ?
VAR thisdate á 'Status'[-Date-]
VAR thisstatus á 'Status'[-BuyBoxStatus-]
Mente de VAR-amesamoto ?
CALCULAR (
MIN ( 'Estado'[-Fecha-] ),
ALLEXCEPT (
'Estado',
'Status'[-ProductName-]
),
'Status'[-BuyBoxStatus-] - thisstatus,
'Estado'[-Fecha-] <- thisdate
)
VAR maxdatediffstatus ?
CALCULAR (
MAX ( 'Estado'[-Fecha-] ),
ALLEXCEPT (
'Estado',
'Status'[-ProductName-]
),
'Status'[-BuyBoxStatus-] <> thisstatus,
'Status'[-Date-] < thisdate
)
Fecha final del VAR (VAR finaldate)
SI (
maxdatediffstatus > mindatesamestatus,
maxdatediffstatus,
mindatesamestatus
)
devolución
DATEDIFF (
fecha final,
thisdate,
Día
) + 1
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Hola @mahoneypat, gracias por la solución!!
Desgraciadamente está tomando bastante tiempo para procesar.
¿Crees que si lo intentaba, podría replicar esta fórmula en una medida usando tablas virtuales?
Hola Pat, muchas gracias por la solución.
Otra advertencia que olvidé añadir es que hay otra columna llamada sitio web,
esto tendrá desgraciadamente situaciones en las que habrá filas del mismo producto en la misma fecha con estados iguales o diferentes. En este caso, simplemente añadiría otro var para el sitio web y un parámetro adicional dentro de la instrucción calculate donde el sitio web es este sitio web correcto?