html 动态修改列名,动态提取列、批量更改列名还可以这样做,真高效

我不知道将去何方,但我已经在路上 — 千与千寻

3acc613268e257a72bd66ffb663a60c6.png

如果数据原表中列很多,而且因为系统命名规则的原因列名长且复杂,我们需要取出其中的某些指定列,并且重命名为简单直观的名字,如何可以快捷实现?

数据原表

当然可以直接选择列然后在手工重命名,这样后期维护成本会很高。结合M函数,我们可以制作一个动态获取指定列,并重命名列名的模型。

一、创建列名映射表

我们将原始列的列名在Excl中转置过来,在旁边增加新列,输入需要选择的列和新的列名。

41ac7f74e78742013a81db48a0cc6195.png

列名映射表

将该表加载到Power Query中以后,通过筛选将【选择的列】里面的空白(null)去掉,就可以实现只提取指定列了。

当我们需要增加新的列时,只要在【选择的列】里输入该列名的简称即可。

通过表格与筛选的联动就实现了动态获取列,使模型产生了交互效果。

二、选择列 Table.SelectColumns

选择列的 M函数是 Table.SelectColumns,它的使用语法是:

忽略框选参数,其实只需要向函数提供两个参数,第一个参数是表,第二个参数是需要选择的列,以列表的形式提供。

b1ccc54289df6aca112dde12c74c065b.png

如果不熟悉M函数,在Power Query中,可以先使用界面功能中的「选择列」功能来选择列,在公式栏中会自动生成代码:

表是上一个步骤【更改的类型】,不需要修改。为了实现动态交互,需要修改第二个参数列名称列表。

第二个参数列表里面的列刚好是我们列名映射表里的第一列【原始列】,所以可以将公式栏中的M代码修改成以下:

列名映射表[原始列]返回的是列名映射表的第一列,而且返回的类型刚好是列表,因此可以制作作为Table.SelectColumns的第二个参数。

三、重命名列 Table.RenameColumns

同样的,可以在先执行界面功能中的重命名操作,然后通过观察的方式修改M代码。

b2a3cfcf5764df94236946ed171dd6d4.png

我们重命名其中两列,得到的代码如下:

其中第二部分:{{"编号","员工编号"}, {"客户资产-一般性存款余额-期末时点","存款余额"}}是一个列表,当然列表也是由列表组成(List of List)。

组成列表的列表由旧列名和新列名组成:{"编号","员工编号"}。

可以概况为:。对应列名映射表的第一列和第二列。我们可以使用List.Zip函数将新旧列名按要求进行组合。

我们可以点击fx测试输出结果,在预览中可以看到正是我们需要的新列名和旧列名的组合,并且输出的也是列表。

c6b579d925daa17c7879bc94764584bb.png

使用以上语句替换掉Table.RenameColumns的第二个参数,两个查询之间就可以实现联动了。

结果表:

f4227f576bf71a61dab5b51521a16d44.png

7742b33786edb9c5edebe30302f113da.png

DAX 冷知识,超级开脑洞的DAX函数写法

48aa523004597ffb9615dfbdb6106645.png

使用自定义M函数「打包」数据处理流程

a8d3583bd2efdfdfd550f102bc669948.png

获取刷新时出现的常规错误 | Power Query错误处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值