Power BI中TOPN DAX函数显示空白及切片器失效问题求助
Power BI DAX问题解决:自动显示TOP N销量商品ID
问题现状
- 卡片视觉对象默认空白,仅在选中其他销售/商品筛选条件后才显示内容
- 切片器【Select N】选择TOP1/2/3时功能失效
现有DAX代码
度量值【Top Selling Prod by Quantity】
Top Selling Prod by Quantity = CALCULATE(SELECTEDVALUE(Transactions[ITEM_ID]) ,TOPN([Selected N], Transactions, [Total Quantity], DESC))
度量值【Selected N】
Selected N = SELECTEDVALUE('Select Top N'[Select N])
度量值【Total Quantity】
Total Quantity = sum(Transactions[QTY_INVOICED])
数据示例
| ITEM_ID | Total Quantity |
|---|---|
| CH15 | 25283 |
| CH16 | 25006 |
| CH17 | 18505 |
| CH18 | 18440 |
| CH37 | 17599 |
问题原因
- 默认空白:无筛选时,
TOPN返回多行数据,SELECTEDVALUE仅在上下文只有单一值时返回结果,否则返回空白 - TOPN失效:直接用
Transactions原始表作为TOPN的表参数,会基于交易行而非聚合后的商品总销量排序,逻辑不匹配
解决方案
修改【Top Selling Prod by Quantity】度量值,先聚合每个商品的总销量,再筛选TOP N,最后提取对应的ITEM_ID:
Top Selling Prod by Quantity = VAR TopNProducts = TOPN( [Selected N], // 先聚合生成唯一商品+对应总销量的列表 SUMMARIZE(Transactions, Transactions[ITEM_ID], "TotalQty", [Total Quantity]), [TotalQty], DESC ) // 用CONCATENATEX处理多个TOP N的情况,多个商品用逗号分隔 RETURN CONCATENATEX(TopNProducts, Transactions[ITEM_ID], ", ")
补充调整
- 若仅需返回单个TOP1商品ID,可替换为
MAXX逻辑:
Top Selling Prod by Quantity = VAR Top1Product = TOPN( 1, SUMMARIZE(Transactions, Transactions[ITEM_ID], "TotalQty", [Total Quantity]), [TotalQty], DESC ) RETURN MAXX(Top1Product, Transactions[ITEM_ID])
- 给
Selected N加默认值,确保切片器未选择时默认显示TOP1:
Selected N = SELECTEDVALUE('Select Top N'[Select N], 1)
内容的提问来源于stack exchange,提问作者Katlego
相关产品推荐
相关产品推荐

