Commit a7df831d by hejiangming

品类调研改为node_id分类

parent 17c74913
...@@ -52,7 +52,7 @@ class DwtBsTop100ChangeRate(object): ...@@ -52,7 +52,7 @@ class DwtBsTop100ChangeRate(object):
# 跨月对齐主键:分类多归属(同 current_id 挂多个父级路径=多行),只用 current_id 会 1:N 串行。 # 跨月对齐主键:分类多归属(同 current_id 挂多个父级路径=多行),只用 current_id 会 1:N 串行。
# current_id + parent_id_join(根→直接父级的完整路径)= 每行唯一(已实测 2026-05 分区无重复)。 # current_id + parent_id_join(根→直接父级的完整路径)= 每行唯一(已实测 2026-05 分区无重复)。
JOIN_KEYS = ['asin_bs_cate_current_id', 'asin_bs_cate_parent_id_join'] JOIN_KEYS = ['asin_node_current_id', 'asin_node_parent_id_join']
def __init__(self, site_name, date_type, date_info): def __init__(self, site_name, date_type, date_info):
self.site_name = site_name self.site_name = site_name
...@@ -101,10 +101,10 @@ class DwtBsTop100ChangeRate(object): ...@@ -101,10 +101,10 @@ class DwtBsTop100ChangeRate(object):
return df return df
def read_data(self): def read_data(self):
# 本期额外带 level(落表用,便于后端/排查),对比期只要指标值 # 本期额外带 level + leaf_node(落表用,便于后端/前端按叶子筛),对比期只要指标值
metric_cols = [m for m, _ in self.METRICS] metric_cols = [m for m, _ in self.METRICS]
base_sql = f""" base_sql = f"""
select {', '.join(self.JOIN_KEYS + ['level'] + metric_cols)} select {', '.join(self.JOIN_KEYS + ['level', 'leaf_node'] + metric_cols)}
from {self.source_tb} from {self.source_tb}
where site_name='{self.site_name}' and date_type='{self.date_type}' and date_info='{self.date_info}' where site_name='{self.site_name}' and date_type='{self.date_type}' and date_info='{self.date_info}'
""" """
...@@ -181,7 +181,7 @@ class DwtBsTop100ChangeRate(object): ...@@ -181,7 +181,7 @@ class DwtBsTop100ChangeRate(object):
for m, _ in self.METRICS: for m, _ in self.METRICS:
rate_cols.append(f"{m}_ym_rate") rate_cols.append(f"{m}_ym_rate")
rate_cols.append(f"{m}_lm_rate") rate_cols.append(f"{m}_lm_rate")
out_cols = self.JOIN_KEYS + ['level'] + rate_cols out_cols = self.JOIN_KEYS + ['level', 'leaf_node'] + rate_cols
self.df_save = self.df_save.select(*out_cols) \ self.df_save = self.df_save.select(*out_cols) \
.withColumn("site_name", F.lit(self.site_name)) \ .withColumn("site_name", F.lit(self.site_name)) \
......
...@@ -78,8 +78,8 @@ if __name__ == '__main__': ...@@ -78,8 +78,8 @@ if __name__ == '__main__':
# 导出列 = 86 业务列 + 3 分区列(列名与 Hive dwt_bs_top100 一致, sqoop 按名映射 PG 同名列) # 导出列 = 86 业务列 + 3 分区列(列名与 Hive dwt_bs_top100 一致, sqoop 按名映射 PG 同名列)
export_cols = [ export_cols = [
# 维度 / 键 # 维度 / 键
"asin_bs_cate_current_id", "asin_bs_cate_parent_id", "asin_bs_cate_parent_id_join", "asin_node_current_id", "asin_node_parent_id", "asin_node_parent_id_join",
"level", "cur_category_name", "level", "cur_category_name", "leaf_node",
# 销量类 # 销量类
"asin_amazon_orders_sum", "asin_bsr_orders_sum", "asin_bsr_orders_sum_new", "asin_bsr_orders_sum_brand", "asin_amazon_orders_sum", "asin_bsr_orders_sum", "asin_bsr_orders_sum_new", "asin_bsr_orders_sum_brand",
"asin_bsr_orders_mean", "asin_bsr_orders_mean_new", "asin_bsr_orders_mean_brand", "asin_bsr_orders_sum_parent", "asin_bsr_orders_mean", "asin_bsr_orders_mean_new", "asin_bsr_orders_mean_brand", "asin_bsr_orders_sum_parent",
......
...@@ -78,7 +78,7 @@ if __name__ == '__main__': ...@@ -78,7 +78,7 @@ if __name__ == '__main__':
# 导出列 = join键2 + level + 28 变化率列 + 3 分区列(列名与 Hive dwt_bs_top100_change_rate 一致) # 导出列 = join键2 + level + 28 变化率列 + 3 分区列(列名与 Hive dwt_bs_top100_change_rate 一致)
export_cols = [ export_cols = [
"asin_bs_cate_current_id", "asin_bs_cate_parent_id_join", "level", "asin_node_current_id", "asin_node_parent_id_join", "level", "leaf_node",
"asin_amazon_orders_sum_ym_rate", "asin_amazon_orders_sum_lm_rate", "asin_amazon_orders_sum_ym_rate", "asin_amazon_orders_sum_lm_rate",
"asin_bsr_orders_sum_ym_rate", "asin_bsr_orders_sum_lm_rate", "asin_bsr_orders_sum_ym_rate", "asin_bsr_orders_sum_lm_rate",
"asin_bsr_orders_mean_ym_rate", "asin_bsr_orders_mean_lm_rate", "asin_bsr_orders_mean_ym_rate", "asin_bsr_orders_mean_lm_rate",
......
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