![](https://img.haomeiwen.com/i3370562/bae8f4e741d482e1.png)
星巴克一小时能干什么?能零代码智能网抓中国电影大数据,你信吗?
有个朋友入职了电影行业,跟随一导演,导演找人投了很多钱,要求这朋友帮他分析下最近几年中国电影市场整体行情并要求分析出应该拍什么片子能赚钱。
导演:我们有投资了,你想想办法看看分析中国这几年拍什么片子火,赚钱。
朋友:什么时候要?
导演:把中国电影都分析要多久?
朋友:中国电影好多啊,那一个月如何?
导演:好的。
朋友去星巴克买了一杯星冰乐坐了一个小时,给我打了电话,问去不去旅游,我说没时间,他说他有一个月的假期。我好羡慕他...
![](https://img.haomeiwen.com/i3370562/dcd2370f5ce0840b.png)
概述
以上纯属胡扯,如有雷同,纯属巧合。但这个场景,不得不让我们更惊讶于PowerBI给企业和个人可能带来的生产力。我的朋友在星巴克做了这些事,我们来拆解一番。
找到行业数据
百度搜索:中国电影票房,如下:
![](https://img.haomeiwen.com/i3370562/146857c21efd69bd.png)
思路来了,是不是可以把所有的电影数据都抓下来来分析行业呢。
使用PowerBI从WEB获取数据
![](https://img.haomeiwen.com/i3370562/a613f6fbe1082bfc.png)
地址:http://www.cbooo.cn/year?year=2018
![](https://img.haomeiwen.com/i3370562/b636d5fd232cdf71.png)
从2018年5月升级后的PowerBI具有一种可以智能解析网页的能力,它可以根据用户的输入自动去判断可能的规律,并根据这个规律去从网页获取数据,实现抓取网页的效果。
这可以帮助我们【使用示例提取表】,如下:
![](https://img.haomeiwen.com/i3370562/c35c57d051741cbd.png)
太神奇了!太震惊了!太逆天了!你输入两个电影名字,它帮你全部找到,它怎么猜出来的呢~~ 类似地,就可以提取所有需要的数据,如下:
![](https://img.haomeiwen.com/i3370562/5aacd29166949730.png)
太不可思议了,没有任何网抓,只不过是写了两个名字,然后PowerBI就猜出来你要网页上的什么数据了,确认。
抓取某年的电影数据
可以在PowerBI中对这个数据进行一定处理,变得符合我们的需要。但一个关键是:做参数化。这里把年份变成参数,如下:
![](https://img.haomeiwen.com/i3370562/494169d9d2653020.png)
我们管这时候的PowerQuery中的数据起名:WebData,并叫做种子数据,我们将种子数据和参数放在一起,来抽取函数:
![](https://img.haomeiwen.com/i3370562/942618aa93cc347a.png)
生成如下:
![](https://img.haomeiwen.com/i3370562/62e3a0aa46c5d2a6.png)
此时我们生成了一个功能函数叫:fn获取某年电影数据。我们只需要向其中传递一个参数,就会自动从网络中抓取某年的电影数据。
抓取历年的电影数据
我们想办法获取历年的数据,先做个参数和种子:
![](https://img.haomeiwen.com/i3370562/2c1fa35e532539e0.png)
用 开始年份 和 结束年份 制作出 历史年份电影数据 作为数据种子,如下:
![](https://img.haomeiwen.com/i3370562/b7f89e30fafba2a9.png)
现在只需要考虑给这个数据种子的每行都按上面已经做好的 fn获取某年电影数据 来计算一次就好,使用函数增加自定义列,如下:
![](https://img.haomeiwen.com/i3370562/3aec34ed58fa35ca.png)
于是就开始等待了,因为每一行都会作为 fn获取某年电影数据 的参数来获取网络数据,这就需要等待一段数据抓取的时间了,喝了几口星冰乐,数据也就好了,如下:
![](https://img.haomeiwen.com/i3370562/03b03d384e7c0a91.png)
会发现,这整体是一个表格,在表格的第二列的每个单元格里又是一个表格,这个表格就是历年的电影票房数据了。于是将它们整体扩展合并,如下:
![](https://img.haomeiwen.com/i3370562/773e98a81a5c32cb.png)
最后得到结果:
![](https://img.haomeiwen.com/i3370562/04cff81c3384d851.png)
这正是我们要的东西,喝一大口星冰乐,爽。注意:我们立即回忆这里是将 开始年份,结束年份和种子数据 生成的历史数据,所以,要再来创建个函数,如下:
![](https://img.haomeiwen.com/i3370562/4b7f1a1d06fd33be.png)
小结一下:
- 首先用一个参数Year和WebData种子数据构建了fn获取某年电影数据功能函数。
- 然后用开始年份,结束年份,构建一个列表并用上述的fn获取某年电影数据动态算出每个年份的数据,然后合并,再抽取一个总的fn获取历年电影数据总函数管道。
于是,用这个管道函数重新运行来获得 电影 作为数据模型,如下:
![](https://img.haomeiwen.com/i3370562/b73ff9b335756857.png)
PowerQuery 中的 ETL
如果说PowerQuery完成了类似ETL(获取数据,转换数据以及加载数据)的工作,那可以视为我们构建了ET(获取和转换)的管道,然后准备了数据模型表,再加载进入PowerBI数据模型。
PowerBI 数据分析
准备好了数据模型,只有一个表 电影,那么电影的文本属性字段(如:类型,国家,名称)就是观察分析它的角度,而它的数值字段(如:票房,票价,上座量)就是观察分析的核心业务指标。再来一大口星冰乐,思路非常清晰,点击几个PowerBI的视觉对象即可,然后使用PowerBI交叉筛选,如下:
![](https://img.haomeiwen.com/i3370562/de2fe8ecf2a3c6e7.png)
分析如下:
- 近几年中国类电影逐渐占有量上升
- 集中在 动作 和 喜剧 类的不俗表现
- 动作方面以 战狼2 和 红海行动 领跑
- 平均票价不宜超过45 且 场均人次目标 60 左右
既然心里有了数,就不怕了,正好星巴克的星冰乐喝完了。
总结
这里虚拟了一个不存在的场景,也略微显得简单,但却不失一种感觉,这位朋友只用了一杯星巴克的工夫,仅仅是点击鼠标,里面没有任何写代码的动作,就基本对老板交代的理解中国电影市场整体有了把握,所有内容不到一个小时完成,这得益于三件事:
- 这人要懂业务:懂自己的行业,懂自己的公司,懂自己的老板。
- 这人要会工具:PowerBI是正确的工具。
- 这人要会正确地用工具:正确地用PowerBI 而不是 莫名其妙地用PowerBI。
注意,正确地学习和学习本身一样重要。本文真正的重点在于揭示:
- PowerBI的设计初衷不是让人去构建代码体系,而是让人去构建业务结果。
- PowerBI不管在报告制作还是查询的设计上,都有很精妙的产品构思,并非程序员凭借强大的技术优势就有绝对的优势。
零代码实现智能网络数据抓取 抛砖引玉,让人们重新感知对PowerBI正统设计思想认知,包括:
- PBI样本智能判断思想(程序员眼里是CSS选择器)
- 参数化思想(程序员眼里是变量)
- PBI查询管道构建思想(程序员眼里是M查询语句)
- PBI查询管道嵌套构建思想(程序员眼里是多级查询语句)
- PBI从多个角度分析业务指标思想(程序员眼里是维度表与事实表)
本案例纯点击实现网抓以及合并查询,最终却都是为了去生成查询管道,再次将PowerQuery到底该如何用提出了新的思考。
![](https://img.haomeiwen.com/i3370562/44bd71a64b02dfb6.png)
网友评论