权力查询:根据其他列替换值

时间:2018-09-26 21:37:49

标签: powerbi powerquery powerbi-desktop powerbi-datasource

我有一个与我合作的学位课程和大学的数据集,但是近年来有几所大学的名字发生了变化。

+------+------------------------------+------------------+
| Year |           College            |     Program      |
+------+------------------------------+------------------+
| 2018 | College of Arts & Humanities | BA Communication |
| 2017 | College of Arts & Humanities | BA Communication |
| 2016 | College of Arts & Sciences   | BA Communication |
+------+------------------------------+------------------+

我想做的是用最近一年的大学名称替换程序的每个引用上的大学名称。在上面的示例中,它只会将2016更改为“艺术与人文学院”。

我还是力量查询之类的新手,所以我对如何处理它一无所知...

我可以使用信息创建新列,或替换列上的文本,我只需要一种不手动的方法。

还有其他人遇到吗?或对如何处理有想法?任何建议将不胜感激。 :)


更新:替换值不起作用,因为某些大学被分割了,并且没有简单的A-B转换。

当我说“几所”大学时,有1所大学分为两所,另外2所被重命名。我们正在谈论的是所有不同学院的一个数据集中的数千条记录。对于名称更改,我没有任何类型的参考表。我已经在此数据集上工作了2天,而我能找到的最简单的逻辑是用最近一年的大学名称替换每个程序中的大学名称。


最终更新:感谢@ user9264230。更新提供的代码中的引用后,看起来已经解决了该问题!

1 个答案:

答案 0 :(得分:0)

您需要一个将一所大学与另一所大学区分开的关键字段。如果是现场程序,则使用代码

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"Program"}, {{"Year", each List.Max([Year]), type number}}),
#"Merged Queries" = Table.NestedJoin(#"Grouped Rows",{"Program", "Year"},Source,{"Program", "Year"},"Source",JoinKind.LeftOuter),
List = Table.ExpandTableColumn(#"Merged Queries", "Source", {"College"}, {"College"}),
#"Merged Queries1" = Table.NestedJoin(Source,{"Program"},List,{"Program"},"List",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries1", "List", {"College"}, {"College.1"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Table2",{"College"})
in #"Removed Columns"

否则,将Program的所有实例替换为所需字段的名称(例如Key)