DAX / PowerBI - скорость просмотра и умножение на часы - PullRequest
0 голосов
/ 03 сентября 2018

У меня три таблицы

Цены:

Rate ID, Rate, Per Hour
1, A, 10
2, B, 20
3, C, 30

Персонал

Staff ID, Name, Rate
1, Bob,    A
2, Fred,   B
3, Shelly, C
4, George, C

Расписание

Timesheet ID, Staff ID, Hours
1, 1, 30
2, 2, 30
3, 2, 30
4, 1, 60
5, 3, 30
6, 4, 60

Я использую

Total Hours worked =
CALCULATE (
    SUM ( Timesheet[Hours] ),
    FILTER ( ALL ( 'Timesheet' ), 'Timesheet'[Staff ID] = Staff[Staff ID] )
)

Чтобы посмотреть мои часы и подсчитать их

Я пытаюсь найти ставки из таблицы тарифов

Rate Per Hr = LOOKUPVALUE(Rates[ Per Hour],Rates[Rates],Staff[Rate])

Но я получаю ошибку об отдельных значениях. Не уверен, что я делаю не так на этом! Любая помощь? Я использую PowerBI около двух дней и не очень много делаю с DAX.

Честно говоря, мне не нужно копировать данные в таблице из тарифов, просто сделайте расчет, который составляет общее количество отработанных часов * почасовая ставка

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Два возможных способа, я думаю. Первый - использовать вычисленные столбцы в таблице персонала для расчета компонентов, а затем - общий коэффициент * отработанных часов.

Rate per Hour = 
    CALCULATE ( 
        SUM ( Rates[Per Hour] ) ;
        FILTER( ALL( Rates ) ; Staff[Rate] = Rates[Rate] )
    )

И

Hours worked = 
    CALCULATE (
        SUM ( Timesheet[Hours] ) ;
        FILTER ( ALL ( 'Timesheet' ) ; 'Timesheet'[Staff ID] = Staff[Staff ID] )
    )

В результате

Total = Staff[Hours worked] * Staff[Rate per Hour]

Альтернативой (мое предпочтение) было бы использование мер и форсирование контекста строки с помощью итератора SUMX. Можно разделить на три измерения или сгруппировать все в одно, как показано в примере ниже

Total = 
    SUMX ( 
        Staff ; 

        var _hoursWorked = 
            CALCULATE (
                SUM ( Timesheet[Hours] ) ;
                FILTER ( ALL ( 'Timesheet' ) ; 'Timesheet'[Staff ID] = Staff[Staff ID] )
            )

        var _ratePerHr = 
            CALCULATE ( 
                SUM ( Rates[Per Hour] ) ;
                FILTER( ALL( Rates ) ; Staff[Rate] = Rates[Rate] )
            )

        RETURN
            _ratePerHr * _hoursWorked
    )
0 голосов
/ 03 сентября 2018

Г

Мера = сумма («Персонал», «Персонал» [Общее количество отработанных часов] * СВЯЗАННЫЕ («Ставки» [В час]))

...