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

Power BI数据转换:如何仅返回当前活跃(非暂停)记录?

Power BI 筛选当前活跃(非暂停)地址记录方案

需求说明

从Address表中筛选当前未处于暂停状态的记录:

  • 无暂停历史的地址直接保留
  • 有暂停历史的地址,取其最新生效的状态,仅保留最新状态为FALSE的记录

方法一:Power Query 数据转换(推荐用于数据加载阶段处理)

  1. 加载Address和AddressSuspendedHistory表进入Power Query编辑器
  2. 处理AddressSuspendedHistory表,提取每个PLACEID的最新状态记录:
    粘贴以下M语言代码到高级编辑器替换原有内容:
    let
        Source = AddressSuspendedHistory,
        // 按PLACEID分组,保留每组生效日期最新的记录
        GroupedByPlaceID = Table.Group(Source, {"PLACEID"}, {{"LatestRecord", each Table.Max(_, "EFFECTIVEDATE"), type record}}),
        // 展开记录列,获取最新状态和日期
        ExpandedLatestRecord = Table.ExpandRecordColumn(GroupedByPlaceID, "LatestRecord", {"SUSPENDED?", "EFFECTIVEDATE"}, {"SUSPENDED?", "EFFECTIVEDATE"})
    in
        ExpandedLatestRecord
    
  3. 将处理后的历史表与Address表做左外部合并,匹配列为PLACEID
  4. 添加自定义列判断是否保留该地址:
    = if [SUSPENDED?] = null or [SUSPENDED?] = false then true else false
    
  5. 筛选自定义列为true的行,删除SUSPENDED?和EFFECTIVEDATE列,即可得到目标结果表

方法二:DAX 创建计算表(用于报表端动态计算)

在Power BI模型中新建计算表,粘贴以下DAX表达式:

ActiveAddresses = 
VAR LatestStatusPerPlace = 
    ADDCOLUMNS(
        VALUES(Address[PLACEID]),
        "@LatestSuspended", 
        VAR CurrentPlace = Address[PLACEID]
        VAR LatestEffectDate = CALCULATE(MAX(AddressSuspendedHistory[EFFECTIVEDATE]), AddressSuspendedHistory[PLACEID] = CurrentPlace)
        RETURN CALCULATE(MAX(AddressSuspendedHistory[SUSPENDED?]), AddressSuspendedHistory[PLACEID] = CurrentPlace, AddressSuspendedHistory[EFFECTIVEDATE] = LatestEffectDate)
    )
RETURN
    SELECTCOLUMNS(
        FILTER(LatestStatusPerPlace, ISBLANK([@LatestSuspended]) || [@LatestSuspended] = FALSE()),
        "PLACEID", Address[PLACEID],
        "ADDRESS", Address[ADDRESS]
    )

表达式说明

  • LatestStatusPerPlace:计算每个PLACEID对应的最新暂停状态
  • 最终筛选出无暂停历史(状态为空)或最新状态为FALSE的地址,提取所需字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:20:47