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

如何使用DAX查询按日期逐行获取Power BI的Order Failure %度量值

解决Power BI中DAX查询按日期返回度量值逐行数据的问题

核心原因

你当前查询返回汇总值,是因为度量值的计算依赖上下文环境。若查询未明确指定按日期列构建行上下文,度量值会默认在全局上下文下计算汇总结果。以下是具体解决方案:

方法1:使用SUMMARIZE按日期分组计算

通过SUMMARIZE函数将日期列作为分组依据,让度量值在每个日期的独立上下文下计算:

EVALUATE
SUMMARIZE (
    '你的数据表名',          -- 替换为实际表名
    '你的数据表名'[日期列],   -- 替换为实际日期列名
    "Order Failure %", [Order Failure %]  -- 关联你的度量值
)
ORDER BY '你的数据表名'[日期列]  -- 按日期排序结果

SUMMARIZE会自动对日期列去重,按唯一日期分组计算对应度量值,适合按天/周期聚合的场景。

方法2:使用SELECTCOLUMNS+VALUES获取逐行日期数据

如果需要保留所有原始日期行(包括重复日期),可以用VALUES提取所有唯一日期,再通过SELECTCOLUMNS逐行计算度量值:

EVALUATE
SELECTCOLUMNS (
    VALUES ('你的数据表名'[日期列]),  -- 获取所有唯一日期
    "日期", '你的数据表名'[日期列],
    "Order Failure %", [Order Failure %]
)
ORDER BY '你的数据表名'[日期列]

检查度量值本身的上下文问题

如果上述方法仍返回汇总值,需排查度量值是否存在强制忽略日期上下文的逻辑。例如:

  • 错误示例(用ALL忽略了日期上下文):
Order Failure % = DIVIDE(
    CALCULATE(COUNT('表'[失败订单]), ALL('表'[日期列])),
    CALCULATE(COUNT('表'[总订单]), ALL('表'[日期列])),
    0
)
  • 修改为保留日期上下文的正确写法:
Order Failure % = DIVIDE(
    COUNT('表'[失败订单]),
    COUNT('表'[总订单]),
    0
)

若需保留其他筛选上下文(如地区、产品),可使用ALLEXCEPT替代ALL,仅排除指定外的上下文:

Order Failure % = DIVIDE(
    CALCULATE(COUNT('表'[失败订单]), ALLEXCEPT('表', '表'[日期列])),
    CALCULATE(COUNT('表'[总订单]), ALLEXCEPT('表', '表'[日期列])),
    0
)

内容的提问来源于stack exchange,提问作者Uday S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:43:26