我认为您要做的是仅加入 Customer 列中每个值的第一个实例。似乎没有任何功能或 GUI 元素可以让您这样做(我查看了 reference documentation for Power Query M,也许我错过了一些东西)。
为了复制您的数据,我从一些表开始(左表命名为Customers,右表命名为Orders):
然后我使用下面的M 代码(前几行只是为了从工作表中获取我的表格):
let
customers = Excel.CurrentWorkbook(){[Name = "Customers"]}[Content],
orders = Excel.CurrentWorkbook(){[Name = "Orders"]}[Content],
merged = Table.NestedJoin(orders, {"CUSTOMER"}, customers, {"CUSTOMER"}, "merged", JoinKind.LeftOuter),
indexColumn = Table.AddIndexColumn(merged, "Temporary", 0, 1),
indexes =
let
uniqueCustomers = Table.Distinct(Table.SelectColumns(indexColumn, {"CUSTOMER"})), // Want to keep as table
listOfRecords = Table.ToRecords(uniqueCustomers),
firstOccurenceIndexes = List.Accumulate(listOfRecords, {}, (listState, currentItem) =>
List.Combine({listState, {Table.PositionOf(indexColumn, currentItem, Occurrence.First, "CUSTOMER")}})
)
in
firstOccurenceIndexes,
expandSelectively =
let
toBoolean = Table.TransformColumns(indexColumn, {{"Temporary", each List.Contains(indexes, _), type logical}}),
tableOrNull = Table.AddColumn(toBoolean, "toExpand", each if [Temporary] then [merged] else null),
dropRedundantColumns = Table.RemoveColumns(tableOrNull, {"merged", "Temporary"}),
expand = Table.ExpandTableColumn(dropRedundantColumns, "toExpand", {"FUNDING"})
in
expand
in
expandSelectively
如果您的表名和列名与我的匹配(包括区分大小写),那么您可能只需将上面的所有 M 代码复制粘贴到高级编辑器中并让它为您工作。否则,您可能需要根据需要进行调整。
这是我将查询加载到工作表时得到的结果。
可能有更好(更有效)的方法来做到这一点,但这就是我现在所拥有的。