alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第1张图片

许多行业受天气影响较大。如果知道某地区的历史天气状况,就可以给销售数据赋予更多内涵,给我们今天判断问题做出更好的参考。本章将以陕西省主要城市为例,讲解如何通过Power BI构建爬虫抓取历史天气数据。本案例的数据形式也是网页数据中最简单的一种——表格,读者通过学习可以制作如图所示的天气报告。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第2张图片

一、 分析URL结构

1. 确定城市列表

我们分析的是陕西省主要城市的天气,因此首先要找到该省的城市列表在网站的哪个页面。然后,需要确定每个城市的链接和页面内容有什么相同之处和不同之处,并找到其中的规律。

(1)确定城市列表

打开天气预报的“历史天气”栏目,可以看到陕西省的城市列表,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第3张图片

(2)确定城市链接

打开以上列表中的任意城市界面,可以看到页面内容为西安市各年度历史天气列表,URL有西安的拼音“xian”字样,由此我们可以确定每个城市的链接规律。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第4张图片

2.确定单月URL

确定了单个城市的规律后,需要把规律进行进一步深挖到具体时间端。单击上图中的任意月份链接,进入单月天气,可以看到:

  • URL发生了变化,如末尾增添了“201701”字样;
  • 当月每天的日期以表格形式规范呈现,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第5张图片

由此可以判断,各个城市的历史天气有两个变量:城市拼音及年月。变化这两个因子即可得到各个城市各个月份每天的日期状况。

贴士
当抓取天气预报信息时,分析URL结构的思路与分析历史天气URL的思路相同,历史天气用来回顾过去,天气预报信息也可进行抓取,应用于受天气影响的行业报告中。

二、 构建爬虫主体

由上一节我们确定了不同城市、不同日期的网页页面规律。由此可知,我们建立一个城市列表及一个年月日期列表,将这两个列表设置为变量参数,并将这两个参数引入URL,即可抓取多个城市、多个月份的天气数据。

1.建立城市列表

城市列表可以通过导入Excel文件建立,当更新Excel文件时,在Power BI中刷新即可得到最新城市数据。但这样会导致Power BI有一个外置文件,显得很烦琐。此处介绍一种直接在Power BI内部新建城市列表的方法。

(1)输入数据

在“开始”选项卡下,选择“输入数据”,在第一列输入“西安”,单击下方的星号即可新增一行输入下一个城市,单击右侧的星号即可新增一列输入拼音,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第6张图片
贴士
可以手工输入数据,当外部有数据源时,也可直接将数据源中的数据复制到图2.5所示表格中。

(2)更改标题及名称

双击“列1”、“列2”,可将标题更改为“城市名称”和“拼音”,在左下方可将表格名称进行变更,如图所示。变更完成后单击“编辑”按钮进入下一步,添加日期。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第7张图片

2.建立日期列表

日期列表同样可以使用外部Excel文件新建,但也会面临烦琐的问题。不同于城市列表,日期涉及范围可能非常大,导致有非常多的列,手工输入并不高效。通过M函数我们可以快速高效地生成指定日期段的每一个日期。

(1)添加开始日期和结束日期

通过添加自定义列,添加需要提取数据的时间段。下图所示为添加开始日期,类似地,结束日期可添加自定义列#date(2018,6,30)。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第8张图片

添加后的结果如下图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第9张图片
贴士
首次搭建时建议缩小数据范围,先以较小的数据量进行测试,后续再对范围进行变更。

(2)添加每一天

按照下图所示添加设定日期段的每一天,注意在提取时需要用Number.From将日期转换为数值。提取完成后,再将格式变更为日期。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第10张图片

然后将List展开,得到如下图所示的结果。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第11张图片

(3)转换日期格式

年月日日期格式并不是URL中的形式,可通过添加自定义列,使用Date.ToText对格式进行转换,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第12张图片

(4)添加年、月列

按照下图所示的路径分别添加年、月列,以备后期筛选使用。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第13张图片

(5)删除重复项

要想删除“开始日期”、“结束日期”、“日期段”这些中间字段,可选中整张表,然后单击“删除行”→“删除重复项”,如下图所示。

