繁体   English   中英

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

[英]Dynamic Grouping in Power BI/PowerPivot Model based on a calculated field

我们正在尝试在 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 的数据透视表中,我们将计算的列放在行中。

  • 然后,我们在数据透视表值中使用了客户Count 不同聚合 ——这给了我第一个想要的结果。 (以下示例 Pivot_Table.Selection1)

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

示例

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

在此处输入图片说明 在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

但是我们有这个:

在此处输入图片说明

如您所见,“Mercedes”组应该有一个客户,“Renault”组应该有一个客户,因为根据产品类型,客户 A 的顶级卡车是雷诺,其顶级汽车是“梅赛德斯”。 然而,在数据透视表中,梅赛德斯组显示为卡车(在我们的数据集中甚至不存在)。

在此处输入图片说明

编辑

我愿意接受任何建议,不仅是 Power Pivot,还有 Power Query(M 函数)或 Power BI 或任何可行的建议。

最后我想我明白了你的问题,一个客户可以有不同的 Product_Brand 值,你只想计算其排名最低的那些 Product_Brand。

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

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

=
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] )
)

你会得到这样的东西:

在此处输入图片说明 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM