Страницы: 1
RSS
PBI - Сбор однотипных значений, но под разными наименованиями
 
Добрый день.

Есть две таблицы: красная с актуальными наименованиями статей расходов и голубая - со старыми (прошлогодними).

Требуется в Power Bi запрос к голубой таблице преобразовать так, чтобы после преобразования запроса названия статей импортировались из голубой таблицы с актуальными названиями, как в красной таблице. Например, в прошлом году статья называлась "Фриланс, а в текущем году - "Сторонние расходы"

В некоторых случая нужно объединить (суммировать) две старых статьи в одну новую. Например, "покупка оборудования" + "покупка мебели" - в "Хозрасходы".

Помогите, пожалуйста, правильно подступиться к решению этой задачи. Достаточно ли обойтись только инструментами преобразования PBI, или нужна предварительная обработка в Excel или Power Query? Или только ручками?

       
 
Alex_pl Alex_pl, не видя таблицу данных, предложу создать справочник затрат. Связь по второму столбцу, в визуализации выводим первый.
 
 
Я тоже в первую очередь думал о таком справочнике, но надеялся, что есть варианты без копи-паст.
Спасибо!
 
Цитата
Alex_pl Alex_pl написал:
есть варианты без копи-паст
Как Excel/Power BI должны понять, что "покупка мебели" - это хозрасходы?
Вы можете в ETL обработке сделать замены старых наименований:

1. Составляете таблицу старых и соответствующих новых наименований:


2. В PQ ее преобразовываете в запись:
Код
let
  src        = Excel.CurrentWorkbook(){[ Name = "costReplace" ]}[Content],
  rename     = Table.RenameColumns ( src, { { "Старое наименование затрат", "Name" }, { "Новое наименование затрат", "Value" } } ),
  nameToText = Table.TransformColumns ( rename, { "Name", Text.From } ),
  recFromTbl = Record.FromTable ( nameToText )
in
  recFromTbl

3. В таблице данных меняете старое наименование на новое (если совпадение есть) или оставляете текущее (если такого наименования нет в таблице замен):
Код
let
  src     = Excel.CurrentWorkbook(){[ Name = "cost" ]}[Content], 
  typed   = Table.TransformColumnTypes ( src, { { "Дата", type date }, { "Затраты", type text }, { "Значение", type number } } ), 
  replace = Table.TransformColumns ( typed, { "Затраты", ( x ) => Record.FieldOrDefault ( costReplace, x, x ), type text } )
in
  replace

Таким образом Вы избавите себя от необходимости прописывать все Затраты. Нужно в таблицу замен внести только те, которые поменялись.
Изменено: surkenny - 22.10.2021 14:48:18
 
surkenny, Благодарю в очередной раз за помощь!
Страницы: 1
Наверх