这样,每个城市就保留了唯一月份值。下图显示了西安市的最终列表。注意检查“拼音”与“年月”字段的格式,URL要求这两个字段是文本格式的。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第14张图片
删除重复项

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第15张图片
删除重复项后的结果

3. 城市、日期参数引入URL

城市列表和日期列表有了,下一步是使这两个列表与URL发生关联,将一个固定的URL转换为动态URL。通过自定义列可以快速实现这种关联,并提取指定城市和日期对应网页的天气数据。

(1)新建自定义列

将URL的城市及年月部分替换为查询中的城市拼音及年月列表,并使用Web.Page和Web.Contents提取网页内容,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第16张图片
Web信息提取自定义列

如果过程中提示隐私信息,按下图进行相应设置即可。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第17张图片
隐私提示

(2)将URL列展开

展开新建的URL列,如图所示,只选择“Data”和“Source”,Source只选择“Table”。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第18张图片

(3)展开Data

展开“Data”列,四列全部选中,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第19张图片

(4)删除多余内容

选中日期列,通过筛选去掉标题、空白等多余的行,只保留日期,并手动更改“Column1”等字样,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第20张图片
删除多余内容

(5)最高气温最低气温拆分

要将最高气温和最低气温用“/”隔开,可按照下图所示方式,用分隔符进行拆分。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第21张图片
拆分气温列

拆分后用替换的方式将摄氏度符号去掉,并将气温格式调整为数值。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第22张图片
贴士
替换不仅可以用来替换正常的值,而且当数据源中有一些错误显示时,可在“替换值”下拉列表中选择步骤,“替换错误”,将错误显示为0值或空值,以便后面的操作继续进行。

通过以上步骤,爬虫主体即构建完成,我们获取了2017年1月1日到2018年6月30日的全部数据。关闭并应用后即可进行图表制作。

三、制作可视化报告

本章全部使用内置的可视化图表完成报告制作。使用不同形式的切片器切换城市和月份,查看对应城市、月份的天气走势;使用折线图进行气温时间趋势上的展示;使用矩阵查看具体明细。

1. 隐藏不需要的字段

当字段太多时,会影响字段选择效率,可切换到数据视图,将不需要的字段隐藏。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第23张图片

隐藏后报表视图将不会显示该字段,如图所示。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第24张图片

2. 制作城市和月份切片器

将城市名称设置为切片器字段,并将方向设置为水平。将月份设置为另外一个切片器字段,将方向设置为垂直。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第25张图片
城市切片器设置

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第26张图片
月份切片器设置

3.设置最高气温走势两年对比

选择折线图,轴为“日期”,图例为“年”,值为“最高气温。注意日期层级结构选择“日”。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第27张图片

4. 设置当月气温走势

选择折线图,轴为“日期”,值为“最低气温”和“最高气温”。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第28张图片

需要注意将当月气温年份在视觉级筛选器中进行如下图设置。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第29张图片

5.设置气温明细矩阵

通过矩阵对两年气温、风向、天气状况明细进行对比,将行设置为“日期”,列为“年份”,值为“最低气温”、“最高气温”、“天气状况”和“风力风向”。这样,日期按纵向排列,时间按横向排列,可以方便对比两年的不同状况。通过以上操作即完成了全部动态报告的制作。

alter table 加多个字段_Power BI/Query爬虫:抓取多个城市历史天气数据_第30张图片
矩阵设置

四、总结

通过本章学习,我们顺利抓取了陕西省各城市一年半的天气数据:

  • URL规律的识别是整个爬虫的开端;
  • 通过Power BI的输入数据功能建立虚拟的城市列表表格,通过日期的计算建立完整的日期列表,这两个列表合起来构成爬虫的阶梯;
  • 将城市与日期列表引入URL,通过Web.Contents提取网页内容是爬虫的核心

以上内容选自《Power BI商业数据分析项目实战》本书涉及销售、货品、财务、人力资源等众多岗位,用19个案例,让你成为Power BI高手。该书配有演示数据源及案例下载,并全程录制视频。

你可能感兴趣的:(alter,table,加多个字段,alter添加多个字段)