春节结束了,是时候来些新鲜玩意,让我们来看一些酷的东西。
当当当当:隆重推出pyodps logo。
好像跑题了,好吧,让我们言归正传。
我们知道python提供了一个交互式的环境,能够方便探索和试验想法。同时,ipython是python交互环境的增强,提供了很多强大的功能;ipython notebook(现在已经是jupyter notebook)则更酷,提供了一个web界面,除了提供交互环境,还是一个记录计算过程的『笔记本』。
pyodps也提供了一系列在交互式环境下的增强工具,使得探索odps数据更方便快捷。
同一个环境支持配置若干个odps帐号,只需要:
此时这个帐号会被配置到一个叫做<code>default</code>的我们称之为<code>room</code>的地方。以后我们再使用这个帐号只需要:
通过<code>room</code>的odps属性,我们可以取到odps的入口,这样就可以接着进行odps操作了。配置了别的<code>room</code>比如叫做myodps,要取到odps入口,只需要<code>enter('myodps').odps</code>即可。
<code>list_rooms</code>方法能列出所有的<code>room</code>。
pyodps还提供了ipython插件。首先我们需要加载插件:
<code>_</code>下划线能取到上一步的结果。
<code>room</code>除了提供odps入口的功能,还能保存常用的odps对象。比如,我们能把常用的表起个名字,给保存起来。
这两种方式都可以取到保存的odps对象。如果要列出当前room保存的所有odps对象,则可以:
也可以使用ipython插件命令:
要删除某个odps对象:
pyodps提供了执行sql的方法,但是在交互式环境下却不甚方便。使用pyodps提供的ipython插件,可以通过sql命令来直接执行。
在执行时,需要配置全局帐号,如果已经使用了<code>enter</code>方法或者命令,则已经配置;如果没有,则会尝试enter默认的room;如果这也没有配置,则需要使用<code>to_global</code>方法。
这时我们就可以使用sql命令,单个百分号输入单行sql,多行sql使用两个百分号:
在jupyter notebook里,多行sql会提供语法高亮:
使用<code>persist</code>命令即可:
在交互式环境下,我们repr一个odps表的时候,会打印这个表的schema,包括字段注释,省去了查这个表的meta信息。
当使用sql命令或者使用dataframe框架计算的时候,在终端或者jupyter notebook里都提供一个进度条来方便用户来查看执行进度。
pyodps现在处于快速迭代阶段,我们所有的开发都是开源的。大家如果需要什么功能,可以给我们提issue(github);也可以直接参与到开发,直接给我们发merge request就行啦。
欢迎大家一起来建设pyodps。
github:https://github.com/aliyun/aliyun-odps-python-sdk
文档:http://pyodps.readthedocs.org/zh_cn/latest/