Я думаю, что вы пытаетесь соединиться только с первым экземпляром каждого значения в столбце Customer
.Кажется, что нет какой-либо функции или элемента GUI, который бы позволял вам это делать (я посмотрел справочную документацию для 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
выше в расширенный редактор и заставить его работать на вас.В противном случае, вам может понадобиться настроить при необходимости.
Это то, что я получаю, когда загружаю запрос на лист.
Возможно, есть лучшие (более эффективные) способы сделать это, но это то, что у меня есть сейчас.