基于SWITCH语句的DAX SUMMARIZE汇总问题及解决方案
SKU分类汇总问题及解决方法
问题背景
我有包含财务信息的SKU数据,已通过带SWITCH函数的度量值将SKU划分为4个类别,但按类别汇总信息(如各分类产品的总营收)时无法得到正确结果。
数据模型
- FactTable:存储财务信息(产品编码、营收、利润、期间等)的事实表
- DimSKU:存储SKU映射数据(产品编码、品牌、细分等)的维度表
- DimDates:日期维度表(期间、月份等)
现有分类度量值(无法正常汇总)
由于用户需通过下拉列表选择不同期间,因此采用度量值而非计算列实现分类:
My Quadrants = VAR Quadrants = SWITCH( TRUE(), AND([SKU_profit] >= [Total_profit], [SKU_growth] >= [Total_growth]), "Maintain", AND([SKU_profit] < [Total_profit], [SKU_growth] < [Total_growth]), "Address", AND([SKU_profit] >= [Total_profit], [SKU_growth] < [Total_growth]), "Grow", AND([SKU_profit] < [Total_profit], [SKU_growth] >= [Total_growth]), "Investigate" ) RETURN Quadrants
年初至今(YTD)营收度量值
YTD revenue = VAR YTD_revenue = TOTALYTD(SUM(FactTable[Revenue]), DimDates[Date]) RETURN YTD_revenue
汇总需求
将度量值添加到表格类视觉对象时,显示所有SKU能正常工作,但需要按分类汇总为如下格式:
MyQuadrants / Revenue Maintain / 1,000 Address / 250 Grow / 500 Investigate / 350
解决方法
感谢David的建议,已解决该问题,具体步骤如下:
1. 创建配置表
ConfigTable = VAR Total_profit = [Total_profit] VAR Total_growth = [Total_growth] RETURN { ("Maintain", Total_profit, 1, Total_growth, 1), ("Address", 0, Total_profit, 0, Total_growth), ("Grow", Total_profit, 1, 0, Total_growth), ("Investigate", 0, Total_profit, Total_growth, 1) } // 包含5列:分类名称、利润下限、利润上限、增长下限、增长上限 // 使用表构造函数引用变量
2. 创建分段营收度量值
YTD revenue (segmented) = CALCULATE( [YTD revenue], FILTER( VALUES(DimSKU), NOT ISEMPTY( FILTER( ConfigTable, ( [SKU_profit] >= ConfigTable[min profit] && [SKU_profit] < ConfigTable[max profit] && [SKU_growth] >= ConfigTable[min growth] && [SKU_growth] < ConfigTable[max growth] ) ) ) )
内容的提问来源于stack exchange,提问作者carteblanche
相关产品推荐
相关产品推荐

