Округление всех столбцов, кроме первого - силовой запрос - PullRequest
0 голосов
/ 22 апреля 2020

У меня вопрос - возможно ли использовать для округления всех столбцов, кроме первого? Я использую некоторые подсказки от изменения типов данных от Алексиса Олсона (спасибо, что это очень полезно), но я не могу добавить к этому округлению синтаксиса. При использовании синтаксиса

= Table.TransformColumns( #"Rename column", List.Transform( List.RemoveFirstN(Table.ColumnNames(#"Rename"),1), each Number.Round(_, 0)) )

- Expression.Error: Невозможно передать значение «2019_1» в тип Number - для объяснения 2019_1 это значение заголовка.

Может кто-нибудь Помоги мне, пожалуйста? Заранее большое спасибо Иржи

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вы должны вернуть список списков, где первый элемент - это имя столбца, а второй - функция , которая применяется к значению. Но не список функций только

let
  Source = #table({"first", "second", "third", "fourth"},{
    {  1,   2,   3,   4},
    {1.1, 2.2, 3.7, 4.9}
  }),
  cols = Table.ColumnNames(Source),
  cols_1 = List.RemoveFirstN(cols, 1),
  transformation_list = List.Transform(cols_1, (column_name)=>{column_name, (value)=>Number.Round(value, 0)}),
  round = Table.TransformColumns(Source, transformation_list)
in
  round

То есть transformation_list равно

enter image description here

0 голосов
/ 22 апреля 2020

Используйте этот код:

round = Table.TransformColumns(Source,List.Transform(List.Skip(Table.ColumnNames(Source)),
                                                     each {_, Number.Round}))

Number.Round здесь эквивалентно Number.Round(_,0).

PS Обычно я использую третий аргумент Number.Round (режим округления), например, если вы наберете sh для округления от 0,5 до 1: Number.Round(_, 0, 2)

...