Добавить столбец предыдущих значений из таблицы таблиц в Power BI / Power Query - PullRequest
0 голосов
/ 21 февраля 2019

В поисках ответа на решение Макса Зеленского здесь .Предполагая, что в исходном примере было поле [Дата], я пытаюсь перейти еще на один уровень и добавить столбец, в котором показано предыдущее значение [Дата]

Я также посмотрел здесь и здесь и здесь .

  1. Максимально, я создал таблицу таблиц:

    • AddedCustom = Table.AddColumn(GroupedRows, "Custom", each Table.AddIndexColumn([tmp],"Occurrence", 1,1) type table)
  2. Создан второй индекс:

    • SecondIndex= Table.AddColumn(AddedCustom, "Custom.2", each Table.AddIndexColumn([Custom],"Occurance.2", 0,1), type table)
  3. Я успешно добавил столбец, который ссылается на текущую строку [Дата]:

    • CurrentDate= Table.AddColumn(SecondIndex, "Date.2", each Table.AddColumn([Custom.2],"Date.2", each [Date]), type table)
  4. Но когда я пытаюсь сослаться либо настолбец индекса (даже просто вставив {0}), новые поля ошибок.Я почти уверен, что что-то упущено в синтаксисе ссылки на строки в таблице в столбце таблиц, но я просто не уверен, как туда добраться - несколько примеров, которые я пробовал без успеха:

    • PriorDate= Table.AddColumn(SecondIndex, "PriorDate", each Table.AddColumn([Custom.2],"Prior Date", each {0}[Date]), type table) - просто чтобы посмотреть, смогу ли я вернуть значение из первой строки

    • PriorDate= Table.AddColumn(SecondIndex, "PriorDate", each Table.AddColumn([Custom.2],"Prior Date", each {[Occurance.2]}[Date]), type table) - не работает для[Occurance] или [Occurance.2]

    • PriorDate= Table.AddColumn(SecondIndex, "PriorDate", each Table.AddColumn([Custom.2],"Prior Date", each {[Occurance]-1}[Date]), type table)

    • PriorDate= Table.AddColumn(SecondIndex, "PriorDate", each Table.AddColumn([Custom.2],"Prior Date", each [Custom.2]{0}[Date]), type table)

    • PriorDate= Table.AddColumn(SecondIndex, "PriorDate", each Table.AddColumn([Custom.2],"Prior Date", each Table.SelectColums([Custom.2],[Date])), type table)

Кроме того, кто-нибудь может подсказать мне хороший справочник по синтаксису и механике для оптимизации #Tables, {Lists}, [Records] и т. Д.Я был бы признателен (я несколько раз читал главу 20 книги Кена Пулса, но она еще не застряла).Заранее спасибо!

| Name | Date     | Occurance | Prior Date (Desired) |
|------|----------|-----------|----------------------|
| A    | 1/1/2019 | 1         | null/error           |
| A    | 3/1/2019 | 2         | 1/1/2019             |
| B    | 2/1/2019 | 1         | null/error           |
| A    | 4/1/2019 | 3         | 3/1/2019             |
| B    | 5/1/2019 | 2         | 2/1/2019             |

1 Ответ

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

Как и мой ответ здесь , вместо добавления только одного индекса, вы можете добавить два, один, начиная с 0, и один, начиная с 1, который мы используем для вычисления предыдущей строки повыполнение самостоятельного слияния.

let
    Source = Table.FromRows({{"A",#date(2019,1,1)},{"A",#date(2019,1,3)},{"B",#date(2019,1,2)},{"A",#date(2019,1,4)},{"B",#date(2019,1,5)}}, {"Name", "Date"}),
    ChangeTypes = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Date", type date}}),
    GroupByName = Table.Group(ChangeTypes, {"Name"}, {{"tmp", each _, type table}}),
    AddIndices = Table.AddColumn(GroupByName, "Custom", each Table.AddIndexColumn(Table.AddIndexColumn([tmp],"Occurrence", 1,1),"Prev",0,1)),
    ExpandTables = Table.ExpandTableColumn(AddIndices, "Custom", {"Date", "Occurrence", "Prev"}, {"Date", "Occurrence", "Prev"}),
    SelfMerge = Table.NestedJoin(ExpandTables,{"Name", "Prev"},ExpandTables,{"Name", "Occurrence"},"Expanded Custom",JoinKind.LeftOuter),
    ExpandPriorDate = Table.ExpandTableColumn(SelfMerge, "Expanded Custom", {"Date"}, {"Prior Date"}),
    RemoveExtraColumns = Table.RemoveColumns(ExpandPriorDate,{"Prev", "tmp"})
in
    RemoveExtraColumns
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...