我需要DAX来计算品牌总数,这将返回每个品牌1个数字,总共不同的值,忽略周和放;产品过滤器。
数据样本:
Brand Product Week Weekly_sales
Brand_1 Prod_1 1 178
Brand_2 Prod_3 1 7
Brand_2 Prod_4 1 7
Brand_2 Prod_5 1 7
Brand_2 Prod_6 1 7
Brand_1 Prod_1 2 224
Brand_2 Prod_3 2 18
Brand_2 Prod_4 2 18
Brand_2 Prod_5 2 18
Brand_2 Prod_6 2 18
Brand_1 Prod_1 3 186
Brand_1 Prod_2 3 186
Brand_2 Prod_3 3 21
Brand_2 Prod_4 3 21
Brand_2 Prod_5 3 21
Brand_2 Prod_6 3 21
Brand_1 Prod_1 4 172
Brand_1 Prod_2 4 172
Brand_2 Prod_3 4 12
Brand_2 Prod_4 4 12
Brand_2 Prod_5 4 12
Brand_2 Prod_6 4 12
在该品牌的任何一周/产品中,所需的功率枢轴输出为1个品牌数,包括子/总数,即这是枢轴看起来像:
我尝试过无数的FILTER,ALLEXCEPT,SUMX组合,而我最接近的就是:
BRAND total:=
CALCULATE(
SUMX( ALLEXCEPT( DATA,
Data[Brand],
Data[Week]),
[Vol BR max]),
VALUES(Data[Brand])
)
其中[Vol BR max]是衡量标准:
[Vol BR max]:= MAX(Data[Weekly_sales])
我按照自己的意愿返回每个品牌1个号码,但总分错误 - 不是品牌明显的价值之一:
答案 0 :(得分:2)
考虑到数据的结构,我认为客户的要求有点挑剔。
要选择要总结的行,您必须根据每周不同的品牌数量以特殊方式标记它们,这是您应该在数据来源处理的内容,而不是应该使用的PowerPivot或DAX中的数据来源仅供分析。
首先,您必须在RowNumber
中创建Power Query
列,这非常简单,请查看Create Index Columns Using Power Query。
现在,您的模型中有一个名为RowNumber
的附加列,每行总计1(样本中的22行),从1开始:
现在使用此DAX表达式创建一个名为BrandWeek
的计算列:
BrandWeek = [Brand]&"-"&[Week]
然后创建另一个计算列ShouldSum
,这将让我们确定每周应汇总哪些Weekly_sales
值。
ShouldSum =
CALCULATE (
COUNTA ( Data[BrandWeek] ),
FILTER (
Data,
[BrandWeek] = EARLIER ( Data[BrandWeek] )
&& [RowNumber] <= EARLIER ( Data[RowNumber] )
)
)
最后在你的Pivot中使用的措施是这样的:
BRAND total :=
CALCULATE (
SUM ( Data[Weekly_Sales] ),
FILTER (
ALL ( Data ),
COUNTROWS (
FILTER (
Data,
EARLIER ( Data[ShouldSum] ) = 1
&& EARLIER ( Data[Brand] ) = [Brand]
)
)
)
)
这是你应该得到的:
注意我在Power BI中使用矩阵,因为我现在无法访问Power Pivot。