秒级数据转化为分钟级数据sql编写

前言

  • 利用python读取hive,将hive中秒级数据转化为以10分钟为间隔的数据,除时间与设备id外所有字段的值求平均值。

代码

连接hive,创建连接通道,并且得到连接通道的钥匙(句柄)
conn =  connect(host='地址', port=10000, auth_mechanism='PLAIN', user='用户名',database='存储空间')
cursor = conn.cursor()
按照需求读取数据
cursor.execute(f"""
select 
a2 as eqid,
avg(a5) as a5,
avg(a6) as a6,
avg(a7) as a7,
FROM_UNIXTIME(( UNIX_TIMESTAMP(a.a4)-UNIX_TIMESTAMP(a.a4)%(10*60)),'yyyy-MM-dd HH:mm:ss') as dtime,
from 【表名】 a
where 【过滤条件】
group by a2,UNIX_TIMESTAMP(a.a4)-UNIX_TIMESTAMP(a.a4)%(10*60) order by a2,dtime
""")
  • FROM_UNIXTIME函数,格式化时间戳,2个参数
    • 需要格式化的数据
    • 格式化的格式
  • UNIX_TIMESTAMP函数,格式化时间戳,1个参数
    • 将输入的字段或者字符串格式化为时间戳
  • 整体的思路
    • 分组,利用俩个时间格式转化函数,构造一个新的字段出来,这个字段便是以10分钟为间隔的时间字段
    • 按照这个时间字段与设备编号来分组。
    • 其他的聚合求平均值。
    • 按照时间字段和设备编号字段来排序
将读取出来的数据存储到变量中
context = as_pandas(cursor)
关闭句柄及连接,防止资源泄露
cursor.close()
conn.close()

你可能感兴趣的:(数据分析)