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列重命名为PercentBeforeJoinKind.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
相关产品推荐
相关产品推荐

