Как я могу объединить (объединить) диапазоны из нескольких таблиц? - PullRequest
0 голосов
/ 19 февраля 2019

Мне не нужен ответ на основе формул DAX или Excel.

У меня есть две таблицы с данными Id и накопленными данными.Оба поля не зависят от таблицы.

Мне нужно создать новую таблицу table3, которая является соединением между table1 и полем cumulative2 из таблицы table2.Критерии объединения - найти первое совокупное значение 2, превосходящее совокупное1, как показано в примере:

enter image description here

1 Ответ

0 голосов
/ 19 февраля 2019

Я не думаю, что вы можете сделать это с помощью "объединения" как такового, но вы определенно можете сделать это с помощью пользовательского столбца.

let
    Source = Table.FromRows({{1,1000},{2,2000},{3,3000},{4,4000}},{"ID1","Cumulative1"}),
    #"Added Custom" = Table.AddColumn(Source, "Cumulative2", (T1) => List.Min(Table.SelectRows(Table2, each [Cumulative2] >= T1[Cumulative1])[Cumulative2]), type number)
in
    #"Added Custom"

или отформатированный немного

let
    Source = Table.FromRows({{1,1000},
                             {2,2000},
                             {3,3000},
                             {4,4000}},
                            {"ID1","Cumulative1"}
             ),
    #"Added Custom" = Table.AddColumn(Source, "Cumulative2",
                          (T1) => List.Min(
                                      Table.SelectRows(Table2, 
                                          each [Cumulative2] >= T1[Cumulative1]
                                      )[Cumulative2]
                                  ),
                          type number
                      )
in
    #"Added Custom"

Таким образом, в каждой строке в Table1 я беру Table2 и выбираю только те строки, где

Table2[Cumulative2] >= Table1[Cumulative1]

, а затем возвращаю только столбец Cumulative2 из этой таблицы (и один столбецсписок).

Так как я хочу первое значение в этом списке, я использую List.Min.


Редактировать: Это может быть немного чище ивместо этого более эффективно:

(T1) => List.First(List.Select(Table2[Cumulative2], each _ >= T1[Cumulative1])),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...