作为一名数据分析师,日报、周报、月报数据一个也不能少。 相应的, 就要在数据库中提取大量的数据, 并处理大量的Excel表格。
自己在工作中使用的最多的就是Hive-SQL查询语句,很多时候,每天的运行的SQL语句只需要改个日期即可。 但如果你每一天都要对每条SQL语句改日期, 然后再把每条SQL语句粘贴到数据库中跑的话, 会特别的费时耗力。 我们可以写个简单的Python脚本, 这样每次运行前只需要改一次日期,就可以将所有SQL语句运行一遍, 大大提高工作效率。
1. 首先, 用Python连接数据库
对于数据库的ip地址,用户名,密码等, 如果不清楚,或数据库连接不上, 需要和开发人员对接
from pyhive import hive
import time
conn = hive.Connection(host='ip地址', port=10000, username='用户名', database = 'default', auth='NOSASL')
cursor = conn.cursor()
2. 设置开始和结束时间
这样只要sql语句不变, 我们跑sql时, 只需要改日期即可。
startdate = '2018-09-01'
enddate = '2018-09-19'
3. 用Python中的format函数将日期传入{}中
python中写sql脚本时, 需要用\来进行换行符的转换, \后面不能有空格。
日期用两个{}来代替, 用format函数将开始日期与结束日期传入
# 提取积分类uv,pv数据
sql_jifenxinxi_an = 'select \
count(distinct user_account) as uv, \
count(1) as pv \
from \
computer_view.client_android_log_view \
where \
hit_date between "{}" and "{}" \
and \
(btn_position like "服务-查询-积分信息%" \
or \
btn_home = "积分-扇形左" \
) \
limit 1000'.format(startdate,enddate)
cursor.execute(sql_jifenxinxi_an)
print(cursor.fetchall())
我们可以按照这个格式写工作中需要运行的多个SQL语句。 这样, 当脚本运行的时候, 我们可以腾出时间来去干其他工作, 等过一段时间,所有的SQL语句都跑完了, 我们再进行统一的整理。