首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAX用户关系函数

DAX用户关系函数
EN

Stack Overflow用户
提问于 2019-03-15 11:08:52
回答 2查看 1.1K关注 0票数 4

我在DAX中的用户关系函数有这个问题。我有两张桌子SalesFactDimPromoSkus是这样的:

图视图

数据视图中的两个表如下所示:

数据视图

这两个表从SkuCampaign1SkuCampaign2SalesFact中的连接到DimPromoSkus的SkuCampaign

因此,基本上,DimPromoSkus表的目标是指示产品是在C1、C2还是C3中。例如,活动C1发生在2019/1/2019至4/1/2019天之间,但只有SKUS、A1和A2在促销上出售。A2和A3不做广告,但在竞选C1期间出售。

我的目标是计算每个活动C1、C2和C3的促销销售额。当然,这可以通过查找列来完成,然后计算找到该键的销售额,但是我想使用USERELATIONSHIP函数。

因此,要计算竞选活动的PromoSales C1,理论上我的衡量标准应该是:

代码语言:javascript
复制
PromoSalesC1:=CALCULATE(SUM(SalesFact[Sales]);USERELATIONSHIP(SalesFact[SkuCampaign1];DimPromoSkus[SkuCampaign]))

得到的结果应该是25,但返回的是155,这是行的总数,所以没有真正做任何事情。如果我使用SkuCampaign2或SkuCampaign3 (非活动关系),则结果会一直给出155,但是SkuCampaign2应该激活这个关系。

你知道是怎么回事还是我错过了什么吗?:)谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-15 15:28:50

@StelioK是正确的,您需要一种方法来对和应用筛选上下文。不过,您不需要显式地提供一个值。您只需将DimPromoSkus表作为过滤器上下文传递即可。

代码语言:javascript
复制
PromoSalesC1 =
    CALCULATE(
        SUM(SalesFact[Sales]),
        DimPromoSkus,
        USERELATIONSHIP(SalesFact[SkuCampaign1], DimPromoSkus[SkuCampaign])
    )

请记住,CALCULATE函数可以将表作为筛选器参数。在这里,我们提供DimPromoSkus作为筛选器,这样我们就不会对没有通过指定关系的任何值进行求和。因此,例如,由于A3 C1不在DimPromoSkus中,所以SalesFact中的相应行没有包含在和中。

票数 1
EN

Stack Overflow用户

发布于 2019-03-15 15:02:52

DAX正在做它想要做的事情。通过调用USERELATIONSHIP函数,您将“激活”该关系,但仍然需要通过切片程序或DAX本身提供过滤器上下文。

使用下面的代码,看看它是否有帮助

代码语言:javascript
复制
PromoSalesC1 :=
CALCULATE (
    SUM ( SalesFact[Sales] ),
    USERELATIONSHIP ( SalesFact[SkuCampaign1], DimPromoSkus[SkuCampaign] ),
    DimPromoSkus[Campaign] = 'C1'
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55181262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档