基于SSAS的Power BI分页报表:@Color参数ALL值逻辑实现需求
SSAS分页报表@Color多选参数的"ALL"值逻辑实现
我有一个基于SSAS表格模型数据源的分页报表,包含**@Color**多选参数,需求如下:
- 若用户选择的@Color参数包含"ALL"值,返回所有颜色的ClientSales数据集
- 若未包含"ALL",仅返回选中颜色的数据
(已将"ALL"值加入@Color参数可用值的ColorNames数据集中)
更新后已创建两个DAX变量:
_dataset0:返回选中颜色的数据(受@Color参数筛选)_dataset1:返回所有颜色的数据(不受@Color参数筛选)
最终DAX查询代码
DEFINE var _dataset0 = // 接收@Color多选参数的数据集 SUMMARIZECOLUMNS( DimCLient[ClientName] ,DimGeography[CountryName] ,DimVehicle[Make] ,DimVehicle[Model] ,DimVehicle[Color] ,FILTER(VALUES(DimGeography[CountryName]), DimGeography[CountryName] = @CountryName) ,RSCustomDaxFilter(@Color,EqualToCondition,[DimVehicle].[Color],String) ,Sales, SUM(FactSales[SalePrice]) ) var _dataset1 = // 返回所有颜色的数据集,不受切片器选择影响 SUMMARIZECOLUMNS( DimCLient[ClientName] ,DimGeography[CountryName] ,DimVehicle[Make] ,DimVehicle[Model] ,DimVehicle[Color] ,FILTER(VALUES(DimGeography[CountryName]), DimGeography[CountryName] = @CountryName) ,KEEPFILTERS ( FILTER ( ALL ( DimVehicle[Color] ), NOT ISBLANK ( DimVehicle[Color] ) ) ) ,Sales, SUM(FactSales[SalePrice]) ) EVALUATE // 根据@Color是否包含"ALL"切换数据集 IF("ALL" IN @Color, _dataset1, _dataset0)
关键说明
- 使用DAX的
IN操作符判断@Color参数集合中是否包含"ALL"值 - 当条件成立时返回
_dataset1(全量颜色数据),否则返回_dataset0(选中颜色数据) - 确保"ALL"值已正确添加到@Color参数的可用值列表中,否则该逻辑无法触发
内容的提问来源于stack exchange,提问作者Vickar
相关产品推荐
相关产品推荐

