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

PowerBI中按客户ID维度标记有效调研存在情况的DAX实现方案

Power BI 不符合调研要求客户标记实现方案

前置确认

客户事实表与调研表(Survey Table)已通过Customer ID建立1对多关系,客户表为1端,调研表为多端。


方案1:DAX度量值实现(推荐,原生兼容切片器筛选)

该方案无需修改原始表结构,支持动态上下文计算,适配所有切片器筛选操作。

度量值代码

不合规客户标记 = 
VAR 入职天数 = DATEDIFF(MAX('客户表'[Start Date]), TODAY(), DAY)
VAR 有效调研数量 = CALCULATE(COUNT('调研表'[Survey]), '调研表'[Survey] IN {"Survey 1","Survey 2","Survey 3"})
VAR 总调研数量 = CALCULATE(COUNT('调研表'[Survey]))
RETURN
IF(
    // 条件1:入职超30天且无任何调研记录
    (入职天数 > 30 && ISBLANK(总调研数量))
    // 条件2:有调研记录但无符合要求的有效调研
    || (NOT(ISBLANK(总调研数量)) && 有效调研数量 = 0),
    "不合规",
    "合规"
)

使用方法

  • 表格可视化直接拉取客户表Customer ID、Start Date字段,再加入上述不合规客户标记度量值
  • 如需仅展示不合规客户,对该度量值添加筛选器,筛选值为「不合规」即可
  • 支持任意维度切片器筛选(如入职时间段、客户ID区间等),度量值会自动根据筛选上下文计算结果

灵活优化提示

如果需要经常调整有效调研范围,可单独建立一张「有效调研列表」维度表存储Survey 1/2/3等有效值,将度量值中IN后的枚举列表改为引用该表的列即可,后续调整范围无需修改DAX代码。


方案2:PowerQuery自定义列实现(适合固定规则场景)

该方案将标记逻辑固化到数据模型中,适合规则不频繁变动的场景,也支持切片器筛选。

操作步骤

  1. 打开PowerQuery编辑器,选中客户表,执行「合并查询」操作,和调研表按Customer ID做左外合并(保留客户表所有行,匹配调研表对应行)
  2. 展开合并后的调研表列,仅保留Survey字段,无匹配的行该字段默认显示为null
  3. 按Customer ID分组,分组配置:
    • 新列名:所有调研类型
    • 操作:提取去重值列表
  4. 新增自定义列,输入公式:
#"新增不合规标记列" = Table.AddColumn(#"分组后的表", "不合规标记", each 
    let
        入职天数 = Duration.Days(DateTime.LocalNow() - [Start Date]),
        有调研记录 = not List.IsEmpty(List.RemoveNulls([所有调研类型])),
        有有效调研 = List.ContainsAny([所有调研类型], {"Survey 1","Survey 2","Survey 3"})
    in
        if (入职天数 >30 and not 有调研记录) or (有调研记录 and not 有有效调研) then "不合规" else "合规"
)
  1. 关闭并上载数据,直接把自定义列拉取到表格可视化即可使用。

效果验证

对照示例数据,输出结果符合预期:

  • Customer 78、Customer 91:入职超30天无调研,标记为不合规
  • Customer 56:有调研但不属于指定范围,标记为不合规
  • 如你示例中的Survey A/B/C/D属于指定有效范围,可直接调整规则中的枚举列表即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:39:02