Power Query处理随日期变化的列标签的方法与步骤

在网络抓取的过程中,经常有这种情况:表列的名字是用当天的日期来命名的,当我们对表列进行操作时,就要引用这个日期,如果是单次抓取没什么大问题,但是要每天更新数据时,就会报错。

要解决这个问题也不是很难,就是要把列名与日期联动起来,需要用到日期时间函数:

  • Date.ToText:日期转为文本,有点类似Excel中的Text函数,或者是DAX中的Format
  • DateTime.Date:将日期时间转换成日期
  • DateTime.LocalNow:给出本地时间,相当于Excel函数中的Now函数
  • #duration:时间间隔

步骤一:正常抓取

使用从web获取数据,输入网址,提取表格,更改类型,删除不需要的列:

步骤二:从查询创建函数

查询右键,创建函数:

步骤三:修改列标题

先要做准备工作,制作会随日期变化而自动变化的列标题:

列标题是文本,首先要做出来日期的文本格式:

d1= Date.ToText(DateTime.Date(DateTime.LocalNow()),"YYYY-MM-DD"),

d2=Date.ToText(DateTime.Date(DateTime.LocalNow()-#duration(1,0,0,0)),"YYYY-MM-DD"),

一共有两个日期,当天和前一天,其中DateTime.LocalNow(),会得到日期+时间的一个值,DateTime.Date(DateTime.LocalNow())就会把这个值的日期部分保留下来,Date.ToText(DateTime.Date(DateTime.LocalNow()),"YYYY-MM-DD"),就是转换成文本的日期,格式是用短划线连接的。前一天的就减掉一天,-#duration(1,0,0,0)就是减去1天的意思。

接下来是制作4个列标题:

  • a1=d1&" 单位净值",
  • a2=d1&" 累计净值",
  • a3=d2&" 单位净值",
  • a4=d2&" 累计净值",

日期后面还有文字,中间用连字符连接起来就可以了。

最后一步是替换列标题,用a1、a2、a3、a4替换掉具体日期的列名称:

这样这个抓取函数就制作好了

引用

建立空查询,直接引用制作好的抓取函数就可以了:

更多Power Query知识请订阅专栏:

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();