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

如何在DAX查询中显示无记录月份的空值(0值)?

解决方案

要让时间范围内的所有月份都显示(无记录月份填充0),需要先生成完整的月份序列,再逐个计算对应月份的数值,具体修改如下:

核心修改思路

  1. 获取明确的起止日期标量:将原查询中返回表的FromDate转为单个日期值,确保能准确筛选DATE表的范围。
  2. 生成完整月份列表:从DATE表中提取起止日期内的所有月份,确保无数据的月份也被包含。
  3. 调整度量值处理空值:用COALESCE将空结果转为0,同时优化原度量值的性能。
  4. 遍历完整月份计算数值:用GENERATE遍历所有月份,逐个计算对应维度下的数值。

修改后的DAX查询

DEFINE
VAR SelectedSadCode = @sadCode
-- 获取标量起始日期:对应店铺的上年同期日期
VAR StartDate = MAXX(
    CALCULATETABLE (
        DATEADD ( 'BUYING SHOP'[FROM_DATE], -1, YEAR ),
        TREATAS ( { SelectedSadCode }, 'BUYING SHOP'[SAD_CODE] )
    ),
    [FROM_DATE]
)
-- 获取标量结束日期:对应店铺的上一个完整月份
VAR EndDate = CALCULATE (
    [Prior Completed Month],
    TREATAS ( { SelectedSadCode }, 'BUYING SHOP'[SAD_CODE] )
)
-- 生成时间范围内的所有月份(包含无数据的月份)
VAR AllMonths = 
    CALCULATETABLE (
        VALUES('DATE'[cMonth]),
        FILTER(
            ALL('DATE'[FullDate]),
            'DATE'[FullDate] >= StartDate && 'DATE'[FullDate] <= EndDate
        )
    )
-- 调整后的维修维护费用度量值:空值自动转为0
MEASURE 'PRODUCT'[Maintenance_Repair] =
    COALESCE(
        CALCULATE (
            SUM(PURCHASE[Sum Purchases Prior]),
            PRODUCT[PRODUCT_CATEGORY_CODE] = "MAINTENANCE_AND_REPAIR"
        ),
        0
    )
EVALUATE
-- 遍历所有月份,计算每个月的数值
GENERATE(
    AllMonths,
    VAR CurrentMonth = 'DATE'[cMonth]
    RETURN
    ROW(
        "cMonth", CurrentMonth,
        "Maintenance_Repair", 
        CALCULATE(
            [Maintenance_Repair],
            TREATAS({SelectedSadCode}, 'BUYING SHOP'[SAD_CODE]),
            'DATE'[cMonth] = CurrentMonth
        )
    )
)
ORDER BY 'DATE'[cMonth] ASC

关键修改说明

  • 标量化起止日期:用MAXX将原FromDate的表结果转为单个日期值,确保AllMonths能正确筛选DATE表的范围。
  • 完整月份序列:AllMonths直接从DATE表提取范围内的所有cMonth,保证所有月份都被包含,不受数据存在与否的影响。
  • 度量值优化:将原SUMX(FILTER(...))改为CALCULATE(SUM(...), 筛选条件),性能更优;通过COALESCE确保无数据时返回0而非空值。
  • GENERATE遍历计算:替代原SUMMARIZECOLUMNS,强制遍历所有月份并计算对应数值,确保无数据月份也出现在结果中。

内容的提问来源于stack exchange,提问作者Adrian Salas Agüero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:42:51