前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL

【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL

作者头像
陈学谦
发布于 2020-04-14 07:28:53
发布于 2020-04-14 07:28:53
4.5K00
代码可运行
举报
文章被收录于专栏:学谦数据运营学谦数据运营
运行总次数:0
代码可运行

各位小伙伴们,大家好,我是学谦,咱们又见面了。

《在Power BI 中使用Python》系列的前三篇文章我们分别讲解了:

如何在Power BI中使用Python来获取数据:

【强强联合】在Power BI 中使用Python(1)

如何在Power BI中使用Python进行数据清洗

【强强联合】在Power BI 中使用Python(2)

如何在Power BI中使用Python进行可视化呈现:

【强强联合】在Power BI 中使用Python(3)数据可视化

今天我们继续讲解第四篇——PQ数据导出与写回SQL

众所周知,Power BI对于数据的输出是有一定限制的,至少有以下两点:

1.可视化对象导出CSV格式限制3万行数据,这对于数据量动辄上百万甚至上亿的表来说是不可接受的;

2.而一直广为诟病的powerquery数据困难的问题更是一时半会也得不到解决。

那应该怎么办呢?

第一个问题,推荐使用DAX Studio,轻松导出十万、百万条记录;

第二个问题,没有现成的工具可以直接解决,但是结合本系列第二篇的内容,我们是否可以想到如何用Python将powerquery中的表输出为excel甚至实现数据回写到SQL中呢?

这就是我们今天要学习的内容:

我们在第二讲中说过:

Python的处理结果以Dataframe形式输出,M将Dataframe自动转换为Table格式。M将其Table类型的数据传递给Python,Python会自动将Table转换为Dataframe。

M将其Table类型的数据传递给Python,Python会自动将Table转换为Dataframe。那么Python中Dataframe如何输出呢?

想必了解pandas库的战友们已经想到答案了。

只要一行简单的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
= Python.Execute("# 'dataset' 保留此脚本的输入数据#(lf)dataset.to_excel(r""C:\Users\金石教育\Desktop\abc.xlsx"")",[dataset=])

简单吧!

运行一下:

OK啦!

关键是:

只有一行代码!

只要一行代码!

只需一行代码!

重要的事情强调三遍!

多年来powerquery广为人们诟病的——数据清洗后无法导出结果的问题就这么被一行代码轻松地解决,美滋滋。

好了,既然知道了如何导出excel文件,那么各位,写回MySQL数据库的操作是否可以举一反三自行解决呢?

我们直接看下图的神操作:

看到了吗,mysql数据库中本来是一张空表,我们在powerquery中运行了一段Python代码后,表中有了数据。

关键代码解释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db = pymysql.connect("localhost","用户名","密码","nc" )
#连接数据库
query = 'insert into `全球疫情_country`(id,displayName,areas,totalConfirmed,totalDeaths,totalRecovered,lastUpdated,lat,long,parentId)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
#键入数据

for r in range(len(dataset)):
    #按行获取数据
    id0=dataset.iat[r,0]
    displayName=dataset.iat[r,1]
    areas=dataset.iat[r,2]
    ……  
    values = (id0,displayName,areas,totalConfirmed,totalDeaths,totalRecovered,lastUpdated,lat,long,parentId)
    cursor.execute(query, values)

cursor.close()
db.commit()
db.close()
#提交数据并关闭数据库

获取完整源代码,请关注本公众号【学谦数据运营】,回复关键字“powerbi-python-mysql”

代码没什么难度,用的是Python的一个常用库:pymysql,将dataset中的数据按行导入MySQL中。

但是有一个大BUG一点小问题:

因为全球只有200左右个国家和地区,country层面的数据应该只有200左右。但是,我习惯性地瞥了一眼MySQL右下角,发现:

难道最近的国际局势变化这么大,已经有567个国家和地区了?不可能吧。抓紧查询一下,发现果然有问题:

全球每一个国家和地区的数据都显示了三次,567/3=189,这还差不多。

而且清空表后再刷新运行,就会发现有的时候是2次,有的时候5次,这意思就是Python代码运行了多次,造成了数据重复,这背后的原因我们无从得知。这样可不行啊,总不能每次使用的时候先去重吧,不太现实,如果有时候疏忽了就麻烦了,那该怎么办呢?

这个问题先一放,我们来看另一个问题:

每个国家的每日数据我们只保留一次,即便powerquery每次刷新只向MySQL数据库写入一次,但我们也不能保证编写模型的时候只刷新一次吧,因为一旦人工刷新多次,造成的结果和上面被动造成的结果一致,所以,只要我们解决了人工刷新造成数据重复的问题,查询刷新时被动写入多次的问题也就顺带解决了。

