Страницы: 1
RSS
Посчитать доли в Power Query
 
Всем привет!

Помогите пожалуйста с задачей

Есть таблица, надо именно с помощью PQ посчитать доли по месяцам, в итоге должно получиться как на рисунке
 
Цитата
Mike P написал:
именно с помощью PQ
Это Ваше желание?
Можно ли - можно. Но PQ создан для предварительной обработки данных для дальнейшей аналитики в PP.
И это гораздо проще сделать в PP.
P.S. Общий итог 300% - это великолепно :)
Изменено: surkenny - 21.04.2022 17:54:38
 
К сожалению, желание не мое
Да, с процентами в примере отлично получилось:)
 
Цитата
Mike P написал:
желание не мое
А чье? :) Если руководства - нужно донести, что не нужно отверткой гайку закручивать.
Если это тестовое задание - то не вижу Ваших попыток.
Да даже для тестового задания. Нафига использовать инструмент, который не для этого создан?
Изменено: surkenny - 21.04.2022 17:59:13
 
Да я что-то не могу сообразить даже, как тут подступиться
Если суметь добавить колонки месяцев как значения в таблицу, я решение нашел. Но вот добавить месяцы с помощью PQ у меня не выходит
 
Некрасиво, но получилось
Без 300%:)

Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Категория товара", type text}, {"Вид товара", type text}, {"01.01.2019", Int64.Type}, {"01.02.2019", Int64.Type}, {"01.03.2019", Int64.Type}, {"01.04.2019", Int64.Type}, {"01.05.2019", Int64.Type}, {"01.06.2019", Int64.Type}, {"01.07.2019", Int64.Type}, {"01.08.2019", Int64.Type}, {"01.09.2019", Int64.Type}, {"01.10.2019", Int64.Type}, {"01.11.2019", Int64.Type}, {"01.12.2019", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Вид товара"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Категория товара"}, {{"Янв", each List.Sum([01.01.2019]), type nullable number}, {"Фев", each List.Sum([01.02.2019]), type nullable number}, {"Мар", each List.Sum([01.03.2019]), type nullable number}, {"Апр", each List.Sum([01.04.2019]), type nullable number}, {"Май", each List.Sum([01.05.2019]), type nullable number}, {"Июн", each List.Sum([01.06.2019]), type nullable number}, {"Июл", each List.Sum([01.07.2019]), type nullable number}, {"Авг", each List.Sum([01.08.2019]), type nullable number}, {"Сен", each List.Sum([01.09.2019]), type nullable number}, {"Окт", each List.Sum([01.10.2019]), type nullable number}, {"Ноя", each List.Sum([01.11.2019]), type nullable number}, {"Дек", each List.Sum([01.12.2019]), type nullable number}}),
    #"Demoted Headers" = Table.DemoteHeaders(#"Grouped Rows"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Demoted Headers",{{"Column1", type text}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}, {"Column9", type any}, {"Column10", type any}, {"Column11", type any}, {"Column12", type any}, {"Column13", type any}}),
    #"Transposed Table" = Table.Transpose(#"Changed Type1"),
    #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
    #"Changed Type2" = Table.TransformColumnTypes(#"Promoted Headers",{{"Категория товара", type text}, {"Категория1", Int64.Type}, {"Категория2", Int64.Type}, {"Категория3", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type2",{{"Категория товара", "Месяц"}}),
    #"Unpivoted Only Selected Columns" = Table.Unpivot(#"Renamed Columns", {"Категория1", "Категория2", "Категория3"}, "Attribute", "Value")
in
    #"Unpivoted Only Selected Columns"

 
Как то так. Лабораторная? Или курсовик?

300% сами добивайтесь
 
Mike P, а где посчитанные доли-то? :)
 
Sergey Chernichenko, Спасибо, но что-то я не нашел исходных данных в файле
 
Тьфу!
Ведь спрашиваю же, точно в PQ? Можно это сделать в PQ, но зачем извращаться??? Составителю задания - неуд! Не знает DAX.
Что хоть за компания?
300% - это некомпетентность составителя. Как и значения в итогах по строкам.
Код
Доля:=DIVIDE ( [Сумма]; CALCULATE ( [Сумма]; ALL ( 'calendar' ) ) )

В PQ просто получаем плоскую таблицу данных и календарь.
Код
let
  src     = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  unpivot = Table.UnpivotOtherColumns ( src, { "Группа товара", "Вид товара" }, "Дата", "Значение" ),
  typed   = Table.TransformColumnTypes ( unpivot, { { "Дата", type date }, { "Значение", type number } } )
in
    typed

Код
let
  dates = Table.Distinct ( data[[Дата]] ),
  addY  = Table.AddColumn ( dates, "Год", each Date.Year ( [Дата] ), Int64.Type ),
  addYM = Table.AddColumn ( addY, "YM", each Number.From ( Date.ToText ( [Дата], "yyyyMM" ) ), Int64.Type ),
  addMN = Table.AddColumn ( addYM, "МесяцN", each Date.Month ( [Дата] ), Int64.Type ),
  addM  = Table.AddColumn ( addMN, "Месяц", each Date.MonthName ( [Дата] ), type text ),
  addSM = Table.AddColumn ( addM, "Мес", each Date.ToText ( [Дата], "MMM" ), type text )
in
  addSM
Изменено: surkenny - 21.04.2022 21:37:36
 
В открытом файле вкладка "Данные" - > "Получить данные" - > "Запустить редактор запросов". Это и есть PQ, в который загружены ваши исходные данные и трансформированы под потребность вашей задачи. Там вы сможете увидеть этапы преобразования исходной таблицы, а также в Расширенном редакторе увидеть полный код этих преобразований.
 
Вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Группа товара", type text}, {"Вид товара", type text}, {"01.01.2019", Int64.Type}, {"01.02.2019", Int64.Type}, {"01.03.2019", Int64.Type}, {"01.04.2019", Int64.Type}, {"01.05.2019", Int64.Type}, {"01.06.2019", Int64.Type}, {"01.07.2019", Int64.Type}, {"01.08.2019", Int64.Type}, {"01.09.2019", Int64.Type}, {"01.10.2019", Int64.Type}, {"01.11.2019", Int64.Type}, {"01.12.2019", Int64.Type}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Группа товара", "Вид товара"}, "Attribute", "Value"),
    #"Changed Type with Locale" = Table.TransformColumnTypes(#"Unpivoted Other Columns", {{"Attribute", type date}}, "ru-RU"),
    #"Extracted Month Name" = Table.TransformColumns(#"Changed Type with Locale", {{"Attribute", each Date.MonthName(_), type text}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Extracted Month Name",{{"Value", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type1", {"Группа товара", "Attribute"}, {{"Count", each List.Sum([Value]), type number}}),
    #"Merged Queries" = Table.NestedJoin(#"Grouped Rows",{"Группа товара"},#"Table1 (2)",{"Группа товара"},"NewColumn",JoinKind.LeftOuter),
    #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Count"}, {"NewColumn.Count"}),
    #"Added Custom" = Table.AddColumn(#"Expanded NewColumn", "Custom", each [Count]/[NewColumn.Count]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Count", "NewColumn.Count"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Attribute]), "Attribute", "Custom")
in
    #"Pivoted Column"
Изменено: jakim - 21.04.2022 21:39:36
Страницы: 1
Наверх