秒レベルデータを分レベルデータsql作成に変換

1226 ワード

前言
  • 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パラメータ
  • 入力フィールドまたは文字列をタイムスタンプ
  • にフォーマットする.
  • 全体の考え方
  • パケットは、2つの時間フォーマット変換関数を用いて、10分間隔の時間フィールド
  • である新しいフィールドを構築する.
  • は、この時間フィールドに従ってデバイス番号とグループ化される.
  • その他の重合は平均値を求める.
  • は、時間フィールドおよびデバイス番号フィールドに従って
  • をソートする.

    読み出したデータを変数に格納
    context = as_pandas(cursor)
    

    ハンドルと接続を閉じ、リソースの漏洩を防止
    cursor.close()
    conn.close()