Resolviendo el monto de un cheque de pago dado un cheque de pago hasta la fecha

Un usuario Pregunto ✅

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:

paycheckData.png

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.

Cálculo del monto del cheque =
var ytdPayroll = sum (Nómina[ytd_wages_regular_overtime])
var a = CALCULAR (
MAX (‘Nómina'[ytd_wages_regular_overtime]),
FILTRO (TODOS (Nómina),
FILTRO (Nómina, ‘Nómina'[employee_pii_key] = ANTES (‘Nómina'[employee_pii_key]) && ‘Nómina'[last_check_date]
REGRESO
ytdPayroll – a

@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.

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!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *