我有一个简单的 XLOOKUP 公式,它在 master_list 表中查找一个字符串,如果该字符串存在于 weekly_update 表中,它应该使用 weekly_update 表中的内容更新 master_list 中选定列的内容。
目前,我使用 XLOOKUP 手动执行此操作,但由于它有很多列并且需要每隔几天执行一次,因此我尝试使用 PQ 来实现它。我目前拥有的合并查询代码(Source1 = master_list,Source2 = weekly_update):
let
// Merge Source1 and Source2
MergedTables = Table.NestedJoin(Source1, {"ID Number"}, Source2, {"ID Number"}, "Source2Data", JoinKind.LeftOuter),
// Expand Source2 columns
ExpandedSource2Data = Table.ExpandTableColumn(MergedTables, "Source2Data",
{"Title", "Description", "Status", "Disposition"},
{"Source2_Title", "Source2_Description", "Source2_Status", "Source2_Disposition"}),
// Replace columns from Source1 with columns from Source2 (Conditional logic with change check and null handling)
UpdatedColumns = Table.TransformColumns(ExpandedSource2Data, {
{"Title", each if [Source2Data] <> null and (try Text.From([Title]) <> [Source2Data][Title] otherwise false) then [Source2Data][Title] else [Title], type text},
{"Description", each if [Source2Data] <> null and [Description] <> [Source2Data][Description] then [Source2Data][Description] else [Description], type text},
{"Status", each if [Source2Data] <> null and [Status] <> [Source2Data][Status] then [Source2Data][Status] else [Status], type text},
{"Disposition", each if [Source2Data] <> null and [Disposition] <> [Source2Data][Disposition] then [Source2Data][Disposition] else [Disposition], type text}
}),
// Remove temporary columns
FinalTable = Table.RemoveColumns(UpdatedColumns,
{"Source2_Title", "Source2_Description", "Source2_Status", "Source2_Disposition"})
in
if Table.RowCount(FinalTable) > 0 then FinalTable else null // Return the entire table or null if empty
这总是返回合并的表而不更新列,我无法弄清楚我遗漏了什么。
附言:我对 Power Query 还很陌生,因此,对于任何明显的疏忽,请谅解。
一种方法是:
注意 x??y 将返回 x,除非 x 为空,在这种情况下将返回 y