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

PowerBI中PowerQuery M如何连接同表不同步骤的数据

PowerQuery M 表连接解决方案

正确的连接代码

把你的CombinedTables行替换成以下代码,用Table.Join实现两表按共同键合并:

Fonte = PostgreSQL.Database("localhost", "Database"),
    public_places = Fonte{[Schema="public",Item="public_places"]}[Data],
    #"Group1" = Table.Group(public_places, {"id", "place_name", "date"}, {{"Percent", each List.Average([Present_bool]), type nullable number}}),
    Today = Table.SelectRows(#"Group1", each Date.IsInCurrentDay([date])),
    #"Yesterday" = Table.SelectRows(#"Group1", each Date.IsInPreviousDay([date])),
    #"Rename" = Table.RenameColumns(#"Yesterday",{{"Percent", "PercentBefore"}}),
    // 左外连接:保留Today所有记录,匹配Yesterday的对应数据
    CombinedTables = Table.Join(Today, {"id", "place_name"}, #"Rename", {"id", "place_name"}, JoinKind.LeftOuter)
in
    CombinedTables

参数说明

  • Today:左表,包含今日各地点的百分比数据
  • {"id", "place_name"}:两表的共同连接键,用于匹配同一地点的今日/昨日数据
  • #"Rename":右表,已将昨日的Percent列重命名为PercentBefore
  • JoinKind.LeftOuter:连接类型,确保今日的所有记录都被保留,若某地点昨日无数据,PercentBefore会显示为null

实用建议

  • 灵活调整连接类型:
    • 若只需要两天都有数据的地点,改用JoinKind.Inner
    • 若要保留昨日所有记录,改用JoinKind.RightOuter
  • 处理空值:如果需要把null的PercentBefore替换为默认值(比如0),可添加步骤:
    #"Replace Nulls" = Table.ReplaceValue(CombinedTables, null, 0, Replacer.ReplaceValue, {"PercentBefore"})
    
  • 验证键唯一性:确保id和place_name的组合在两个表中无重复行,避免一对多匹配导致数据冗余

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:42:17