用其他查询的值替换单元格中的列表
Replace list in cell by values from other query
我在 power 查询中定义智能数据替换时遇到问题。
我正在从多个列表中的 SharePoint 查询数据以创建所需的报告。
如果我需要替换仅包含 1 个数字的列中的值,我使用合并查询函数作为“vlookup”替换。
当一列包含多个用分号分隔的数字时,问题就出现了。
例子
源列表:
|唯一编号 |名称 | Assignees_ID|
|-|-|-|
|史诗1 |布拉布拉1| 1 |
|史诗2 |布拉布拉2| 1;2;3|
"Vlookup_list" 查询:
|Assignees_ID|Assignees_Names|
|-|-|
|1|标记|
|2|伊琳娜|
|3|巴特|
预期输出:
|唯一编号 |名称 | Assignees_ID |Assignees_Names |
|-|-|-| - |
|史诗1 |布拉布拉1| 1 |标记|
|史诗2 |布拉布拉2| 1;2;3|标记;伊琳娜;巴特|
那么有没有一种聪明的方法来执行这种转换?我正在尝试多种可能性,但我的知识太少无法执行。
亲切的问候
巴尔托斯
在 powerquery 中
将 Vlookup_list 加载到 powerquery 中。将查询命名为 VlookupNamesQuery 文件 .. 关闭并加载到 ... 仅创建连接
将示例源列表加载到 powerquery
右键单击 Assignees_ID 列并按每个分号拆分成行
在 VlookupNamesQuery 中合并并使用左外连接匹配 ID。使用列顶部的箭头展开以获得 Assignees_Names
根据 UniqueID 和名称分组。使用 home ... 高级编辑器 ... 修改代码以使用 Text.Combine 将拆分的代码放在一起,如下所示
let Source = Excel.CurrentWorkbook(){[Name="ExampleSourceListRange"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"UniqueID", type text}, {"Name", type text}, {"Assignees_ID", type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Assignees_ID", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Assignees_ID"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Assignees_ID", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type1",{"Assignees_ID"},VlookupNamesQuery,{"Assignees_ID"},"Names",JoinKind.LeftOuter),
#"Expanded Names" = Table.ExpandTableColumn(#"Merged Queries", "Names", {"Assignees_Names"}, {"Assignees_Names"}),
#"Grouped Rows" = Table.Group(#"Expanded Names", {"UniqueID", "Name"}, {
{"Assignees_ID", each Text.Combine(List.Transform([Assignees_ID], Text.From), ";"), type text},
{"Assignees_Names", each Text.Combine(List.Transform([Assignees_Names], Text.From), ";"), type text}
})
in #"Grouped Rows"
我在 power 查询中定义智能数据替换时遇到问题。
我正在从多个列表中的 SharePoint 查询数据以创建所需的报告。
如果我需要替换仅包含 1 个数字的列中的值,我使用合并查询函数作为“vlookup”替换。
当一列包含多个用分号分隔的数字时,问题就出现了。
例子 源列表: |唯一编号 |名称 | Assignees_ID| |-|-|-| |史诗1 |布拉布拉1| 1 | |史诗2 |布拉布拉2| 1;2;3|
"Vlookup_list" 查询: |Assignees_ID|Assignees_Names| |-|-| |1|标记| |2|伊琳娜| |3|巴特|
预期输出: |唯一编号 |名称 | Assignees_ID |Assignees_Names | |-|-|-| - | |史诗1 |布拉布拉1| 1 |标记| |史诗2 |布拉布拉2| 1;2;3|标记;伊琳娜;巴特|
那么有没有一种聪明的方法来执行这种转换?我正在尝试多种可能性,但我的知识太少无法执行。
亲切的问候 巴尔托斯
在 powerquery 中
将 Vlookup_list 加载到 powerquery 中。将查询命名为 VlookupNamesQuery 文件 .. 关闭并加载到 ... 仅创建连接
将示例源列表加载到 powerquery
右键单击 Assignees_ID 列并按每个分号拆分成行
在 VlookupNamesQuery 中合并并使用左外连接匹配 ID。使用列顶部的箭头展开以获得 Assignees_Names
根据 UniqueID 和名称分组。使用 home ... 高级编辑器 ... 修改代码以使用 Text.Combine 将拆分的代码放在一起,如下所示
let Source = Excel.CurrentWorkbook(){[Name="ExampleSourceListRange"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"UniqueID", type text}, {"Name", type text}, {"Assignees_ID", type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Assignees_ID", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Assignees_ID"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Assignees_ID", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type1",{"Assignees_ID"},VlookupNamesQuery,{"Assignees_ID"},"Names",JoinKind.LeftOuter),
#"Expanded Names" = Table.ExpandTableColumn(#"Merged Queries", "Names", {"Assignees_Names"}, {"Assignees_Names"}),
#"Grouped Rows" = Table.Group(#"Expanded Names", {"UniqueID", "Name"}, {
{"Assignees_ID", each Text.Combine(List.Transform([Assignees_ID], Text.From), ";"), type text},
{"Assignees_Names", each Text.Combine(List.Transform([Assignees_Names], Text.From), ";"), type text}
})
in #"Grouped Rows"