PowerBI:同时将类型更改为多列

Luc*_*ola 2 columnname m powerquery powerbi

我在 Power BI 的 Power Query 编辑器中工作。我有一个名为的表Source,其中列的顺序如下:

| Country | Attribute | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 |
Run Code Online (Sandbox Code Playgroud)

您可以看到下图中的表格:

图片 我想将列类型更改为从“2014”到“2021”的每一列。我知道可以使用以下命令分别表示每一列:

= Table.TransformColumnTypes(
    Source,
    {{"2014", type number}, {"2015", type number}, {"2016", type number}, {"2017", type number}, {"2018", type number}, {"2019", type number}, {"2020", type number}, {"2021", type number}}
  )
Run Code Online (Sandbox Code Playgroud)

但我想设置一个以自动化方式执行此操作的命令。我正在尝试执行以下操作:

= Table.TransformColumnTypes(
    Source,
    each( {List.Range(Table.ColumnNames(Source), 2, List.Count(Table.ColumnNames(Source)) as number),
    type number} )
  )
Run Code Online (Sandbox Code Playgroud)

所以我试图Table.TransformColumnTypes为“每个”值重复命令:

List.Range(Table.ColumnNames(Source), 2, List.Count(Table.ColumnNames(Source)) as number)
Run Code Online (Sandbox Code Playgroud)

基本上选择从第三列到最后一列范围内的每个列标题名称。

我尝试以多种方式写下来,也$(...).each(function(...))使用或使用其他list.功能,但似乎都不起作用。

我能做什么?

Ale*_*son 6

您使用该Table.ColumnNames功能走在正确的轨道上。

试试这个:

= Table.TransformColumnTypes(
      Source,
      List.Transform(
          List.RemoveFirstN(
              Table.ColumnNames(Source),
              2
          ),
      each {_, type number}
      )
  )
Run Code Online (Sandbox Code Playgroud)

List.RemoveFirstN函数N = 2从列名列表中删除第一列,然后将剩余的每一列更改为type number