说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
神策是一个商业数据分析工具,它提供了 HUE 查询功能,允许我们直接编写 SQL 进行数据查询。本文将使用 Python 自动执行 SQL 查询。关于接口的更多细节可以查看它的查询API文档: https://manual.sensorsdata.cn/sa/latest/tech_super_api-33292373.html 。
导入将要用到的库包:
from io import StringIO
import pandas as pd
import requests
import json
# 配置常量
PROJECT = 'xx_app' # 项目
首先模拟登录神策系统:
# 账号密码、过期时间
LOGIN_DATA = {"account_name":"XXX@XXX.com",
"password":"***",
"expired_interval": 259200} # 效期,分钟(这里取上限180天)
# 头信息
headers = {'Content-Type': 'application/json;charset=UTF-8'}
# 域名为系统实际的域名,下同
login_url = f'http://xxx.xxx.com/api/v2/auth/login?project={PROJECT}'
s = requests.Session()
c = s.post(login_url, data=json.dumps(LOGIN_DATA), headers=headers)
获取 session_id:
API_SECRET = c.json()['session_id']
API_SECRET
# 'tayAtvZ***WsgXSGjEGGK'
这个 SQL 将用于自动查询的 URL 拼接中。
最后执行 SQL 的查询操作:
headers_q ={'Content-Type': 'application/x-www-form-urlencoded'}
q_url = f'http://xxx.xxx.com/api/sql/query?token={API_SECRET}&project={PROJECT}'
# 支持SQL中的变量
lmt_qty = 10
# 要执行的 sql
sql = f'''
SELECT event, time, user_id FROM events LIMIT {lmt_qty}
'''
q_pra = dict(q=sql, format='csv')
%time q = s.post(q_url, data=q_pra, headers=headers_q)
q.text[:200]
# 'event\ttime\tuser_id\nClick\t2020-02-17 23:21:08.855....
q.text 中的是我们查询出的 csv 结果数据。
将查询结果读取到 Pandas:
df = pd.read_csv(StringIO(q.text), sep='\t')
df
'''
event time user_id
0 Click 2020-02-14 23:21:08.855 8947834
1 Click2 2020-02-12 23:21:09.553 4345223
'''
最后可以对 df 进行数据处理和分析。
(完)
更新时间:April 21, 2022, 8:10 p.m. 标签:python 神策 查询