update20260427
This commit is contained in:
112
AIA/04 dm_aia_provided_flag.sql
Normal file
112
AIA/04 dm_aia_provided_flag.sql
Normal file
@@ -0,0 +1,112 @@
|
||||
-- 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
|
||||
Reference in New Issue
Block a user