左连接表格模型

时间:2018-02-14 11:02:05

标签: left-join dax tabular

我有2张表格如下。

BILLING
AccountId   RatingDate                  Load
1280582     2018-01-04 15:20:13.000     130.000
421947      2018-01-04 11:44:58.000     176.000
1033717     2018-01-04 10:52:23.000     234.000

RATING
AccountId   RatingDate                  RatingMethod
1280582     2018-01-04 15:20:13.000     A
421947      2018-01-04 11:44:58.000     A
1033717     2018-01-04 10:52:23.000     A

我需要在Billing表中创建一个度量来计算Load列的总和。我有SQL查询来执行相同的操作,但我无法使用相同的逻辑创建度量。

SELECT SUM(b.Load) 
FROM Billing b
LEFT JOIN Rating r
ON b.AccountId = r.AccountId
AND b.RatingDate = r.RatingDate                               
WHERE r.RatingMethod = 'A' 

有人可以帮助我使用dax公式来创建度量吗?

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题,包括

  1. 在查询编辑器中执行左连接。

  2. 创建桥接表或唯一索引列以关联两个表。

  3. 使用LOOKUPVALUE函数编写度量。

  4. 如果您正在做其他一些事情,那么您可能会考虑选项#1或#2,但对于这个特定的衡量标准,我会向您展示#3。< / p>

    LoadSum = CALCULATE(SUM(Billing[Load]),
                        FILTER(Billing,
                               LOOKUPVALUE(Rating[RatingMethod],
                                           Rating[AccountID], Billing[AccountID],
                                           Rating[RatingDate], Billing[RatingDate])
                               = "A"))
    

    上述[Load]过滤了[RatingMethod] = "A"表中Rating的行(并且在ID和日期列上匹配)之后的总和。

    对于#1,选择Rating查询,然后单击合并查询(主页选项卡)。

    选择要加入的列(在两者上按Ctrl +单击相同的顺序)。保持默认的Left Outer Join并点击OK。

    Merge Queries

    一旦他们合并,您就会有一个名为Billing的新列。点击列右上角的展开图标,然后选择要展开的列(仅选择Load)。

    扩展后,您的表格应如下所示:

    RATING
    AccountId   RatingDate            RatingMethod  Load
    1280582     2018-01-04 15:20:13   A             130
    421947      2018-01-04 11:44:58   A             176
    1033717     2018-01-04 10:52:23   A             234