我们看一下数据,有一列“lastupdated”,是时间格式,也就是查询的时间,由于我们只关心日期数据,因此只取出日期就可以。所以只要每次写回MySQL之前,先判断一下数据库中是否已经存在当日的数据,如果有,就先删除,再将新的数据写入,这样就达到我们的目的了。

添加以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#添加一列日期
dataset.insert(loc=10,column="updateday",value=dataset["lastUpdated"].str[0:10])

#获取日期
today_date=dataset.iat[0,10]

#删除当日的已有数据
query_delete='DELETE FROM `全球疫情_country` WHERE updateday='+today_date

运行一下代码:

MySQL数据库的表中初始有378条数据(因为包含了3月27日和3月28日两天的数据,共189个国家和地区的数据),运行代码后,仍然是378条,之前已有的3月28日的数据被删除,然后添加了刚刚查询到的最新数据。

完美解决!

好了,写回MySQL数据库的全部操作和遇到的问题与解决措施到这里就讲解完毕了。你学会了吗?

写这篇文章的时候不知道怎么的,远程计算机的MySQL数据库总是出问题,导致我这边文章前前后后写了五六个小时。

本节内容细节的点特别多,大家一定要自己动手操作几遍,后续我会逐步安排相关的视频讲解,大家请注意关注公众号,跟上队伍。


以下仍然是下期预告环节:

下一篇我们将继续介绍一个重磅功能——数据条件触发预警并邮件通知

说到数据预警,微软自家的Flow可以设置预警条件并发送邮件,这是原生功能,有兴趣的朋友可以去了解。


感谢您对【学谦数据运营】公众号的关注、支持与厚爱,如果本文对您有用,请不要吝惜您的点赞、转发和点亮在看,有任何问题欢迎大家在留言区询问,谢谢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Power BI数据回写SQL Server(1)没有中间商赚差价
我们在【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL 讲过如何在Power BI中调用Python实现powerquery获取和处理的数据回写到MySQL中。
陈学谦
2020/04/14
3.4K0
Power BI数据回写SQL Server(1)没有中间商赚差价
​PowerBI借”第三方“将度量值回写SQL与天猫总裁的两个88年女人
【重磅来袭】在PowerBI中使用Python(4)——PQ数据导出&写回SQL
陈学谦
2020/05/07
1.2K0
【强强联合】在Power BI 中使用Python(2)
其实我们仔细看一下场景1和场景2,它们之间是个逆过程,场景1是从Python获取数据传递到Power BI,而场景2是Power BI或者Power Query获取了数据,用python来处理。
陈学谦
2020/04/14
3.5K0
【强强联合】在Power BI 中使用Python(2)
【强强联合】在Power BI 中使用Python(3)数据可视化
打开Power BI Desktop,在右侧可视化区域会看到一个“Py”的图标,打开该图标,并选择启用脚本视觉对象,拖动字段到“值”的位置:
陈学谦
2020/04/14
2.9K0
【强强联合】在Power BI 中使用Python(3)数据可视化
【重磅来袭】在Power BI 中使用Python(5)——数据预警与邮件通知
某连锁门店的区域经理助理小朱为当前区域门店创建了多个重要指标看板,但无论是区域经理还是店长,因为日常工作太忙,经常没空细看所有数据看板。小朱希望对于重要指标,特别是有异常的重要指标,可以单独预警。
陈学谦
2020/04/14
1.9K0
【重磅来袭】在Power BI 中使用Python(5)——数据预警与邮件通知
Power BI数据回写SQL Server(2)——存储过程一步到位
我们讲过,利用循环的方式将PQ中得到的table表逐行导入SQL Server中,有的朋友怀疑这种方式会不会造成数据量较大时运行慢、能耗大的问题,这种顾虑理论上是恰当的,所以今天再介绍一种能够直接一次性导入SQL的办法。
陈学谦
2020/04/14
2.6K0
Power BI数据回写SQL Server(2)——存储过程一步到位
想要玩转Power BI,为什么一定要学会数据库?
最近写过多篇文章强调,使用Power BI建立模型时,一定要从SQL导入数据,而不要直接使用excel文件,今天再来啰嗦两句。
陈学谦
2020/05/09
3.2K0
想要玩转Power BI,为什么一定要学会数据库?
Power BI云端报告导出数据的几种方法探讨
然而,在微信里将Excel甩来甩去依然是相当一部分企业内平时工作交流沟通的“良好”习惯。
陈学谦
2022/04/11
6.1K3
Power BI云端报告导出数据的几种方法探讨
【强强联合】在Power BI 中使用Python(1)
近几年,Python是越来越火了,就连地产大佬潘石屹都在年近不惑之时开始学习Python编程语言,我们做数据分析和运营的怎能不熟练运用呢?
陈学谦
2020/04/14
3.2K0
【强强联合】在Power BI 中使用Python(1)
PQ获取TABLE的单一值作为条件查询MySQL返回数据
下午,我正爽歪歪地喝着咖啡,看着Power BI每秒钟刷新一次,静静等待某个分公司完成本月绩效任务,自动调用Python在钉钉群中发送喜报:
陈学谦
2020/04/14
3.8K0
PQ获取TABLE的单一值作为条件查询MySQL返回数据
Python系列之MySQL查询数据导出Excel
因为是java开发,python并没有学过,所以通过自己摸索,还是可以写出来,对比一下java,觉得python语法有时候确实比较简便,比如要导出Excel,一行代码就可以,然后到linux上部署也比较容易,所以觉得后端程序员掌握一门脚本语言还是有需要的
SmileNicky
2022/05/19
1.4K0
MySQL数据导出及mysqldump命令参数
我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一般用一下两种方式来处理:
星哥玩云
2022/08/18
6.9K0
MySQL mysqldump数据导出详解
 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来。
