Power Pivot按州分组计算主导水果的DAX公式咨询
Power Pivot 主导水果计算DAX方案
前置说明
- 假设原始采购明细表名为
Sales,包含State、Customer、Fruit、Qty四个字段,实际使用时替换为你自己的表名即可 - 计算逻辑强制忽略Customer维度的筛选,仅按州+水果维度聚合总采购量,匹配统计需求
核心度量值公式(生成Dominant Fruit列)
Dominant Fruit = // 获取当前上下文对应的州值 VAR CurrentStateValue = VALUES(Sales[State]) // 按水果维度分组,计算当前州下各水果的总采购量,清除客户维度的筛选干扰 VAR FruitQtyAggTable = ADDCOLUMNS( ALL(Sales[Fruit]), "@TotalQty", CALCULATE( SUM(Sales[Qty]), CurrentStateValue, REMOVEFILTERS(Sales[Customer]) ) ) // 取当前州下水果的最高采购量 VAR MaxPurchaseQty = MAXX(FruitQtyAggTable, [@TotalQty]) // 返回采购量等于最高值的水果,并列值自动用逗号拼接 RETURN CONCATENATEX( FILTER(FruitQtyAggTable, [@TotalQty] = MaxPurchaseQty), Sales[Fruit], ", " )
一键生成目标结果表的计算表公式
如果需要直接导出包含State、Dominant Fruit两列的结果表,可新建如下计算表:
Result Table = ADDCOLUMNS( VALUES(Sales[State]), "Dominant Fruit", [Dominant Fruit] )
调整说明
- 若存在多个水果采购量并列第一的场景,当前公式会拼接所有并列水果名称;如果需要仅返回单个值,可将RETURN部分修改为:
MAXX(FILTER(FruitQtyAggTable, [@TotalQty] = MaxPurchaseQty), Sales[Fruit]) - 版本兼容:如果使用2019及更早版本的Power Pivot,不支持
REMOVEFILTERS函数,可将其替换为ALL(Sales[Customer]),计算逻辑完全一致 - 代入提供的样本数据验证:NY州输出Pear,CA州输出Orange,完全匹配预期结果
内容的提问来源于stack exchange,提问作者waealu
相关产品推荐
相关产品推荐

