Commit f67c2f62 by hejiangming

no message

parent 2ae61956
"""
@Author : hejiangming
@Description : ABA 月度「分类 × 归一词」词频热度统计表(按一级/二级分类聚合词频、热度、同比/环比、新词/品牌/属性标签等)
@SourceTable :
①dwt_aba_st_analytics
②dwt_aba_last_change_rate
③dim_st_brand_info
④dim_st_detail_history
⑤category_full_name(MySQL)
⑥keyword_usr_mask(PG)
⑦keywords_match_theme(PG)
@SinkTable : dws_aba_word_freq_cate
@CreateTime : 2026/06/17 10:21
@UpdateTime : 2026/06/18 17:55
"""
import os
import sys
......
"""
月度:dws_aba_word_heat.py
计算 ABA 月度词频热度 + 同比 + 主题标签,写入 Hive dws_aba_word_heat 表
业务场景:
前端"词频统计"页面,用户从筛选页面进入后前端拆词,展示每个单词的:
词频(前端算)+ 热度(本表)+ 同比(本表)+ 主题标签(本表)
本表按"单词"维度预计算,前端按单词查询。
热度算法:
对每个 ABA 词 split(' ') 拆词,单词热度 = 100000/rank
累计所有 ABA 词中同名单词的热度 → 该单词当月总热度
例:'grinch tree skirt' 排名 4993 → grinch/tree/skirt 各贡献 100000/4993 = 20.03
同比:(当月 - 去年) / 去年;新词(去年同月无)→ 1000(标记为上升)
@Author : hejiangming
@Description : 计算 ABA 月度词频热度 + 同比 + 主题标签
@SourceTable :
①dwt_aba_st_analytics
②keywords_match_theme(PG)
③match_character_dict(MySQL)
@SinkTable : dws_aba_word_heat
@CreateTime : 2026/06/11 18:27
@UpdateTime : 2026/06/16 16:55
"""
import os
......
"""
年度:dws_aba_word_heat_last365.py
计算 ABA 年度滚动词频热度 + 同比 + 主题标签,写入 Hive dws_aba_word_heat_last365 表
业务场景:
前端"词频统计"页面支持"年度"切换:展示该单词在过去 12 个月的平均热度 + 年度同比
本表是滚动型:每跑一次基准月,输出"基于该基准月往前 12 个月汇总"的结果
仅 us 站点(业务要求)
聚合算法:
年度热度 = sum(12个月 word_heat) / count(distinct 实际出现的月份)
- 动态分母(不是固定除以 12):照顾季节性词(如 christmas 只在 11-12 月出现)
- 不除空缺月份,反映该词在出现的月份里的平均热度
年度同比:
(今年年度热度 - 去年年度热度) / 去年年度热度
- 去年年度热度同算法,从 dws_aba_word_heat 的去年 12 个月分区聚出来
- 新词(去年 12 个月都没该词)→ 1000(与月度同款占位)
theme_ch_list 取 12 个月合并去重:
跟 dwt_aba_last365 处理 st_attribute_label 同思路——把 12 个月的 theme_ch_list 全部合并去重
原因:原来只取最新月口径,但基准月该词没出现就丢标签(假阴性,前端筛选漏数据)
改造:collect_set + flatten + array_distinct + sort_array,保留所有历史月命中的主题
@Author : hejiangming
@Description : 计算 ABA 年度滚动词频热度 + 同比 + 主题标签(仅 us)
@SourceTable :
①dws_aba_word_heat
@SinkTable : dws_aba_word_heat_last365
@CreateTime : 2026/06/11 18:27
@UpdateTime : 2026/06/11 18:27
"""
import os
import sys
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment