Добавить настраиваемое поле в сводную таблицу - Power Query - PullRequest
0 голосов
/ 24 октября 2018

Я использовал Power Query для добавления пользовательских полей в таблицу, составленную из двух объединенных таблиц, для имитации сводной таблицы.Тем не менее, я не могу добавить фильтр в мой финальный стол.Есть ли другой способ сделать это?

Я пытался использовать сводную таблицу из Excel, но я не могу вставить вычисляемое поле по желанию.

Вот мой файл Excel:https://ufile.io/x2v1j

1 Ответ

0 голосов
/ 31 октября 2018

Я начну с заявления об отказе от ответственности, что я не совсем уверен, что знаю, что вы пытаетесь сделать;но я все равно получил удар.

Я подумал, что вы пытались отфильтровать месяцы в запросе T_Catégories перед группировкой;поэтому я добавил туда шаг ручного фильтра.Когда я сделал это и отменил выбор месяца, ваш запрос T_Final прервался.Причина в том, что, поскольку я отфильтровал месяцы, он также отфильтровал категории, на которые ваш запрос T_Final полагался для имен столбцов.Например, это повлияло на ваши расчеты, основанные на именах столбцов.Мне пришлось изменить ваш запрос T_Final , чтобы он динамически определял имена столбцов.

Опять же, я не совсем уверен в том, что вы пытаетесь сделать, поэтому, возможно, я ошибся в расчетах, но это может помочь вам приблизиться, по крайней мере.

Как я уже сказал, в T_Catégories я добавил фильтр:

enter image description here

enter image description here

Вот когда все сломалось за T_Final .Поэтому в T_Final мне нужно было:

Изменить шаг Valeur remplacée1 на = Table.ReplaceValue(#"Colonne dynamique",null,0,Replacer.ReplaceValue,Table.ColumnNames(#"Colonne dynamique")) (я был почти уверен, что вы использовали столбцы, полученные в результате предыдущего шага Colonne dynamicique .)

Измените шаг Personnalisée ajoutée3 на = Table.AddColumn(#"Valeur remplacée1", "Total général", each List.Sum(List.RemoveFirstN(Record.ToList(_),1))) (это создание списка из записи, затем удаление первой записи списка исуммируя то, что осталось в списке.)

Измените шаг Colonnes permutées на = Table.ReorderColumns(#"Personnalisée ajoutée3",Table.ColumnNames(#"Personnalisée ajoutée3")) (я был почти уверен, что вы использовали столбец, полученный в результате предыдущего шага Personnalisée ajoutée3 .)

Измените шаг Personnalisée ajoutée на = Table.AddColumn(#"Colonnes permutées", "Indisponibilté", each List.Sum(List.RemoveLastN(List.RemoveFirstN(Record.ToList(_),1),2))) (Это создание списка из записи, затем удаление первой записи списка, затем удаление двух последних записейсписка и суммирования того, что осталось в списке. Это особенно, когда я не уверен, что добавил элементы, которые вы хотели. По крайней мере, вы можете увидеть, что я сделал, чтобы иметь возможность добавлять столбцы без использования статического симена olumn.)

Вот код m для трех запросов:

T_Catégories:

let
Source = Excel.CurrentWorkbook(){[Name="T_Catégories"]}[Content],
#"Type modifié" = Table.TransformColumnTypes(Source,{{"Métier", type text}, {"Code absence", Int64.Type}, {"Date", type date}, {"Catégorie", type text}}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié",{"Code absence", "Date"}),
#"Filtered Rows" = Table.SelectRows(#"Colonnes supprimées", each true),
#"Lignes groupées" = Table.Group(#"Filtered Rows", {"Métier", "Catégorie"}, {{"Nombre", each Table.RowCount(_), type number}})
in
#"Lignes groupées"

T_métiers:

let
Source = Excel.CurrentWorkbook(){[Name="T_métiers"]}[Content],
#"Type modifié" = Table.TransformColumnTypes(Source,{{"Métier", type text}, {"Nombre", Int64.Type}})
in
#"Type modifié"

T_Final:

let
Source = Table.Combine({T_Catégories, T_métiers}),
#"Valeur remplacée" = Table.ReplaceValue(Source,null,"Nombre employés",Replacer.ReplaceValue,{"Catégorie"}),
#"Colonne dynamique" = Table.Pivot(#"Valeur remplacée", List.Distinct(#"Valeur remplacée"[Catégorie]), "Catégorie", "Nombre"),
#"Valeur remplacée1" = Table.ReplaceValue(#"Colonne dynamique",null,0,Replacer.ReplaceValue,Table.ColumnNames(#"Colonne dynamique")),
#"Personnalisée ajoutée3" = Table.AddColumn(#"Valeur remplacée1", "Total général", each List.Sum(List.RemoveFirstN(Record.ToList(_),1))),
#"Colonnes permutées" = Table.ReorderColumns(#"Personnalisée ajoutée3",Table.ColumnNames(#"Personnalisée ajoutée3")),
#"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées", "Indisponibilté", each List.Sum(List.RemoveLastN(List.RemoveFirstN(Record.ToList(_),1),2))),
#"Personnalisée ajoutée1" = Table.AddColumn(#"Personnalisée ajoutée", "Disponibilté", each [Nombre employés]*7.5),
#"Personnalisée ajoutée2" = Table.AddColumn(#"Personnalisée ajoutée1", "Taux disponibilté (%)", each (1-[Indisponibilté]/[Disponibilté])*100),
#"Type modifié" = Table.TransformColumnTypes(#"Personnalisée ajoutée2",{{"Indisponibilté", Int64.Type}, {"Disponibilté", type number}, {"Taux disponibilté (%)", type number}})
in
#"Type modifié"

Я думаю, вы можете продвинуться отсюда довольно хорошо.

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