Power Query · Динамический расчет столбцов · M Синтаксис - PullRequest
0 голосов
/ 13 мая 2019

Мне нужно сделать новый столбец как вычитание из двух (год от предыдущего года), каждый год будет меняться.Итак, первое значение должно быть: 49,443

enter image description here

Я пробовал это, но это не работает.

"[" & Text.From(Date.Year(DateTime.LocalNow())-1) & "]" -
"[" & Text.From(Date.Year(DateTime.LocalNow())-2) & "]"

Спасибо

1 Ответ

0 голосов
/ 08 июня 2019

Не уверен, что вам все еще нужен ответ, но я думаю, что вы почти у цели.

DateTime.LocalNow правильно, но вы не можете использовать "[" и &, потому что это приведет к строковому литералу - тогда как вам нужен динамический доступ к полю с использованием чего-то вроде Record.Field (в контексте строки из each заявления).

Это таблица, содержащая некоторые фиктивные / фиктивные данные. Последний столбец (differencia anual) в основном представляет собой разницу между значениями предыдущего года и значениями двухлетней давности (которые на момент написания статьи составляли 2018 и 2017 годы соответственно).

Example table

Попробуйте что-то вроде:

let
    mockData = Table.FromColumns({{11..20}, List.Numbers(40, 10, 2)}, type table [2017 = Int64.Type, 2018 = Int64.Type]),
    annualDifference = 
        let
            currentYear = Date.Year(DateTime.LocalNow()),
            previousYearHeader = Number.ToText(currentYear - 1),
            twoYearsAgoHeader = Number.ToText(currentYear - 2),
            differenceColumn = Table.AddColumn(mockData, "diferencia anual", each Record.Field(_, previousYearHeader) - Record.Field(_, twoYearsAgoHeader), type number)
        in differenceColumn
in
    annualDifference

Поскольку вы используете DateTime.LocalNow, вычитаемые столбцы будут определяться системными часами вашего компьютера - что, я думаю, то, что вы хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...