Страницы: 1
RSS
создание вспомогательного списка в каждой строке, each _ выражения в power qwery
 
Форумчанам Привет !

Вот упрощенный пример моей проблемы. Нужно получить значение-оценку, которая основывается на нескольких полях в строке. Эти n-полей будут собраны в список. Список будет использоваться два раза.
Идея заключается в том, чтобы создать список 1 раз, использовать его два раза по переменной li, и сохранить только результирующее значение.
Я могу решить проблему создав доп. столбец, где будет валяться этот список (шаг добавитьСписок). Затем добавить колонку с результатом (шаг попытка2). Затем удалить колонку со списками. Но может-быть кто-нибудь знает, как объявить и создать его прямо внутри шага вычисления результата (как в шаг итогОценка)?

Код
let  
  // как буд-то 1 строчка таблицы
  Источник = Table.FromRecords ( { [ A = 1, B = 1, C = 1, D = - 2, E = 1 ] } ), 
  
  // чтобы работало нужны значения-цифры
  #"Измененный тип" = Table.TransformColumnTypes (
    Источник, 
    {
      { "A", Int64.Type }, 
      { "B", Int64.Type }, 
      { "C", Int64.Type }, 
      { "D", Int64.Type }, 
      { "E", Int64.Type }
    }
  ), 
      
  // добавляю колонку, в которой храню списки
  добавитьСписок = Table.AddColumn ( #"Измененный тип", "list", each { [A], [B], [C], [D], [E] } ), 
      
  // потыка 1 угадать синтаксис - неуспешная
  итогОценка = Table.AddColumn (
    добавитьСписок, 
    "оценка", 
    let
      li = { [A], [B], [C], [D], [E] }
    in
      each 
        if List.MatchesAll ( li, each _ = - 2 ) then
          "искл"
        else if List.MatchesAny ( li, each _ = 1 or _ = 4 ) then
          "проблема"
        else
          "ок", 
    type number
  ), 
      
  // вот так работает как задуманно, но используется нежелательный столбец [list]
  попытка2 = Table.AddColumn (
    добавитьСписок, 
    "оценка", 
    each 
      if List.MatchesAll ( [list], each _ = - 2 ) then
        "искл"
      else if List.MatchesAny ( [list], each _ = 1 or _ = 4 ) then
        "проблема"
      else
        "ок", 
    type text
  )
in
  попытка2
Изменено: Alexey795 - 18.11.2021 15:14:41
 
Код
  // потыка 2 угадать синтаксис - успешная
  итогОценка = Table.AddColumn (
    добавитьСписок, 
    "оценка", 
      each 
        let li = { [A], [B], [C], [D], [E] } in
        if List.MatchesAll ( li, each _ = - 2 ) then
          "искл"
        else if List.MatchesAny ( li, each _ = 1 or _ = 4 ) then
          "проблема"
        else
          "ок", 
    type number
  ), 
Вот горшок пустой, он предмет простой...
 
Спасибо)
Страницы: 1
Наверх