Files
MarketAnalysis-ETL/04 dm_td_external_calendar.sql
chenwu 832c7bcd69 new file: 01 dm_tf_external_sales.sql
new file:   02 dm_td_external_keycompatitor.sql
	new file:   03 dm_td_external_brand_market.sql
	new file:   04 dm_td_external_calendar.sql
	new file:   05 dm_td_external_exchangerate.sql
	new file:   07 dm_td_external_packinfo.sql
	new file:   08 dm_td_external_corp.sql
	new file:   09 dm_td_external_geo_type.sql
	new file:   11 DM_TD_EXTERNAL_MARKET_NEW.sql
	new file:   12 dm_td_external_org.sql
	new file:   13 external auth.sql
	new file:   14 dm_tf_external_retail_special_bkp.sql
	new file:   AIA/01 dm_aia_pack_property.sql
	new file:   AIA/02 dm_ext_aia_sales.sql
	new file:   AIA/02 dm_ext_aia_sales_bakup_20230327.sql
	new file:   AIA/03 dm_aia_flag.sql
	new file:   AIA/04 dm_aia_provided_flag.sql
	new file:   AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql
	new file:   AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql
	new file:   AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql
	new file:   AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql
	new file:   AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql
	new file:   AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql
	new file:   AIA/11 dm_aia_targethp_flag.sql
	new file:   "AIA/z_03 dm_aia_flag_\345\244\207\344\273\275\347\224\250.sql"
	new file:   CHC/01 dm_chc_pack_property.sql
	new file:   CHC/02 DM_TF_EXT_CHC_SALES.sql
	new file:   CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql
	new file:   CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql
	new file:   CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql
	new file:   CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql
	new file:   CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql
	new file:   CHPA/01 dwd_ims_atc_hierarchy.sql
	new file:   CHPA/01 dwd_ims_nfc_hierarchy.sql
	new file:   CHPA/01 dwd_ims_td_manufacturer_corp.sql
	new file:   CHPA/01 dwd_ims_td_pack_property.sql
	new file:   CHPA/01 dwd_update.sql
	new file:   CHPA/01_FB_BLOB_TO_DWD.sql
	new file:   CHPA/02 DWS_IMS_TD_GEO.sql
	new file:   CHPA/02 dws_ims_td_atc_cn.sql
	new file:   CHPA/02 dws_ims_td_corp_cn.sql
	new file:   CHPA/02 dws_ims_td_date.sql
	new file:   CHPA/02 dws_ims_td_manu_cn.sql
	new file:   CHPA/02 dws_ims_td_market.sql
	new file:   CHPA/02 dws_ims_td_market_ta.sql
	new file:   CHPA/02 dws_ims_td_nfc_cn.sql
	new file:   CHPA/02 dws_ims_td_prod_cn.sql
	new file:   CHPA/02 tmp_ims_td_prod_tmp.sql
	new file:   CHPA/02 tmp_ims_tf_fact_sales.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql
	new file:   CHPA/03 DM_TF_EXT_CHPA_SALES.sql
	new file:   CHPA/03 dm_ims_td_calendar.sql
	new file:   CHPA/03 dm_ims_td_geo.sql
	new file:   CHPA/03 dm_ims_td_market_property.sql
	new file:   CHPA/03 dm_ims_td_org.sql
	new file:   CHPA/03 dm_ims_td_org_hvh.sql
	new file:   CHPA/03 dm_ims_td_pack_property.sql
	new file:   CHPA/03 dm_ims_tf_sales.sql
	new file:   CHPA/03 dm_td_chpa_market_definition.sql
	new file:   CHPA/03 dm_td_ims_city_mapping.sql
	new file:   EC/03 ec_load_data.sql
	new file:   EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql
	new file:   EC/05 DM_TF_EXT_EC_SALES.sql
	new file:   EC/06 DM_TD_EXT_EC_PACK2MARKET.sql
	new file:   EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql
	new file:   EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql
	new file:   EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql
	new file:   EC/1 (ec)blob_to_dwd.sql
	new file:   EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py
	new file:   Merged_Data/Merged_Data_Config_table_bkp.sql
	new file:   Merged_Data/Merged_Data_Config_table_bymonth.sql
	new file:   Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql
	new file:   Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql
	new file:   ORG/DM_TD_EXT_AIA_ORG.sql
	new file:   ORG/DM_TD_EXT_CHC_ORG.sql
	new file:   ORG/DM_TD_EXT_CHPA_ORG.sql
	new file:   ORG/DM_TD_EXT_COUNTY_ORG.sql
	new file:   ORG/DM_TD_EXT_EC_ORG.sql
	new file:   ORG/DM_TD_EXT_RETAIL_ORG.sql
	new file:   ORG/DM_TD_EXT_THC_ORG.sql
	new file:   ORG/DM_TD_EXT_XIEHE_ORG.sql
	new file:   OTHERS/01 dm_td_report_url.sql
	new file:   OTHERS/02 dws_ext_email_warning.sql
	new file:   OTHERS/external_triggered_email.py
	new file:   Retail/01 load_tmp_data.py
	new file:   Retail/02 split_brand_data.py
	new file:   Retail/03 split_pack_data.py
	new file:   Retail/04 map_to_dws_table.py
	new file:   Retail/05 load_dtp_temp_data.py
	new file:   Retail/06 split_dtp_brand_data.py
	new file:   Retail/07 split_dtp_pack_data.py
	new file:   Retail/08 map_to_dtp_dws_table.py
	new file:   Retail/09 dwd_inc_gnd_ext_retail_nataional.py
	new file:   Retail/10 map_to_retail_dm_table.py
	new file:   Retail/11 map_to_overview_dm_table.py
	new file:   Retail/12 dws_tf_external_retail_dtp_special.sql
	new file:   Retail/13 DM_TF_EXT_RETAIL_SALES.sql
	new file:   Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql
	new file:   Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql
	new file:   Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql
	new file:   Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql
	new file:   Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql
	new file:   Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql
	new file:   Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql
	new file:   Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql
	new file:   Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql
	new file:   Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql
	new file:   Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql
	new file:   "Retail/z1 dwd_inc_gnd_ext_retail_nataional_\344\275\234\345\272\237.py"
	new file:   "Retail/z2 retail_load_data_\344\275\234\345\272\237.sql"
	new file:   "Retail/z3 retail_overview_data_\344\275\234\345\272\237.sql"
	new file:   THC/01 dm_thc_pack_property.sql
	new file:   THC/02 dm_ext_thc_sales.sql
	new file:   THC/02 dm_ext_thc_sales_bakup_20260327.sql
	new file:   THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql
	new file:   THC/04 dm_tf_external_sales_thc.sql
	new file:   THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql
	new file:   THC/06 DM_TD_EXT_THC_PACK2MARKET.sql
	new file:   THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql
	new file:   THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql
	new file:   THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql
	new file:   UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql
	new file:   UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql
	new file:   XIEHE/01 xiehe_blob_to_dwd.py
	new file:   XIEHE/02 dm_xiehe_pack_property.sql
	new file:   XIEHE/03 dm_ext_xiehe_geo.sql
	new file:   XIEHE/04 dm_ext_xiehe_sales.sql
	new file:   XIEHE/05 dm_td_xiehe_core_dept.sql
	new file:   XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql
	new file:   XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql
	new file:   XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql
	new file:   XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql
	new file:   XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql
	new file:   XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql
	new file:   XIEHE/bkp_01 xiehe_blob2dwd.py
	new file:   XIEHE/bkp_02 dm_ext_xiehe_sales.sql
	new file:   XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql
	new file:   county/01 tmp_ims_county_fact_sales_sum.sql
	new file:   county/02 tmp_imscounty_Result.sql
	new file:   county/03 dm_ims_td_county_geo.sql
	new file:   county/04 dws_ext_county_tf_sales.sql
	new file:   county/05 dm_ext_county_td_pack_property.sql
	new file:   county/06 dm_td_county_pack_region.sql
	new file:   county/07 dm_ext_county_tf_sales_region.sql
	new file:   county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql
	new file:   county/09 DM_TF_EXT_COUNTY_SALES.sql
	new file:   county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql
	new file:   county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql
	new file:   county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql
	new file:   county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql
	new file:   for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql
	new file:   for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql
	new file:   for_AIA_Dashboard/03 dm_td_aia_original_col.sql
	new file:   for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql
	new file:   for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql
	new file:   for_AIA_Dashboard/06 dm_td_aia_rank.sql
	new file:   for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql
	new file:   for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py
	new file:   for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql
	new file:   z 01 dm_tf_external_sales.sql
	new file:   "z 10 dm_td_external_market_pack_mapping_\344\275\234\345\272\237.sql"
	new file:   "z 11 dm_td_external_market_\344\275\234\345\272\237.sql"
	new file:   "\344\270\212\347\272\277\350\204\232\346\234\254.sql"
	new file:   "\346\225\260\346\215\256\351\252\214\350\257\201.sql"
