Power BI / PowerPivot模型中的动态分组基于计算字段

时间:2017-02-09 11:20:38

标签: excel powerbi powerpivot dax powerquery

编辑:我愿意接受任何建议,不仅是Power Pivot,还有Power Query(M功能)或Power BI或其他任何可行的建议。感谢。

我们正在尝试在Excel / Power BI中创建模型(使用Power Query或Power Pivot或任何可行的模型),以便通过其最佳产品(基于排名系统)对客户进行分类。

我们采用的第一种方法是按最低排名(或每个最佳产品品牌)计算客户数。 (灵感来自博客https://stackoverflow.com/questions/15742186/powerpivot-dax-dynamic-ranking-per-group-min-per-group

在我们完成的步骤之下: - 在PowerPivot模型中,我们创建了分类客户表,如下面的示例所示。

  • 在同一模型中,我们添加了一个计算列,其中包含以下公式,以获得每位客户的最低排名

    =MINX (
    FILTER ( ALLSELECTED ( Customers ); [Customer_ID] = EARLIEST ( [Customer_ID] ) );
    [Ranking]
    )
    
  • 在Excel的数据透视表中,我们将计算列放在行中。

  • 然后,我们在数据透视表值中使用了计算客户的不同聚合。 这给了我第一个期望的结果。 (下面的例子是Pivot_Table.Selection1)

现在,当我们想要添加更多分析轴时,就出现了问题。 例如,除了产品品牌之外,我们希望将产品类型设置为列,并且我们希望每次添加/删除轴时都会重新计算我们的度量。 换句话说,我们希望每个最佳产品和每个产品类型都有不同的客户数。 此外,我们希望第二个属性(轴)是可变的,并且每个组的分组或不同计数是动态的。

示例

假设我们的模型中有表格分类和客户:

enter image description here enter image description here

在我们尝试的第一种方法中,我们得到了下表:Pivot_Table.Selection1:

enter image description here

现在,当我们添加分析轴时,我们希望得到以下示例:Pivot_Table.Selection2:

enter image description here

但我们有这个:

enter image description here

正如您所看到的,本集团应该有一个客户为“梅赛德斯”,一个用于“雷诺”,因为根据产品类型,客户A的顶级卡车是雷诺,其顶级车型是“梅赛德斯”。 但是,在数据透视表中,梅赛德斯组显示为卡车(在我们的数据集中甚至不存在)。

enter image description here

任何帮助或意见都将受到高度赞赏。

非常感谢您的回复。

此致 拉米&弗朗兹。

1 个答案:

答案 0 :(得分:0)

最后,我认为我理解了您的问题,客户可以拥有不同的Product_Brand值,您只想计算其排名最低的Product_Brand。

在这种情况下,这是一个可能的解决方案:

Minimum Rank表格中创建一个名为Customer的计算列。

=
CALCULATE (
    MIN ( [Ranking] );
    FILTER ( Customer; [Customer_ID] = EARLIER ( Customer[Customer_ID] ) )
)

然后创建一个度量,让我们说Customer ID Distinct Count来计算Rank等于该客户最小值的那些行。

Customer ID Distinct Count :=
CALCULATE (
    DISTINCTCOUNT ( Customer[Customer_ID] );
    FILTER ( Customer; [Ranking] = [Minimum Rank] )
)

你会得到这样的东西:

enter image description here enter image description here

如果有帮助,请告诉我。