化妆品网站建设策划书html5静态模板
news/
2025/9/23 17:04:40/
文章来源:
化妆品网站建设策划书,html5静态模板,营销型网站建设优化,台州网站如何制作一、目标
实现一个函数#xff0c;传入两个datetime类型的参数#xff0c;返回double类型的工作日天数
二、思路
如何计算差值#xff1f; 如果开始时间和结束时间在同一天#xff1a;实现同 datediff(end, start, ‘ss’) / 86400.0 如果开始时间和结束时间在不同天传入两个datetime类型的参数返回double类型的工作日天数
二、思路
如何计算差值 如果开始时间和结束时间在同一天实现同 datediff(end, start, ‘ss’) / 86400.0 如果开始时间和结束时间在不同天将时间分为三部分 a. 开始时间 - 开始时间当天的24点 b. 结束时间当天的0点 - 结束时间 c. 开始时间当天的24点 - 结束时间当天的0点 的工作日天数 三、实现
1、下载三方包 2、编译生成WHEEL包 将第三方包解压到本地在系统的命令行窗口切换路径至setup.py文件所在文件夹 在系统的命令行窗口执行如下命令编译生成WHEEL包
huahuoHUAHUOdeMacBook-Pro ~ % cd Downloads
huahuoHUAHUOdeMacBook-Pro Downloads % cd chinesecalendar-1.8.1
huahuoHUAHUOdeMacBook-Pro chinesecalendar-1.8.1 % python setup.py bdist_wheel 修改后缀为ZIP格式 重命名为
3、上传资源
hdfs dfs -put /path/to/chinese_holiday.zip /hdfs/path/to/work/chinese_holiday.zip
4、新建Python资源
chinese_holiday.py
● 计算 end 和 start 之间的总天数如果发生异常比如传入的不是有效的 datetime 对象它将返回 None。 ● 然后从 start 日期的第二天开始迭代一直到 end 日期的前一天。对于每一天如果 is_holiday(start_date) 返回 True表示这一天是节假日则将 total_days 减一。is_holiday 函数来自于 chinese_calendar 模块用于判断指定的日期是否为中国的节假日。 ● 在迭代期间如果发生异常比如无法从 chinese_calendar 模块导入 is_holiday 函数或其他原因它将返回当前计算的 total_days。 ● 如果没有异常最终返回的 total_days 将是 end 和 start 日期之间的工作日数即剔除了节假日的天数。 总结来说这个自定义函数的目的是计算两个日期之间的中国工作日天数忽略周末和公共假期。 class is_chinese_holiday(object):def __init__(self):import syssys.path.insert(0, work/chinese_holiday.zip)def evaluate(self, thedate):from chinese_calendar import get_holiday_detail, is_in_lieufrom datetime import datetimefrom json import dumpsinfo {is_holiday: Invalid}try:target datetime.strptime(thedate, %Y%m%d).date()detail get_holiday_detail(target)info[is_holiday] str(detail[0])info[is_in_lieu] str(is_in_lieu(target))if (detail[0]):info[holiday_name] str(detail[1])return dumps(info)else:return dumps(info)except:return dumps(info)class get_chinese_workdays(object):def __init__(self):import syssys.path.insert(0, work/chinese_holiday.zip)def evaluate(self, end, start):from chinese_calendar import is_holidayfrom datetime import datetime, timedeltatry:total_days (end - start).total_seconds() / 86400.0except:return Nonetry:start_date start.date() timedelta(days1)while start_date end.date():total_days - int(is_holiday(start_date))start_date timedelta(days1)return total_daysexcept:return total_days
5、新建Maxc函数
将你的 Python UDF 脚本上传到 Hive 服务器上或者放置在一个 Hive 能够访问到的位置确保 Hive 服务器上已经安装了 Python并且你的脚本具有执行权限。 你需要在 Hive 会话中注册这个 Python 脚本作为一个 UDF。这可以通过 ADD FILE 命令来完成然后使用 TRANSFORM 关键字调用这个脚本 – 将 Python 脚本添加到 Hive ADD FILE /path/to/chinese_holiday.py;
– 创建一个临时的自定义函数 CREATE TEMPORARY FUNCTION get_chinese_workdays AS ‘chinese_holiday.get_chinese_workdays’;
– 使用 UDF 转换数据 SELECT get_chinese_workdays (column_name) FROM your_table;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913252.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!