首页 > 解决方案 > DAX Measure PowerPivot:根据子组值排除组

问题描述

我正在尝试根据生产组汇总变量(例如平均“材料克数”)创建一个度量(参见下面的数据示例)。

样本数据

生产组包含产品,由产品 ID 字段标识。当该产品完成生产时,将其标记为“完成”并输入“材料克数”。

我可以使用GROUPBYand SUMXAVERAGEX和函数按组汇总并排除某些行CALCULATEFILTER但是,我不想总结任何包含不完整产品的生产组。

例如,在下面的示例数据中,我不希望看到有关生产组 B 的任何报告,因为该组中的某些产品是“不完整的”。

请让我知道您将如何做到这一点。

下面是一些示例代码,按我想要的组进行汇总,但不排除产品不完整的组。

    averagex(  
        GROUPBY(Table,[Production Group],"Production Group Yield", 
        SUMX(CURRENTGROUP(),[Grams Material])),[Production Group Yield])

最好的,

机器学习

标签: daxmeasure

解决方案


我会以非常不同的方式处理这个问题。

VAR Groups = VALUES ( 'Table'[Production Group] ) // all groups in context
VAR GroupsWithIncomplete =
  CALCULATETABLE (
    VALUES ( 'Table'[Production Group] ),
    'Table'[Processing Complete?] = "Incomplete"
  )
VAR GroupsWithoutIncomplete =
  EXCEPT ( Groups, GroupWithIncomplete ) // just a set difference
RETURN
  CALCULATE (
    SUM ( 'Table'[Value] ),
    GroupsWithoutIncomplete
  )
    / COUNTROWS ( GroupsWithoutIncomplete )

我们可以很容易地在上下文中获得一组所有组,使用VALUES. 然后我们在上下文中找到所有具有不完整的组。设定的差异使我们只有上下文中的组,而没有不完整的。我们可以使用该集合作为过滤器,CALCULATE此处平均值的分母就是集合中的组数GroupsWithoutIncomplete


推荐阅读