代码库

阅读: 评论:0

代码库

代码库

需求时间维度:2019年5月1号-至今,数据以月统计。即每个分区的数据除了当前月份的时间跨度是一号到现在来统计的,其他(历史)是按整个月统计的,,因此一个分区中最小粒度只有一条记录。

if [[ -z $1 ]]; then
datetime=`date -d "-1 days" +"%Y-%m-%d"`
else
datetime=$1
fi
nowdate=`date -d "${datetime}" +"%Y%m%d"`
ym_nowdate=`date -d "${nowdate}" +"%Y%m"` 
#索引
cur_statdate=${nowdate} #"20190501" 当用于刷历史分区,打开注释
#索引年月
statdate=`date -d "${cur_statdate}" +"%Y%m"`
while [ "${ym_nowdate}" != "${statdate}" ] #当非昨天的年月时,会进入循环,用于刷历史分区
doecho "cur_statdate:${cur_statdate}" start_statdate=`date -d "${cur_statdate}" +"%Y%m01"` #月初start_datetime=`date -d "${cur_statdate}" +"%Y-%m-01"` #月初(-分隔end_statdate=`date -d "$(date -d "${start_statdate} next month" +'%Y%m01') yesterday" +"%Y%m%d"` #月末end_datetime=`date -d "${end_statdate}" +"%Y-%m-%d"` #月末(-分隔echo "start_statdate: ${start_statdate}"echo "end_statdate: ${end_statdate}"echo "statdate:${statdate}"#运行sql脚本(参数start_statdate、start_datetime、end_statdate、end_datetime用于源表做时间维度选择)cur_statdate=`date -d "${start_statdate} next month" +"%Y%m%d"` #索引以月为步进statdate=`date -d "${cur_statdate}" +"%Y%m"` #索引年月
done
start_statdate=`date -d "${cur_statdate}" +"%Y%m01"` #月初
start_datetime=`date -d "${cur_statdate}" +"%Y-%m-01"` #月初(-分隔
end_statdate=${nowdate} #月末
end_datetime=`date -d "${nowdate}" +"%Y-%m-%d"` #月末(-分隔
echo "cur_statdate:${cur_statdate}"
echo "start_statdate: ${start_statdate}"
echo "end_statdate: ${end_statdate}"
echo "statdate:${statdate}"

注意:
1、dt表是以日为分区,且含有所有数据(全量),即一个分区可查看所有历史到现在的信息,所以dt表的分区要选择最新日期。因为这里的需求是要统计历史月份,有两种源表类型,做的时间选择是不一样的:

  • 与目标表粒度一致的源表:源表的日期分区应该选择月末/昨天;
  • 与目标表粒度不一致的源表:源表的日期分区应该选择月末/昨天,源表的统计日期应该选择 >= 月初 and <= 月末/昨日日期;

2、d表是以日为分区,分区里只有一日的信息,所以d表的分区要选择 >= 月初 and <= 月末/昨日日期

3、最要细心的是什么呢?
当两个源表的主体关系会变动的时候,如设备所在的商户可能会变化。如果以月作时间维度分别给两张源表做选择(select),统计的数据(如商户的月利润)就会不准确。应该以日作时间维度分别给两张源表做选择,两表的关联条件包含上日期,最后再以商户为粒度(group by)做统计,这样数据才是准确的。

本文发布于:2024-02-04 18:28:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170713666058320.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:好码推荐
下一篇:JavaScript 函数
标签:代码
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23