jburklund
Estoy tratando de escribir una medida para resolver el monto de un cheque de pago dado el monto del cheque de pago YTD y la fecha del cheque de pago. Tenga en cuenta que esto se ejecutará en una base de datos muy grande, por lo que estoy tratando de evitar el uso de columnas calculadas.
Aquí hay una tabla de datos de muestra:
La siguiente medida devuelve el error «La expresión se refiere a varias columnas. No se pueden convertir varias columnas a un valor escalar». Sé que el filtro está devolviendo una tabla y no un valor escalar, pero no puedo averiguar cómo obtener un cálculo como un valor único.
Amitchandak
@jburklund, con la ayuda de una tabla de fechas puedes usar inteligencia de tiempo
ejemplo
YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD('Date'[Date],"12/31"))
Last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-1,Year),"12/31"))
This year Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR('Date'[Date]),"12/31"))
Last year Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR(dateadd('Date'[Date],-1,Year)),"12/31"))
Last to last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-2,Year),"12/31"))
Year behind Sales = CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Year))
Power BI: año tras año con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-ytd-questions-time-intelligence-1-5-e3174b39f38a
Para aprovechar al máximo la función de inteligencia del tiempo. Asegúrese de tener un calendario de fechas y que se haya marcado como la fecha en la vista de modelo. Además, únala con la columna de fecha de sus hechos. Refiera:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
Aprecie sus felicitaciones.
jburklund
En respuesta a Amitchandak
@amitchandak Ya tengo el monto del año hasta la fecha, no tengo los montos de los cheques de pago individuales, que es lo que estoy tratando de resolver. Estoy tratando de encontrar el monto de ytd del cheque de pago anterior y restarlo del monto de ytd más actual (es decir, 300 – 250 = 50) para encontrar los montos de los cheques de pago individuales.
v-xuding-msft
En respuesta a jburklund
Hola @jburklund,
Pruebe esta columna calculada:
Column =
VAR YTD_ = 'Table'[YTD]
VAR a =
MAXX (
FILTER (
'Table',
EARLIER ( 'Table'[lat_check_date] ) > 'Table'[lat_check_date]
&& EARLIER ( 'Table'[CompanyName] ) = 'Table'[CompanyName]
&& EARLIER ( 'Table'[emplyee_pii_key] ) = 'Table'[emplyee_pii_key]
),
'Table'[YTD]
)
RETURN
YTD_ - a
O
Paycheck Amount Calc =
VAR ytdPayroll =
Payroll[ytd_wages_regular_overtime]
VAR a =
CALCULATE (
MAX ( 'Payroll'[ytd_wages_regular_overtime] ),
FILTER (
ALL ( Payroll ),
'Payroll'[employee_pii_key] = EARLIER ( 'Payroll'[employee_pii_key] )
&& 'Payroll'[last_check_date] < EARLIER ( 'Payroll'[last_check_date] )
)
)
)
RETURN
ytdPayroll - a
la medida:
Measure =
VAR YTD_ = CALCULATE(SUM('Table'[YTD]))
VAR a =
MAXX (
FILTER (
ALL('Table'),
MAX( 'Table'[lat_check_date] ) > 'Table'[lat_check_date]
&& MAX('Table'[CompanyName] ) = 'Table'[CompanyName]
&& MAX('Table'[emplyee_pii_key] ) = 'Table'[emplyee_pii_key]
),
'Table'[YTD]
)
RETURN
YTD_ - a
O
Paycheck Amount Calc =
VAR ytdPayroll =
SUM(Payroll[ytd_wages_regular_overtime])
VAR a =
CALCULATE (
MAX ( 'Payroll'[ytd_wages_regular_overtime] ),
FILTER (
ALL ( Payroll ),
'Payroll'[employee_pii_key] = MAX( 'Payroll'[employee_pii_key] )
&& 'Payroll'[last_check_date] < MAX( 'Payroll'[last_check_date] )
)
)
)
RETURN
ytdPayroll - a
jburklund
En respuesta a v-xuding-msft
Muchas gracias @ v-xuding-msft, ¡lo probaremos!