You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI多子分类下按产品最新状态计数的DAX方案

Power BI DAX 子分类维度最新状态产品计数实现方案

核心计数规则对齐需求:

  1. 按SubCategory + Product粒度分组,单产品在单个子分类下仅取CalcColumn值最大的记录作为该子分类下的最新状态
  2. 单产品在某子分类下的最新状态CalcColumn值需等于该产品在当前筛选范围内的全局最大CalcColumn值,才计入该子分类计数(匹配PRD1仅计入xyz、PRD5同时计入abc和xyz的示例规则)
  3. 计算逻辑完全响应报表切片器的筛选上下文,选中任意Category/SubCategory值后结果自动更新

具体实现

直接在数据表上新建如下度量值即可,无需预创建计算列:

ProductCount = 
// 继承切片器筛选范围,排除未选中的数据
VAR SelectedData = ALLSELECTED('SalesData')
// 计算当前筛选范围内每个产品的全局最大CalcColumn值
VAR ProductGlobalMax =
    ADDCOLUMNS(
        VALUES('SalesData'[Product]),
        "@MaxVal", CALCULATE(MAX('SalesData'[CalcColumn]), SelectedData)
    )
// 计算每个子分类+产品组合下的子分类内最大CalcColumn值
VAR SubPrdMax =
    ADDCOLUMNS(
        SUMMARIZE(
            SelectedData,
            'SalesData'[Category],
            'SalesData'[SubCategory],
            'SalesData'[Product]
        ),
        "@SubMaxVal", CALCULATE(MAX('SalesData'[CalcColumn]))
    )
// 筛选符合计数规则的有效分组:子分类内最大值等于产品全局最大值
VAR ValidGroups =
    FILTER(
        SubPrdMax,
        VAR CurrentPrd = [Product]
        VAR CurrentSubMax = [@SubMaxVal]
        VAR PrdGlobalMax = MAXX(FILTER(ProductGlobalMax, [Product] = CurrentPrd), [@MaxVal])
        RETURN CurrentSubMax = PrdGlobalMax
    )
RETURN
COUNTROWS(ValidGroups)

注意:将代码中所有SalesData替换为你自己的数据源表名称即可。


调整说明

你可以根据实际业务需求灵活调整度量值逻辑:

  • 如果需要过滤特定状态的产品,可在计算最大CalcColumn的CALCULATE函数中增加State字段的筛选条件
  • 如果不需要判断产品全局最大值、仅在子分类内取最新记录计数,删除ValidGroups中关于PrdGlobalMax的判断逻辑,直接返回COUNTROWS(SubPrdMax)即可
  • 度量值支持所有标准筛选交互,在表格/矩阵视觉对象中放入Category、SubCategory字段,再放入该度量值即可展示对应结果

内容的提问来源于stack exchange,提问作者Arpit Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:45:31