Power BI中根据品牌数量生成Affiliate列的DAX度量需求
在Power BI中通过DAX实现按关联品牌数生成对应行数的结果
你需要生成一个结果集,其中每个Affiliate出现的行数等于其关联的不同品牌数量——比如x17关联1个品牌则显示1行,1x2关联2个品牌则显示2行,x456关联1个品牌则显示1行。以下分场景给出解决方案:
场景1:原始表已包含每个Affiliate+Brand的独立行
如果你的原始表(假设名为AffiliateBrands)已经是每行对应一个Affiliate和一个Brand(比如x17对应一行B,1x2对应两行B和F),直接创建计算表提取所需列即可:
TargetResult = SELECTCOLUMNS ( AffiliateBrands, "Affiliate", AffiliateBrands[Affiliate], "Brand", AffiliateBrands[Brand] )
这个表会直接呈现你需要的行数,每个Affiliate的行数等于其关联的品牌数。
场景2:原始表是聚合形式(每个Affiliate一行,Brand为多值)
如果原始表是聚合后的结构(比如每个Affiliate一行,Brand列存储多个品牌值),需要先拆分品牌并生成对应行数:
- 先创建计算表,获取每个Affiliate的不同品牌集合:
AffiliateBrandSets = SUMMARIZE ( AffiliateBrands, AffiliateBrands[Affiliate], "DistinctBrands", DISTINCT(AffiliateBrands[Brand]) )
- 基于这个表生成展开后的最终结果:
TargetResult = GENERATE ( AffiliateBrandSets, [DistinctBrands] )
该结果表会自动为每个Affiliate生成对应品牌数量的行,完全匹配需求。
补充:生成带行号的列
如果需要为每个Affiliate下的行添加序号(比如1x2的两行分别标记为1、2),可以用以下DAX:
AffiliateWithRowNumbers = ADDCOLUMNS ( TargetResult, "RowNumber", RANKX ( FILTER (TargetResult, TargetResult[Affiliate] = EARLIER(TargetResult[Affiliate])), TargetResult[Brand], , ASC, DENSE ) )
内容的提问来源于stack exchange,提问作者Veli K
相关产品推荐
相关产品推荐

