-- Databricks notebook source -- MAGIC %run ../../../Common/config -- COMMAND ---------- -- MAGIC %python -- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') -- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dwd_hospital_classification`').createOrReplaceTempView('cdw_dwd_dwd_hospital_classification') -- COMMAND ---------- --连续取数机构 ---------------------------------------------------------------------------------------------------------------------- --修改时间:20241029 --修改人:FanXujia --修改内容: --根据事实表最新月,往前推12个月(含最新月),按机构 + 年月粒度汇总,如果每个月销量都不等于0,这家机构称为:滚动一年有数 --根据事实表最新月,往前推24个月(含最新月),按机构 + 年月粒度汇总,如果每个月销量都不等于0,这家机构称为:滚动两年有数 --2022年没有销量为正常情况,判断时仅考虑2023年01月起销量是否等于0 ---------------------------------------------------------------------------------------------------------------------- insert overwrite table dm.dm_aia_provided_flag with max_ym as ( select max(ym) as max_ym from dm.dm_ext_aia_sales ) ,ym_range as ( select max_ym, case when max_ym <= '202412' then cast(right(max_ym,2) as int) else cast(12 as int) end ym_12m, case when max_ym <= '202312' then '202401' when right(max_ym,2) = '12' then concat(left(max_ym,4),'01') else concat(cast(left(max_ym, 4) - 1 as int),right(concat('0', cast(right(max_ym, 2) + 1 as int)), 2)) end as ym_12m_before, case when max_ym <= '202312' then cast(right(max_ym,2) as int) when max_ym <= '202512' then cast(right(max_ym,2) as int) + 12 else cast(24 as int) end as ym_24m, case when max_ym <= '202512' then '202401' when right(max_ym,2) = '12' then concat(cast(left(max_ym,4) - 1 as int),'01') else concat(cast(left(max_ym, 4) -2 as int),right(concat('0', cast(right(max_ym, 2) + 1 as int)), 2)) end as ym_24m_before from max_ym ) ,sales_1 as ( select inst_code, ym from dm.dm_ext_aia_sales group by ym, inst_code having sum(value) <> 0 ) ,sales_2 as ( select t1.inst_code, t1.ym, t2.max_ym, t2.ym_12m, t2.ym_12m_before, t2.ym_24m, t2.ym_24m_before from sales_1 t1 cross join ym_range t2 ) ,flag_12m as ( select inst_code, '滚动一年有数' as aia_provided_flag, 'AIA(Monthly)' as DATA_SOURCE from sales_2 where ym <= max_ym and ym >= ym_12m_before group by inst_code having count(1) = (select ym_12m from ym_range) ) ,flag_24m as ( select inst_code, '滚动两年有数' as aia_provided_flag, 'AIA(Monthly)' as DATA_SOURCE from sales_2 where ym <= max_ym and ym >= ym_24m_before group by inst_code having count(1) = (select ym_24m from ym_range) ) select inst_code, aia_provided_flag, DATA_SOURCE from flag_12m union all select inst_code, aia_provided_flag, DATA_SOURCE from flag_24m union all select '' as inst_code,'' as aia_provided_flag,'IQVIA-CHPA(Monthly)' as data_source union all select '' as inst_code,'' as aia_provided_flag,'XH Data(Quarterly)' as data_source union all select '' as inst_code,'' as aia_provided_flag,'EC(Monthly)' as data_source union all select '' as inst_code,'' as aia_provided_flag,'Retail(Quarterly)' as data_source union all select '' as inst_code,'' as aia_provided_flag,'CHC(Quarterly)' as data_source union all select '' as inst_code,'' as aia_provided_flag,'THC(Quarterly)' as data_source union all select '' as inst_code,'' as aia_provided_flag,'IQVIA-COUNTY(Quarterly)' as data_source