Power Query 自定义列查找和替换
Posted
技术标签:
【中文标题】Power Query 自定义列查找和替换【英文标题】:Power Query Custom Column Find and Replace 【发布时间】:2022-01-24 01:01:06 【问题描述】:我正在使用 Excel Power Query,我正在尝试在我的数据中创建一个列,该列本质上是使用另一个表中的列批量查找/替换一个表中的列。
对于上下文 - 我有一个按员工 ID 显示销售信息的表,按天(称为销售)。员工只能分配 1 个活动 ID。但是,在某些情况下,员工的 ID 可能会更改。截至目前,当这种情况发生时,他们的旧 ID 中的所有销售额都不会计入该员工(直到我们进行手动 vlookup,但这非常耗时,并且必须在发生这种情况时每天进行)
我有一个批量名册表,其中显示了每个员工的当前 ID,以及他们的历史 ID(如果他们有的话)。我想要做的是,如果销售数据中的员工 ID = 员工名册中的历史 id,然后将其替换为当前 id。
我尝试在销售表中添加一个自定义列:
=IF [sales clerk] = #Roster[HistoricID2] THEN #Roster[CurrentID] ELSE [sales clerk]
但它只是在 100% 的时间内退回销售员。如果有人对此有任何经验,我们将不胜感激!
【问题讨论】:
【参考方案1】:您要做的是从销售信息表开始,然后主页...合并查询 .. 使用左外连接在批量名册表中合并,通过单击它们链接如下图所示的 ID
然后使用合并列顶部的箭头展开 [x] 除旧 ID 之外的所有字段
如果您当前的 ID 不在批量花名册表中,那么您的结果会出现一些空值。如果是这样,添加列..自定义列...
= if [new]=null then [id] else [new]
然后右键删除辅助列
下面的示例代码假定 Salesino 具有列 id 并且 MassRosterTable 具有列 old 和 new (根据图像)
let Source = Excel.CurrentWorkbook()[Name="Table2"][Content],
#"Merged Queries" = Table.NestedJoin(Source,"id",MassRosterTable,"old","MassRosterTable",JoinKind.LeftOuter),
#"Expanded MassRosterTable" = Table.ExpandTableColumn(#"Merged Queries", "MassRosterTable", "new", "new"),
#"Added Custom" = Table.AddColumn(#"Expanded MassRosterTable", "FinalID", each if [new]=null then [id] else [new]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom","new")
in #"Removed Columns"
【讨论】:
这对你有用吗?以上是关于Power Query 自定义列查找和替换的主要内容,如果未能解决你的问题,请参考以下文章