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"
382 lines
8.1 KiB
SQL
382 lines
8.1 KiB
SQL
-- 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 |