python脚本补充两个日期之间的hive数据

19 篇文章 2 订阅
#coding:utf-8
import os
import datetime

#获取之后日期
def get_day(st,dt,format="%Y%m%d"):

    day = st + datetime.timedelta(days=dt)
    return day.strftime(format)

#日期格式转换
def format_date(t):
    return datetime.date(int(t[0:4]),int(t[4:6]),int(t[6:]))

#执行shell命令
def execute_shell(shell_cmd):
    result = os.system(shell_cmd)
    if result != 0:
        print("%s cmd execute failed!"%shell_cmd)
        raise Exception("%s cmd execute failed!"%shell_cmd)
    print("%s cmd execute success!"%shell_cmd)

#后续不用创建表
def supplementary_data(days):
    #补数sql
    sql1 = '''
        hive --hivevar today=%s -f /home/risk/flow-error-uv-check/hql/flow/flow_v2.sql
    '''%(days)
    print (sql1)
    execute_shell(sql1)

#计算两个日期之间的时间差
def calculate_delta_t(st, et):
    st = datetime.date(int(st[0:4]),int(st[4:6]),int(st[6:]))

    et = datetime.date(int(et[0:4]),int(et[4:6]),int(et[6:]))

    return (et - st).days


if __name__ == '__main__':
    st = '20210901'
    et = '20211101'

    for i in range(int(calculate_delta_t(st, et))):
        day = get_day(format_date(st), i)
        supplementary_data(day)
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值