网站建设终稿确认书,wordpress好用插件,国内免费高清视频素材,免费域名分发系统摘要#xff1a; 前几天#xff0c;PyODPS发布了0.7版本#xff0c;这篇文章给大家介绍下PyODPS新版本带来的重要特性。 之前也有若干篇文章介绍过了#xff0c;我们PyODPS DataFrame是延迟执行的#xff0c;在调用立即执行的方法#xff0c;比如execute、persist等之前 前几天PyODPS发布了0.7版本这篇文章给大家介绍下PyODPS新版本带来的重要特性。 之前也有若干篇文章介绍过了我们PyODPS DataFrame是延迟执行的在调用立即执行的方法比如execute、persist等之前都只是构建了表达式。
点此查看原文http://click.aliyun.com/m/41051/
前几天PyODPS发布了0.7版本这篇文章给大家介绍下PyODPS新版本带来的重要特性。
之前也有若干篇文章介绍过了我们PyODPS DataFrame是延迟执行的在调用立即执行的方法比如execute、persist等之前都只是构建了表达式。而真正的执行根据具体的输入数据来决定执行的后端。
比如我们可以根据输入是pandas DataFrame本地数据还是MaxCompute TableMaxCompute数据来决定是在本地执行还是在MaxComput上执行。
In [1]: import pandas as pdIn [2]: pd_df pd.DataFrame({a: range(3)})In [3]: from odps.df import DataFrameIn [4]: df DataFrame(pd_df) # 本地数据In [5]: df.a.sum()
|| 1 / 1 (100.00%) 0s
3In [6]: %load_ext odpsIn [7]: %enter
Out[7]: odps.inter.Room at 0x105951990In [8]: df DataFrame(o.get_table(pyodps_iris)) # MaxCompute数据In [9]: df.sepal_width.sum()
|| 1 / 1 (100.00%) 15s
458.10000000000014
数据库执行
来到了0.7版本我们的后端武器库进一步扩充现在我们支持Postgresql和MySQL原则上我们支持所有的主流数据库但我们只在这两个数据库上做了测试。
我们的数据库执行后端使用 sqlalchemy 实现想要执行还需要对应数据库的driver。
现在如果DataFrame输入的数据是sqlalchemy Table那么我们就可以使用数据库后端来执行。
In [24]: mysql_engine sqlalchemy.create_engine(mysql://root:123localhost/movielens) In [25]: metadata sqlalchemy.MetaData(bindmysql_engine) # 需要绑定engineIn [26]: table sqlalchemy.Table(top_users, metadata, extend_existingTrue, autoloadTrue)In [27]: top_users DataFrame(table)In [28]: top_users.age.sum()
|| 1 / 1 (100.00%) 0s
763
对于postgresql也是一样。 值得注意的是现在还有部分DataFrame操作比如自定义函数尚未支持数据库后端 。
可以看到PyODPS DataFrame就是一个统一的数据查询语言用户不需要改写一行代码就可以根据输入让数据在MaxCompute、本地和数据库上执行由于DataFrame框架的灵活性我们甚至还可以扩展出非SQL执行后端的支持。
JOIN或者UNION数据库和MaxCompute数据
过去 一篇文章 提到过我们可以join或者union本地和MaxCompute上的数据这样的典型场景就是比如我有个本地excel文件我可以轻松读取成本地DataFrame然后直接就可以和MaxCompute数据进行操作省去了一大堆麻烦的过程。
现在我们也同样可以join 数据库和MaxCompute上的数据试想有一堆用户数据是在数据库中进行处理然后我们无需经过同步数据等繁琐的过程我们就可以直接join 数据库和MaxCompute上的数据这是何其方便的事情。
比如
In [29]: ratings o.get_table(movielens_ratings).to_df()In [32]: female_top_users top_users[top_users.sex F] # MySQL中的数据In [33]: ratings.join(female_top_users).rating.mean()
|| 1 / 1 (100.00%) 14s
2.9451170298627924
总结
我们PyODPS一直处在快速迭代的过程中我们所有所做的努力都是为了让大家以更好的体验来进行数据分析和机器学习。尽管我们很努力但精力毕竟有限难免会有bug会有功能不完善。希望大家能给我们提issue能贡献代码就更好啦。
项目文档http://pyodps.readthedocs.io 项目地址https://github.com/aliyun/aliyun-odps-python-sdk 提issuehttps://github.com/aliyun/aliyun-odps-python-sdk/issues
钉钉扫码