Страницы: 1
RSS
Правильное применение функции к нескольким колонкам Power Query
 
Добрый день. Подскажите пожалуйста привильный синтаксис для прменения функции к нескльким колонкам. В моем примере функция (call_fn_tot_cumul) прменена к колонке [tab][DSP], возможно ли в этой же строчке прменить ее к [tab][MSL]? Спасибо

Код
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"OneKey", type text}, {"DATE", type date}, {"TYPE", type text}, {"Nb", Int64.Type}}),
    #"Colonne dynamique" = Table.Pivot(#"Type modifié", List.Distinct(#"Type modifié"[TYPE]), "TYPE", "Nb", List.Sum),
    #"Valeur remplacée" = Table.ReplaceValue(#"Colonne dynamique",null,0,Replacer.ReplaceValue,{"OneKey", "DATE", "DSP", "MSL"}),
    #"Lignes triées" = Table.Sort(#"Valeur remplacée",{{"DATE", Order.Ascending}, {"OneKey", Order.Ascending}}),
    #"Année insérée" = Table.AddColumn(#"Lignes triées", "Année", each Date.Year([DATE]), Int64.Type),
    #"Lignes groupées" = Table.Group(#"Année insérée", {"OneKey", "Année"}, {{"tab", each _, type table [OneKey=text, DATE=date, DSP=nullable number, MSL=nullable number, Année=number]}}),
    call_fn_tot_cumul = Table.ReplaceValue(#"Lignes groupées",each [tab],each fn_tot_cumul([tab],[tab][DSP],"Cumul_det_DSP"),Replacer.ReplaceValue,{"tab"})[[tab]],
    #"tab développé" = Table.ExpandTableColumn(call_fn_tot_cumul, "tab", {"OneKey", "DATE", "DSP", "MSL", "Année", "Cumul_det_DSP"}, {"OneKey", "DATE", "DSP", "MSL", "Année", "Cumul_det_DSP"})
in
    #"tab développé"
Изменено: badzen - 03.10.2022 21:03:44
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"OneKey", type text}, {"DATE", type date}, {"TYPE", type text}, {"Nb", Int64.Type}}),
    #"Colonne dynamique" = Table.Pivot(#"Type modifié", List.Distinct(#"Type modifié"[TYPE]), "TYPE", "Nb", List.Sum),
    #"Valeur remplacée" = Table.ReplaceValue(#"Colonne dynamique",null,0,Replacer.ReplaceValue,{"OneKey", "DATE", "DSP", "MSL"}),
    #"Lignes triées" = Table.Sort(#"Valeur remplacée",{{"DATE", Order.Ascending}, {"OneKey", Order.Ascending}}),
    #"Année insérée" = Table.AddColumn(#"Lignes triées", "Année", each Date.Year([DATE]), Int64.Type),
    #"Lignes groupées" = Table.Group(#"Année insérée", {"OneKey", "Année"}, {{"tab", each _, type table [OneKey=text, DATE=date, DSP=nullable number, MSL=nullable number, Année=number]}}),
    ADD =  Table.AddColumn(#"Lignes groupées", "Пользовательский", each 
        let  
            a = fn_tot_cumul([tab],[tab][DSP],"Cumul_det_DSP") ,
            b = fn_tot_cumul(a,a[MSL],"Cumul_det_MSL")
        in 
            b),
    COMBINE =  Table.Combine(ADD[tab])       
in
    COMBINE

Вариант. Я что-то никогда методом Table.ReplaceValue не пользуюсь, но если нравится и хочется именно так, можно подумать как там впиндюрить.
Вот так еще:
Код
    ПрименитьФункцию = Table.TransformColumns(#"Lignes groupées", 
            {"tab", each List.Accumulate(
                {"DSP", "MSL"},
                _,
                (s,c) =>  fn_tot_cumul(s,Table.ToColumns(Table.SelectColumns(s, c)){0},"Cumul_det_"&c)
                )
            }
        )

Или так, проще понять:
Код
    ПрименитьФункцию = Table.TransformColumns( #"Lignes groupées", 
        {
            {
                "tab", each [a = fn_tot_cumul(_,_[DSP],"Cumul_det_DSP"),
                             b= fn_tot_cumul(a,a[MSL],"Cumul_det_MSL")][b]
            }
        }
    )
Изменено: whateverlover - 03.10.2022 23:21:27
 
Еще вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"OneKey", type text}, {"DATE", type date}, {"TYPE", type text}, {"Nb", Int64.Type}}),
    #"Colonne dynamique" = Table.Pivot(#"Type modifié", List.Distinct(#"Type modifié"[TYPE]), "TYPE", "Nb", List.Sum),
    #"Valeur remplacée" = Table.ReplaceValue(#"Colonne dynamique",null,0,Replacer.ReplaceValue,{"OneKey", "DATE", "DSP", "MSL"}),
    #"Lignes triées" = Table.Sort(#"Valeur remplacée",{{"DATE", Order.Ascending}, {"OneKey", Order.Ascending}}),
    #"Année insérée" = Table.AddColumn(#"Lignes triées", "Année", each Date.Year([DATE]), Int64.Type),
    #"Lignes groupées" = Table.Group(#"Année insérée", {"OneKey", "Année"}, {"tab", each let Custom1 = _,
  col_names = Table.ColumnNames(Custom1),
  lst = Custom1[DSP],
  lst2 = Custom1[MSL],
  counter = List.Count(lst),
  list_running_total =
    List.Generate(
      () => [index = 0, total = lst{index}, total2 = lst2{index} ],
      each [index] < counter,
      each [index = [index] + 1, total = [total] + lst{index}, total2 = [total2] + lst2{index}],
      each {[total],[total2]}
    ),
    tab_to_cols = Table.ToColumns(Custom1) & {list_running_total},
    res = Table.FromColumns(tab_to_cols, col_names & {"name"})
in res
 }),
    Custom3 = Table.SplitColumn( Table.Combine(#"Lignes groupées"[tab]) , "name", each {_{0},_{1}}, {"Cumul_det_DSP","Cumul_det_MSL"})
in
    Custom3
Страницы: 1
Наверх