Files
MarketAnalysis-ETL/EXTERNAL/AIA/04 dm_aia_provided_flag.sql
2026-04-20 14:55:25 +08:00

113 lines
3.5 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
-- 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