首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两列不同粒度的DAX条件和

两列不同粒度的DAX条件和
EN

Stack Overflow用户
提问于 2019-08-29 15:51:45
回答 1查看 1.4K关注 0票数 1

这是一个被问到这里的后续问题。但是,这一次,两列具有不同的粒度,并且位于不同的表中。因此,前面提出的简单SUMX解决方案是不适用的。我附上SumDifferntGranularity.pbix文件。

如何构造DAX度量,它返回BudgetProduct (如果可能的话)或BudgetBrand的和。逻辑是,如果产品是空的,就取品牌。因此,预期的结果如下:

代码语言:javascript
复制
+---------+-------------+---------------+-----------------+
| Manager | BudgetBrand | BudgetProduct | Expected result |
+---------+-------------+---------------+-----------------+
| Alice   |          16 |            15 |              15 |
| John    |           7 |               |               7 |
| Martha  |          21 |            21 |              21 |
| Zadar   |          11 |               |              11 |
+---------+-------------+---------------+-----------------+
| Total   |          55 |            36 |              54 |
+---------+-------------+---------------+-----------------+

在这个例子中,所有的经理都有关于品牌的预算,但是有些经理(爱丽丝和玛莎)有关于产品的预算。如何构建一个衡量标准,如果可能的话,它将采用对产品的预算定义,但如果不可能的话,它将采用对品牌定义的预算。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-29 16:00:28

我认为这是可行的:

代码语言:javascript
复制
Expected Result =
VAR Summary =
    SUMMARIZE (
        Unique_Manager,
        Unique_Manager[Manager],
        "Budget_Brand", SUM ( Budget_Brand[BudgetBrand] ),
        "Budget_Product", SUM ( Budget_Product[BudgetProduct] )
    )
RETURN
    SUMX (
        Summary,
        IF ( ISBLANK ( [Budget_Product] ), [Budget_Brand], [Budget_Product] )
    )

这个组由Manager进行,并计算一个汇总表,其中包含每个BudgetBrandBudgetProduct的和,并使用指定的逻辑在这个汇总表中使用SUMX进行迭代。

这里有一个更简洁的实现

代码语言:javascript
复制
Expected Result =
SUMX (
    VALUES ( Unique_Manager[Manager] ),
    VAR SumBrand = CALCULATE ( SUM ( Budget_Brand[BudgetBrand] ) )
    VAR SumProduct = CALCULATE ( SUM ( Budget_Product[BudgetProduct] ) )
    RETURN
        IF ( ISBLANK ( SumProduct ), SumBrand, SumProduct )
)

如果是这个,我们不需要一个计算表来迭代。相反,我们在本地过滤器上下文中迭代了Manager的所有不同值,并在该上下文中对BudgetBrandBudgetProduct进行了求和。请注意,我已经用CALCULATE包装了这些总和。这样做是为了执行从SUMX (特定的Manager)中的行上下文到在BudgetBrandBudgetProduct上将该Manager作为过滤器上下文的上下文转换。将这些和存储为变量可以使IF行更具可读性,并且只要求计算SumProduct一次而不是两次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57713806

复制
相关文章

相似问题

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