2026-04-27 15:48:38 +08:00

382 lines
8.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Databricks notebook source
---------------------------------------------------------------------------
--修改时间20241126
--修改人Fanxujia
--修改内容:
--THC渠道分为14省的数据源以及全国的数据源两种分在了2个事实表里下面在维表在引用事实表时需要将两个事实表union在一起
----------------------------------------------------------------------------
create or replace temporary view external_sales_union as
select YYYYMM,SALES_VALUE_CAL,DATA_SOURCE from dm.dm_tf_ext_unionall_sales
union all
select YYYYMM,SALES_VALUE_CAL,DATA_SOURCE from dm.dm_tf_external_sales_thc
-- COMMAND ----------
---------------------------------------------------------------------------
--修改时间20260309
--修改人chenwu
--修改内容:
--niad 的数据会比其他数据先入数据库,会产生月份差。
----------------------------------------------------------------------------
create or replace temporary view retail_niad_sales as
select
GREATEST(niad_month, OTHERS_MONTH) as YYYYMM,
NIAD_MONTH
from
(
select
max(niad_month) as niad_month,
max(OTHERS_MONTH) as OTHERS_MONTH
from
(
select
niad_month,
OTHERS_MONTH
from
tmp.tmp_dm_td_ext_retail_niad_month
union all
select
niad_month,
OTHERS_MONTH
from
tmp.tmp_dm_td_ext_ec_niad_month
)
)
-- COMMAND ----------
create or replace temporary view merged_date_calender as
WITH ALL_DATA_YYYY (
select
max(yyyymm) YYYYMM,
'AIA' DATATYPE
from
dm.dm_tf_ext_unionall_sales
where
DATA_SOURCE = 'AIA(Monthly)'
union all
select
max(yyyymm) YYYYMM,
'DTP' DATATYPE
from
dm.dm_tf_ext_unionall_sales
where
DATA_SOURCE = 'DTP(Quarterly)'
union all
select
max(yyyymm) YYYYMM,
'CHPA' DATATYPE
from
dm.dm_tf_ext_unionall_sales
where
DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
)
SELECT
min(YYYYMM) AS MERGED_DATA_MONTH,
GREATEST(
'202401',
CAST((CAST(LEFT(min(yyyymm), 4) AS INT) - 3) * 100 + 1 AS VARCHAR(6)) --三年区间
) AS MERGED_DATA_MONTH_START
from
ALL_DATA_YYYY
-- COMMAND ----------
insert overwrite dm.dm_td_external_calendar (
date,
yyyymmdd,
yyyymm,
year,
quarter,
month,
month_cn,
day,
is_holiday,
work_days,
mtd_work_days,
left_work_days,
year_quater,
half_year,
dd,
YYYYMM_EXTERNAL,
MONTH_EXTERNAL,
YEAR_EXTERNAL,
YYYYMM_EXTERNAL_AIA,
YYYYMM_EXTERNAL_NIAD,
YYYYMM_MERGED_DATA
)
--公用的日历表最小日期不到2018年因此需要自己构造一个日历表日期从2018年起。
--31天
with day_31 as (select
explode(
array(
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
)
) as day
),
--30天
day_30 as (select
day
from
day_31
where
day <= 30
),
--29天闰年的2月份
day_29 as (select
day
from
day_31
where
day <= 29
),
--28天非闰年的2月份
day_28 as (select
day
from
day_31
where
day <= 28
),
--最后一天是31号的月份
month_31 as (select
explode(array(1, 3, 5, 7, 8, 10, 12)) as month
),
--最后一天是30号的月份
month_30 as (select
explode(array(4, 6, 9, 11)) as month
),
--2月份单拎出来
month_2 as (select
2 as month
),
--非闰年的月、日
mmdd_365 as (select
month,
day
from
month_31 cross join day_31
union all
select
month,
day
from
month_30 cross join day_30
union all
select
month,
day
from
month_2 cross join day_28
),
--闰年的月、日
mmdd_366 as (select
month,
day
from
month_31 cross join day_31
union all
select
month,
day
from
month_30 cross join day_30
union all
select
month,
day
from
month_2 cross join day_29
),
--注意事项:
--目前年份设计只到2040年如果2041年依旧使用此套代码这里需要做修改
--非闰年的年份
year_365 as (select
explode(
array(
2018,
2019,
2021,
2022,
2023,
2025,
2026,
2027,
2029,
2030,
2031,
2033,
2034,
2035,
2037,
2038,
2039
)
) as year
),
--闰年的年份
year_366 as (select
explode(array(2020, 2024, 2028, 2032, 2036, 2040)) as year
),
--从2018年1月1日至2040年12月31日的数据
--最终插入dm表时还会在此基础上框定时间范围
yyyymmdd as (select
year,
month,
day
from
year_365 cross join mmdd_365
union all
select
year,
month,
day
from
year_366 cross join mmdd_366
),
--补充其他需要的字段
tmp_calendar as (select
make_date(year, month, day) as `date`,
year * 10000 + month * 100 + day as yyyymmdd,
year * 100 + month as yyyymm,
concat(month, '') as month_cn,
year,
month,
day,
case
when month <= 3 then 1
when month <= 6 then 2
when month <= 9 then 3
else 4
end as quarter,
case
when month <= 3 then concat(year, 'Q1')
when month <= 6 then concat(year, 'Q2')
when month <= 9 then concat(year, 'Q3')
else concat(year, 'Q4')
end as year_quater,
case
when month <= 6 then concat(year, 'H1')
else concat(year, 'H2')
end as half_year,
--下面4个字段实际在PBI上没有用到因此直接设为0
0 as work_days,
0 as mtd_work_days,
0 as is_holiday,
0 as left_work_days
from
yyyymmdd
)
select
`date`,
yyyymmdd,
A.yyyymm,
`year`,
quarter,
`month`,
month_cn,
`day`,
is_holiday,
work_days,
mtd_work_days,
left_work_days,
year_quater,
half_year,
substring(yyyymmdd, 7, 2) dd,
CASE
WHEN A.yyyymm = B.YYYYMM THEN 'R'
ELSE A.yyyymm
END YYYYMM_EXTERNAL,
CASE
WHEN A.yyyymm = B.YYYYMM THEN 'R'
ELSE `month`
END MONTH_EXTERNAL,
CASE
WHEN A.`year` = LEFT(B.YYYYMM, 4) THEN 'R'
ELSE A.`year`
END YEAR_EXTERNAL,
-- from DM.DM_TD_CALENDAR A
----------------------------------------------------
--修改时间20241211
--修改人Fanxujia
--修改内容:
--给AIA报告增加单独的R月标记
----------------------------------------------------
case
when A.yyyymm = C.YYYYMM THEN 'R'
WHEN A.yyyymm >= C.min_yyyymm AND A.yyyymm <=C.yyyymm
THEN A.YYYYMM
ELSE NULL
end as YYYYMM_EXTERNAL_AIA,
case
when A.yyyymm = D.NIAD_MONTH THEN 'R'
else A.yyyymm
end as YYYYMM_EXTERNAL_NIAD,
case
when A.yyyymm = E.MERGED_DATA_MONTH THEN 'R'
when A.yyyymm >= E.MERGED_DATA_MONTH_START AND A.YYYYMM<= E.MERGED_DATA_MONTH THEN A.yyyymm
else null
end as YYYYMM_MERGED_DATA
from
tmp_calendar A
join (
select
MAX(YYYYMM) YYYYMM
from
external_sales_union
where
SALES_VALUE_CAL <> 0
) B
on 1 = 1
--获得AIA数据的最新月
cross join (
select
max(YYYYMM) as YYYYMM,min(yyyymm) AS min_yyyymm
from
dm.dm_tf_ext_unionall_sales
where
DATA_SOURCE = 'AIA(Monthly)'
and SALES_VALUE_CAL <> 0
) C
left join retail_niad_sales AS D
left join merged_date_calender as E
WHERE
A.yyyymm >= (
SELECT
MIN(YYYYMM)
FROM
external_sales_union
)
AND A.yyyymm <= (LEFT(D.YYYYMM, 4) * 100 + 12)
AND A.day = 1