Страницы: 1
RSS
Power Query: признак группы по возрасту для дальнейшей обработке в Power BI
 
Добрый день. Есть задача: исходя из даты рождения сгруппировать клиентов по группе возраста для дальнейшей работы в Power BI. Т.е. в итоге нужно, чтобы прострочно появился признак группы:

  • До 16;
  • От 16 до 24
  • От 24 до 35
  • От 35 до 50
  • От 50
.Все что я смогла сделать, это добавить столбик Date.AddDays и второй расчетный ([Date.AddDays]-[День рождения])/365
И вот теперь мне нужно добавить один из 5 признаков построчно, но я не знаю как, кроме как приписать каждому возрасту свой признак. Есть ли более оптимальный путь?

Буду очень признательна вам за помощь!  
 
= Table.AddColumn(#"Измененный тип", "Custom", each let a=(Number.From(DateTime.LocalNow())-Number.From([Дата рождения2]))/365
in  if a < 16 then "До 16" else if a < 24 then "От 16 до 24" else if a < 35 then "От 24 до 35" else if a <50 then "От 35 до 50" else "От 50")
 
Как вариант:
Код
let
  Source = Excel.CurrentWorkbook(){[Name = "Data"]}[Content],
  age = Table.AddColumn(
    Source,
    "Age",
    each 
      let
        a = DateTime.FixedLocalNow(),
        b = [Дата рождения2],
        c = Date.Year(a) - Date.Year(b)
      in
        c - Number.From(a < Date.AddYears(b, c))
  ),
  rec = [
    #"до 16"       = {1 .. 15},
    #"от 16 до 24" = {16 .. 23},
    #"от 24 до 35" = {24 .. 34},
    #"от 35 до 50" = {35 .. 49},
    #"от 50"       = {50 .. 969}
  ],
  tbl = Table.ExpandListColumn(Table.RenameColumns(Record.ToTable(rec), {"Value", "Age"}), "Age"),
  join = Table.Join(age, "Age", tbl, "Age"),
  sort = Table.Sort(join, {"ID", 0})
in
  sort
Изменено: Aleksei_Zhigulin - 24.01.2021 01:57:11
 
Еще вариант
Код
Table.AddColumn(
                 #"Changed Type", // предыдущий шаг с изменением типа
                 "Group", 
                  each 
                     let
                          #"Age" = Date.Year(DateTime.FixedLocalNow()) - Date.Year([Дата рождения2]),
                          #"listGroup" = {
                                           {#"Age" >= 0 and #"Age" < 16, "до 16"},
                                           {#"Age" >= 16 and #"Age" < 24, "от 16 до 24"},
                                           {#"Age" >= 24 and #"Age" < 35, "от 24 до 35"},
                                           {#"Age" >= 35 and #"Age" < 50, "от 35 до 50"},
                                           {#"Age" >= 50, "от 50"}
                                          },
                         #"returnGroup" = List.Select(#"listGroup", each _{0} = Value.FromText("TRUE") ){0}{1}
                     in
                         #"returnGroup"
)
 
Большое всем спасибо!!  
Страницы: 1
Наверх