The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hola
He tenido algo de ayuda en la creación de una medida para crear un filtro para mostrar los datos del día anterior o los datos del fin de semana un lunes, pero recibo el siguiente error: 'La expresión se refiere a varias columnas. Varias columnas no se pueden convertir en un valor escalar y no estoy seguro de lo que debo hacer para resolver esto, ¡lo siento, no soy tan bueno con las más complejas!
Esta es la tabla que quiero filtrar:
Fecha de recuento | Producto | Contado por | Más/Menos | Diferencia registrada | TotalStockPlusDiff | % del stock total |
29/01/2025 | 623932 | Secretario 1 | Más | -154307 | -151558 | 101.81% |
29/01/2025 | 623932 | Secretario 1 | Menos | 154409 | 151558 | 101.88% |
28/01/2025 | 392-1269 | Oficinista 4 | Menos | 3154 | 3119 | 101.12% |
26/01/2025 | 392-2036 | Oficinista 3 | Menos | 1508 | 7492 | 20.13% |
26/01/2025 | 392-2069 | Oficinista 3 | Más | -9000 | 18000 | -50.00% |
22/01/2025 | 206360 | Secretario 2 | Menos | 34339 | 43181 | 79.52% |
21/01/2025 | 392-1269 | Oficinista 4 | Más | -77 | -13 | 592.31% |
20/01/2025 | 203553 | Oficinista 3 | Más | -30441 | 13394 | -227.27% |
19/01/2025 | 1213-2369 | Secretario 2 | Más | -1485 | -788 | 188.45% |
19/01/2025 | 2273069 | Secretario 2 | Más | -1 | 200 | -0.50% |
19/01/2025 | 392-1036 | Oficinista 4 | Más | -1114 | 3307 | -33.69% |
16/01/2025 | 1213-5536 | Oficinista 4 | Menos | 555 | 101 | 549.50% |
16/01/2025 | 629610 | Oficinista 4 | Menos | 1835 | 13735 | 13.36% |
14/01/2025 | 1213-2369 | Oficinista 4 | Más | -1935 | -1338 | 144.62% |
10/01/2025 | 626129 | Secretario 1 | Menos | 11418 | 394 | 2897.97% |
08/01/2025 | 1213-3636 | Secretario 5 | Menos | 400 | 1041 | 38.42% |
08/01/2025 | 1213-5536 | Oficinista 4 | Más | -3000 | -1949 | 153.93% |
08/01/2025 | 1213-5536 | Oficinista 4 | Más | -385 | -334 | 115.27% |
07/01/2025 | 392-1269 | Oficinista 4 | Más | -53 | -38 | 139.47% |
04/01/2025 | 629069 | Secretario 2 | Menos | 343 | 399 | 85.96% |
¡Gracias por cualquier ayuda
Solved! Go to Solution.
Hola, @Belle2015
En base a su formación, le creo la mesa. Al mismo tiempo, agregué un dato del 6 de enero para probarlo.
A continuación, cree una nueva medida:
PreviousDayOrWeekendData =
VAR TodayIsMonday = WEEKDAY(MAX('Table'[Count Date]), 2) = 1
VAR _PreviousDay = CALCULATE(SUM('Table'[TotalStockPlusDiff]), 'Table'[Count Date] = MAX('Table'[Count Date]) - 1)
VAR WeekendData = CALCULATE(SUM('Table'[TotalStockPlusDiff]), WEEKDAY('Table'[Count Date], 2) IN {6, 7} && 'Table'[Count Date] <= MAX('Table'[Count Date]))
RETURN
IF(TodayIsMonday, WeekendData, _PreviousDay)
Coloque esta medida en el objeto visual de tabla y cree una segmentación. Aquí está mi vista previa:
Al seleccionar una segmentación, las métricas también cambian. Al mismo tiempo, calcula la suma de los fines de semana hasta la fecha seleccionada por el segmentador actual.
Cómo obtener respuestas rápidas a su pregunta
Saludos
Yongkang Hua
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
Hola, @Belle2015
En base a su formación, le creo la mesa. Al mismo tiempo, agregué un dato del 6 de enero para probarlo.
A continuación, cree una nueva medida:
PreviousDayOrWeekendData =
VAR TodayIsMonday = WEEKDAY(MAX('Table'[Count Date]), 2) = 1
VAR _PreviousDay = CALCULATE(SUM('Table'[TotalStockPlusDiff]), 'Table'[Count Date] = MAX('Table'[Count Date]) - 1)
VAR WeekendData = CALCULATE(SUM('Table'[TotalStockPlusDiff]), WEEKDAY('Table'[Count Date], 2) IN {6, 7} && 'Table'[Count Date] <= MAX('Table'[Count Date]))
RETURN
IF(TodayIsMonday, WeekendData, _PreviousDay)
Coloque esta medida en el objeto visual de tabla y cree una segmentación. Aquí está mi vista previa:
Al seleccionar una segmentación, las métricas también cambian. Al mismo tiempo, calcula la suma de los fines de semana hasta la fecha seleccionada por el segmentador actual.
Cómo obtener respuestas rápidas a su pregunta
Saludos
Yongkang Hua
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
Gracias por su ayuda con esto, creo que realmente no estoy explicando muy bien lo que quería que hiciera, esperaba que funcionara un poco como el filtro de fecha relativa pero sin tener que entrar y seleccionar los días que quería
Hola @Belle2015 ,
Acabo de reestructurar su DAX para devolver el valor escalar deseado, pruebe el código a continuación y avíseme si todo está bien:
FilteredByDate =
VAR TodayDate = TODAY()
VAR DayBefore = TodayDate - 1
VAR IsMonday = WEEKDAY(TodayDate, 2) = 1
RETURN
CALCULATE(
SUM('Table 2'[Difference Recorded]),
FILTER(
'Table 2',
IF(
IsMonday,
'Table 2'[Count Date] = TodayDate - 3 ||
'Table 2'[Count Date] = TodayDate - 2 ||
'Table 2'[Count Date] = TodayDate - 1,
'Table 2'[Count Date] = DayBefore
)
)
)
Muchas gracias por tu ayuda @Bibiano_Geraldo
Tal vez no estoy usando esto correctamente, pero pensé que solo aplicaría esta medida a los filtros para que funcione, ¡pero no está filtrando la tabla! ¡Lo siento, soy muy básico con esto y trato de aprender!
Hola @Belle2015
No se pueden devolver diferentes expresiones de tabla en función de las condiciones. Coloque cada expresión de tabla en su propia variable y, a continuación, cree una condición en la cláusula RETURN en su lugar:
IF(
IsMonday,
CALCULATE(SUM('Table 2'[Difference Recorded]), filter01),
CALCULATE(SUM('Table 2'[Difference Recorded]), filter02)
)