Power BI / DAX查询-根据另一个表上的范围查找值

时间:2018-12-05 16:57:41

标签: powerbi dax

因此,我有一个表,该表的行具有唯一的发票,在各列之间具有供应商名称和发票成本,例如:

Invoice | Vendor | Cost
AAA     | Good Co| $10
BBB     | Good Co| $15
CCC     | Best Co| $30
DDD     | Bad Co | $50

并创建了一个自定义列,以给我每个供应商的总支出:

VendorGrandTotal = 
CALCULATE(SUM('Raw Data'[Cost]),ALLEXCEPT('Raw Data','Raw Data'[Vendor]))

要获得如下结果:

Invoice | Vendor | Cost | Total
AAA     | Good Co| $10  | $25
BBB     | Good Co| $15  | $25
CCC     | Best Co| $30  | $30
DDD     | Bad Co | $50  | $50

与此同时,我还有另一个表格,该表格根据与他们的总支出是高于还是低于一定金额来描述供应商的返利百分比。像这样:

Vendor   | Tier 1 % | Tier 1 From | Tier 1 To | Tier 2% | Tier 2 From
Good Co  | 1%       | $0          | $20       | 2%      | $20

...等等。

因此,在本示例中,我们应该得到2%的回扣,因为与Good Co签订的发票的总支出总计超过20美元。但是我很困惑如何在Power BI中自动执行此操作。有没有一种方法可以在某处生成一个列或表,以检查发票表中的供应商与折扣等级列表中的供应商是否相同,并且可以针对不同的等级进行检查以查看折扣的百分比并将该百分比返回为结果可以进行其他计算?

1 个答案:

答案 0 :(得分:1)

我建议取消返点表,使其看起来像这样:

Vendor   | Tier | From | To  | Rebate
Good Co  | 1    | $0   | $20 | 1%
Good Co  | 2    | $20  |     | 2%

然后,您可以通过选择VendorGrandTotal大于From的最大匹配行来查找适当的返利百分比。

作为'Raw Data'上的计算列,您可以执行以下操作:

Rebate % = 
MAXX(
    FILTER(Rebates,
        Rebates[Vendor] = EARLIER([Vendor]) &&
        Rebates[From] < EARLIER([VendorGrandTotal])
    ),
    Rebates[Rebate]
)