拓荒者
2019/03/15
12.9K0
MySQL mysqldump数据导出详解
Power BI x Python 关联分析(下)
上回提到,Power BI借助Python做关联分析,可以轻松地找出物品中的频繁项集,且该频繁项集内的物品数量不限于2个。实现方式既可以通过Power BI里添加Python可视化控件直接生成Python式图表,也可在PQ里借助Python处理数据。前者最大的好处体现在与切片器联动中,是即时计算新的频繁项集。不足在于Python图表的风格与Power BI不一致,而且由于直接输出Python图(没有输出数据源),不便于开展其他分析。后者,正好解决了这些不足。
btharp
2021/08/31
1.1K0
如何用 Python 执行常见的 Excel 和 SQL 任务
作者:ROGER HUANG 本文翻译自:http://code-love.com/2017/04/30/excel-sql-python/ 来源:https://www.jianshu.com/p/51bb7726231b 本教程的代码和数据可在 Github 资源库 中找到。有关如何使用 Github 的更多信息,请参阅本指南。 数据从业者有许多工具可用于分割数据。有些人使用 Excel,有些人使用SQL,有些人使用Python。对于某些任务,使用 Python 的优点是显而易见的。以更快的速度处理更大
数据科学社区
2018/04/19
11.5K0
如何用 Python 执行常见的 Excel 和 SQL 任务
使用Python进行ETL数据处理
ETL(Extract, Transform, Load)是一种广泛应用于数据处理和数据仓库建设的方法论,它主要用于从各种不同的数据源中提取数据,经过一系列的处理和转换,最终将数据导入到目标系统中。本文将介绍如何使用Python进行ETL数据处理的实战案例。
海拥
2023/04/21
1.8K0
python爬虫获取豆瓣电影TOP250
在之前的博客中,小菌分享了几篇关于python爬虫的小程序,受到了许多小伙伴们的认可,小菌还是比较激动٩(๑>◡<๑)۶,毕竟小菌毕竟不是python方向的,很多的内容都是自己找资料自学的。同样本篇博客,小菌将继续分享实用的爬虫—获取豆瓣电影Top250的内容,并保存在MySQL数据库中。
大数据梦想家
2021/01/22
1K0
python爬虫获取豆瓣电影TOP250
Python Faker随机生成测试数据(干货)
Faker是一个Python软件包,可为您生成伪造数据。无论您是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试还是匿名化来自生产服务的数据,Faker都是您的理想之选。不论您这边需要创建多少条数据,无非是一个for循环就解决问题了。
wencheng
2020/07/06
1.5K0
Python Faker随机生成测试数据(干货)
收藏!用Python一键批量将任意结构的CSV文件导入 SQLite 数据库。
上周,推送了一篇:“ 收藏!用Python一键批量将任意结构的CSV文件导入MySQL数据库。” 本文是上篇的姊妹篇,只不过是把数据库换成了 Python 自带的SQLite3。
数据森麟
2020/02/20
5.6K0
收藏!用Python一键批量将任意结构的CSV文件导入 SQLite 数据库。
如何用Power BI获取数据?
前面我们介绍了Power BI 是什么,今天介绍如何用Power BI 获取数据。
猴子数据分析
2020/09/30
3.6K0
推荐阅读
相关推荐
Power BI数据回写SQL Server(1)没有中间商赚差价
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验