秒レベルデータを分レベルデータsql作成に変換
1226 ワード
前言 pythonでhiveを読み出し、hive中の秒レベルのデータを10分間隔のデータに変換し、時間とデバイスidを除くすべてのフィールドの値を平均値とする.
コード#コード#
hiveを接続し、接続チャネルを作成し、接続チャネルのキー(ハンドル)を取得します.
必要に応じてデータを読み込む FROM_UNIXTIME関数、タイムスタンプのフォーマット、2つのパラメータ フォーマットが必要なデータ フォーマット UNIX_TIMESTAMP関数、フォーマットタイムスタンプ、1パラメータ 入力フィールドまたは文字列をタイムスタンプ にフォーマットする.
全体の考え方 パケットは、2つの時間フォーマット変換関数を用いて、10分間隔の時間フィールド である新しいフィールドを構築する.は、この時間フィールドに従ってデバイス番号とグループ化される. その他の重合は平均値を求める. は、時間フィールドおよびデバイス番号フィールドに従って をソートする.
読み出したデータを変数に格納
ハンドルと接続を閉じ、リソースの漏洩を防止
コード#コード#
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
""")
読み出したデータを変数に格納
context = as_pandas(cursor)
ハンドルと接続を閉じ、リソースの漏洩を防止
cursor.close()
conn.close()