DAX / PowerBI-查找费率并乘以小时

时间:2018-09-03 10:32:20

标签: powerbi dax powerbi-desktop

我有三个桌子

费率:

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 :(得分:0)

Gah

度量= sumx('Staff','Staff'[总工作时间] *相关('Rates'[每小时]))

答案 1 :(得分:0)

我猜有两种可能的方式。首先是使用人员表中的计算列来计算组件,然后计算总费率*工作小时数。

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
    )