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

DAX:如何将销售日期与对应产品的有效促销日期匹配?

解决方案

核心逻辑

无需嵌套IF,直接基于产品匹配+日期范围筛选,定位销售日期所属的最近一次促销即可,所有逻辑可复用,新增促销无需修改公式。

前置字段约定

先明确通用表结构,你可以对应自己的实际字段调整:

  • 销售表(Sales)核心字段:[产品ID](关联促销表的产品唯一标识)、[销售日期](单条销售记录的产生日期)
  • 促销表(Promotion)核心字段:[产品ID]、[促销ID]、[促销名称]、[促销开始日期](单场促销的启动时间)

销售表计算列DAX代码

关联促销名称 = 
VAR 当前产品 = Sales[产品ID]
VAR 当前销售日期 = Sales[销售日期]
// 筛选当前产品、早于等于销售日期的所有促销,取最大的促销开始日期
VAR 最近生效促销日期 = 
CALCULATE(
    MAX(Promotion[促销开始日期]),
    FILTER(
        Promotion,
        Promotion[产品ID] = 当前产品 && Promotion[促销开始日期] <= 当前销售日期
    )
)
// 匹配对应促销的信息,无匹配促销时返回自定义值
RETURN
IF(
    ISBLANK(最近生效促销日期),
    "无促销",
    CALCULATE(
        SELECTEDVALUE(Promotion[促销名称]),
        FILTER(
            Promotion,
            Promotion[产品ID] = 当前产品 && Promotion[促销开始日期] = 最近生效促销日期
        )
    )
)

注意事项

  • 单产品同个开始日期不允许存在多场重复促销,提前对促销表按[产品ID]+[促销开始日期]去重即可避免匹配错误
  • 如果你需要返回促销ID、折扣等其他促销字段,只需修改最后CALCULATE内的取值字段即可
  • 如果规则里促销有明确结束时间,可在FILTER条件中新增Promotion[促销结束日期] >= 当前销售日期的判定

内容的提问来源于stack exchange,提问作者David Lydike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:30:02