diff --git a/EC/03 ec_load_data.ipynb b/EC/03 ec_load_data.ipynb index 4e96d96..401411f 100644 --- a/EC/03 ec_load_data.ipynb +++ b/EC/03 ec_load_data.ipynb @@ -9,12 +9,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, - "finishTime": 1777537485985, + "finishTime": 1778478974793, "inputWidgets": {}, "nuid": "86f0c1e4-9672-4b69-b7d7-e972573aa69d", "showTitle": false, - "startTime": 1777537485980, - "submitTime": 1777537484990, + "startTime": 1778478973655, + "submitTime": 1778478972034, "tableResultSettingsMap": {}, "title": "" } @@ -38,12 +38,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, - "finishTime": 1777537486382, + "finishTime": 1778478975285, "inputWidgets": {}, "nuid": "f319d145-a050-425c-b86f-c73d2e6f41ad", "showTitle": false, - "startTime": 1777537485990, - "submitTime": 1777537484997, + "startTime": 1778478974798, + "submitTime": 1778478972040, "tableResultSettingsMap": {}, "title": "" } @@ -89,10 +89,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778478991545, "inputWidgets": {}, "nuid": "a11838c0-855f-4fe6-95d7-790959cb6739", "showTitle": false, - "submitTime": 1777537485002, + "startTime": 1778478975290, + "submitTime": 1778478972044, "tableResultSettingsMap": {}, "title": "" } @@ -475,10 +477,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778478993866, "inputWidgets": {}, "nuid": "85453796-9385-4a5a-bf20-6bfd459580ae", "showTitle": false, - "submitTime": 1777537485011, + "startTime": 1778478991550, + "submitTime": 1778478972052, "tableResultSettingsMap": {}, "title": "" } @@ -504,10 +508,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479009600, "inputWidgets": {}, "nuid": "015ef590-887b-4dfa-bfa1-ebd05effc2cf", "showTitle": false, - "submitTime": 1777537485015, + "startTime": 1778478993870, + "submitTime": 1778478972058, "tableResultSettingsMap": {}, "title": "" } @@ -547,10 +553,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479032113, "inputWidgets": {}, "nuid": "339d06b1-1c67-4249-a105-aaafb352bb38", "showTitle": false, - "submitTime": 1777537485020, + "startTime": 1778479009604, + "submitTime": 1778478972063, "tableResultSettingsMap": {}, "title": "" } @@ -591,7 +599,7 @@ " ) as yyyymm,\n", " first_value(a.pack_id) as pack_id,\n", " a.iqvia_pack_code,a.platform,\n", - " '' as store_name,\n", + " a.store_name,\n", " a.store_type,\n", " sum(a.sales_value) as sales_value,\n", " sum(a.sales_unit) as sales_unit,\n", @@ -608,7 +616,7 @@ " when cast(substr(cast(a.yyyymm as string), 5, 2) as int) <= 9 then concat(substr(cast(a.yyyymm as string), 1, 4), '09')\n", " else concat(substr(cast(a.yyyymm as string), 1, 4), '12')\n", " end,\n", - " a.iqvia_pack_code,a.platform,a.store_type\n", + " a.iqvia_pack_code,a.platform,a.store_name,a.store_type\n", ") t1\n", "group by\n", " t1.yyyymm,t1.pack_id,t1.iqvia_pack_code,t1.platform,t1.store_name,t1.store_type" @@ -624,10 +632,12 @@ "rowLimit": 10000 }, "collapsed": true, + "finishTime": 1778479032120, "inputWidgets": {}, "nuid": "c686ec31-8c18-4a4a-96ca-ce5a29f2f676", "showTitle": false, - "submitTime": 1777537485025, + "startTime": 1778479032117, + "submitTime": 1778478972070, "tableResultSettingsMap": {}, "title": "" } @@ -676,10 +686,12 @@ "rowLimit": 10000 }, "collapsed": true, + "finishTime": 1778479032125, "inputWidgets": {}, "nuid": "7814d185-5883-4f00-b350-0d5cab1da7f5", "showTitle": false, - "submitTime": 1777537485031, + "startTime": 1778479032122, + "submitTime": 1778478972075, "tableResultSettingsMap": {}, "title": "" } @@ -725,10 +737,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479036048, "inputWidgets": {}, "nuid": "b576e313-2815-4991-a92e-82fe68cbaed9", "showTitle": false, - "submitTime": 1777537485038, + "startTime": 1778479032127, + "submitTime": 1778478972079, "tableResultSettingsMap": {}, "title": "" } @@ -767,10 +781,12 @@ "rowLimit": 10000 }, "collapsed": true, + "finishTime": 1778479036056, "inputWidgets": {}, "nuid": "5fdbf78f-228d-4e26-94b8-94565feb2ddf", "showTitle": false, - "submitTime": 1777537485043, + "startTime": 1778479036052, + "submitTime": 1778478972087, "tableResultSettingsMap": {}, "title": "" } @@ -957,10 +973,12 @@ "rowLimit": 10000 }, "collapsed": true, + "finishTime": 1778479036062, "inputWidgets": {}, "nuid": "b1f69228-3a47-4a76-ab21-a10e52305a56", "showTitle": false, - "submitTime": 1777537485048, + "startTime": 1778479036059, + "submitTime": 1778478972095, "tableResultSettingsMap": {}, "title": "" } @@ -1079,10 +1097,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479043473, "inputWidgets": {}, "nuid": "2c5737c9-b8fe-4b8a-a4b6-f39be69af55c", "showTitle": false, - "submitTime": 1777537485052, + "startTime": 1778479036064, + "submitTime": 1778478972102, "tableResultSettingsMap": {}, "title": "" } @@ -1244,10 +1264,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479050432, "inputWidgets": {}, "nuid": "9b43d6a9-6fd4-4568-bc48-7d7cb7ffe266", "showTitle": false, - "submitTime": 1777537485057, + "startTime": 1778479043477, + "submitTime": 1778478972108, "tableResultSettingsMap": {}, "title": "" } @@ -1338,10 +1360,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479055876, "inputWidgets": {}, "nuid": "ebb41c4f-a6d7-4dbd-bdb1-304f0c5abae4", "showTitle": false, - "submitTime": 1777537485062, + "startTime": 1778479050436, + "submitTime": 1778478972114, "tableResultSettingsMap": {}, "title": "" } @@ -1449,10 +1473,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479060300, "inputWidgets": {}, "nuid": "25bd255c-597c-4bb0-9c7a-0577e28eefee", "showTitle": false, - "submitTime": 1777537485066, + "startTime": 1778479055880, + "submitTime": 1778478972119, "tableResultSettingsMap": {}, "title": "" } @@ -1560,10 +1586,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479098308, "inputWidgets": {}, "nuid": "d13a4ab2-9a37-4ac4-a886-3cf57cc9d41a", "showTitle": false, - "submitTime": 1777537485071, + "startTime": 1778479060304, + "submitTime": 1778478972125, "tableResultSettingsMap": {}, "title": "" } @@ -1710,10 +1738,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479117659, "inputWidgets": {}, "nuid": "8c861c10-773a-4449-a5dc-c0340e5ec97e", "showTitle": false, - "submitTime": 1777537485077, + "startTime": 1778479098312, + "submitTime": 1778478972131, "tableResultSettingsMap": {}, "title": "" } @@ -1735,10 +1765,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479124771, "inputWidgets": {}, "nuid": "e39d8c66-7469-46db-a2f4-79976266bec2", "showTitle": false, - "submitTime": 1777537485082, + "startTime": 1778479117663, + "submitTime": 1778478972137, "tableResultSettingsMap": {}, "title": "" } @@ -1800,10 +1832,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479127669, "inputWidgets": {}, "nuid": "bbe40a04-e787-4133-9901-5f331baf912a", "showTitle": false, - "submitTime": 1777537485086, + "startTime": 1778479124776, + "submitTime": 1778478972142, "tableResultSettingsMap": {}, "title": "" } @@ -1829,12 +1863,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, - "finishTime": 1777652323660, + "finishTime": 1778479127677, "inputWidgets": {}, "nuid": "f8d0befe-3de4-48a8-ac53-cdc19c897d0f", "showTitle": false, - "startTime": 1777652315675, - "submitTime": 1777652314433, + "startTime": 1778479127673, + "submitTime": 1778478972148, "tableResultSettingsMap": {}, "title": "" } @@ -2084,12 +2118,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, - "finishTime": 1777652451150, + "finishTime": 1778479133948, "inputWidgets": {}, "nuid": "9e6100db-d97c-41a6-8b30-4f7a774c1903", "showTitle": false, - "startTime": 1777652447065, - "submitTime": 1777652446859, + "startTime": 1778479127685, + "submitTime": 1778478972153, "tableResultSettingsMap": {}, "title": "" } @@ -2276,12 +2310,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, - "finishTime": 1777652456889, + "finishTime": 1778479145677, "inputWidgets": {}, "nuid": "0c0fe2ec-f80e-4872-85bf-fd5d058cc8b8", "showTitle": false, - "startTime": 1777652453844, - "submitTime": 1777652453744, + "startTime": 1778479133960, + "submitTime": 1778478972160, "tableResultSettingsMap": {}, "title": "" } @@ -2297,8 +2331,9 @@ "SELECT\n", "\n", " -- CORP_COD:汇总行(total_flag = Y)统一写 'TTL MKT',否则取企业编码\n", - " CASE WHEN total_flag = 'Y' THEN 'TTL MKT'\n", - " ELSE NVL(CORP_COD, '')\n", + " CASE WHEN TA = 'RX Total' and total_flag = 'Y' THEN ''\n", + " WHEN total_flag = 'Y' THEN 'TTL MKT'\n", + " ELSE NVL(CORP_COD, '未知')\n", " END AS CORP_COD,\n", "\n", " -- 时间维度:yyyymm 优先,为空则降级取 ytd\n", @@ -2320,8 +2355,8 @@ " NVL(KPI_name, '') AS KPI_name,\n", "\n", " -- 数值型 KPI:先转 DOUBLE 再 NVL,兼容源字段为字符串的情况\n", - " NVL(CAST(Kpi_val AS DOUBLE), '') AS Kpi_val,\n", - " NVL(CAST(Kpi_val_ly AS DOUBLE), '') AS Kpi_val_ly,\n", + " nvl(CAST(Kpi_val AS decimal(30,10)),0) AS Kpi_val,\n", + " nvl(CAST(Kpi_val_ly AS decimal(30,10)),0) AS Kpi_val_ly,\n", "\n", " -- 字符串型 KPI(销售额/销量,含同比)\n", " NVL(str_kpi_val, '') AS str_kpi_val,\n", @@ -2368,10 +2403,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479158042, "inputWidgets": {}, "nuid": "6b591466-5af8-40ef-a9b9-c4f137843f18", "showTitle": false, - "submitTime": 1777537485111, + "startTime": 1778479145698, + "submitTime": 1778478972175, "tableResultSettingsMap": {}, "title": "" } @@ -2479,10 +2516,12 @@ "byteLimit": 2048000, "rowLimit": 10000 }, + "finishTime": 1778479158640, "inputWidgets": {}, "nuid": "20f3c0a6-f626-4e64-bce4-7653087adb16", "showTitle": false, - "submitTime": 1777537485118, + "startTime": 1778479158046, + "submitTime": 1778478972181, "tableResultSettingsMap": {}, "title": "" } diff --git a/Retail/01 load_tmp_data.py b/Retail/01 load_tmp_data.py index 66938c0..73a6970 100644 --- a/Retail/01 load_tmp_data.py +++ b/Retail/01 load_tmp_data.py @@ -415,7 +415,13 @@ LEVEL_MARKET_RD = 'RD Market' # MAGIC zk_manu_des, # MAGIC zk_corp_des, # MAGIC zk_pack_des, -# MAGIC month, +# MAGIC -- niad的month聚合成季度的值 +# MAGIC concat(left(quarter,4), +# MAGIC case when right(quarter,2) = 'Q1' THEN '03' +# MAGIC when right(quarter,2) = 'Q2' THEN '06' +# MAGIC when right(quarter,2) = 'Q3' THEN '09' +# MAGIC when right(quarter,2) = 'Q4' THEN '12' END) +# MAGIC AS month, # MAGIC quarter, # MAGIC replace(price,',','' ), # MAGIC replace(sales_unit,',','' ), @@ -618,4 +624,201 @@ LEVEL_MARKET_RD = 'RD Market' # COMMAND ---------- +# MAGIC %md +# MAGIC ## STEP-2: calculate niad date + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC CREATE OR REPLACE TABLE tmp.tmp_dm_td_ext_retail_niad_month as +# MAGIC WITH ALL_RETIAL_DATA ( +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_nataional_niad +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_statin_xzk +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_nataional_oap +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_anti_asthma_copd +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_aagsa_ppi_oral +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_atomizer +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_nataional_rd +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_metoprolol_tartrat +# MAGIC union all +# MAGIC select +# MAGIC max( +# MAGIC nvl( +# MAGIC month, +# MAGIC CONCAT( +# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) +# MAGIC CASE +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 +# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 +# MAGIC END +# MAGIC ) +# MAGIC ) +# MAGIC ) as month, +# MAGIC 'NOTNIAD' as datatype +# MAGIC from +# MAGIC dwd.dwd_gnd_ext_retail_htn +# MAGIC ) +# MAGIC SELECT +# MAGIC MAX(t1.month) as NIAD_MONTH, +# MAGIC max(t2.month) OTHERS_MONTH +# MAGIC FROM +# MAGIC all_retial_data t1 +# MAGIC LEFT JOIN ( +# MAGIC SELECT +# MAGIC MAX(month) as month +# MAGIC FROM +# MAGIC all_retial_data +# MAGIC WHERE +# MAGIC datatype = 'NOTNIAD' +# MAGIC ) t2 +# MAGIC WHERE +# MAGIC t1.datatype = 'NIAD' + +# COMMAND ---------- + ############################################################END############################################################## diff --git a/Retail/04 map_to_dws_table.ipynb b/Retail/04 map_to_dws_table.ipynb index 0cdce40..cbc22a3 100644 --- a/Retail/04 map_to_dws_table.ipynb +++ b/Retail/04 map_to_dws_table.ipynb @@ -5,10 +5,16 @@ "execution_count": 0, "metadata": { "application/vnd.databricks.v1+cell": { - "cellMetadata": {}, + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "finishTime": 1778484351983, "inputWidgets": {}, "nuid": "4d16488f-0327-4ced-b23f-41f960a90d2f", "showTitle": false, + "startTime": 1778484351892, + "submitTime": 1778484351680, "tableResultSettingsMap": {}, "title": "" } @@ -29,12 +35,12 @@ "implicitDf": true, "rowLimit": 10000 }, - "finishTime": 1777430517044, + "finishTime": 1778484383881, "inputWidgets": {}, "nuid": "1168666b-255b-44a3-968b-4156c93dad53", "showTitle": false, - "startTime": 1777430506637, - "submitTime": 1777430498072, + "startTime": 1778484351988, + "submitTime": 1778484351685, "tableResultSettingsMap": { "0": { "dataGridStateBlob": "{\"version\":1,\"tableState\":{\"columnPinning\":{\"left\":[\"#row_number#\"],\"right\":[]},\"columnSizing\":{},\"columnVisibility\":{}},\"settings\":{\"columns\":{}},\"syncTimestamp\":1777430717962}", @@ -366,10 +372,16 @@ "execution_count": 0, "metadata": { "application/vnd.databricks.v1+cell": { - "cellMetadata": {}, + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "finishTime": 1778484383981, "inputWidgets": {}, "nuid": "efe5e7ee-82b5-46d9-85f7-650756dffbf8", "showTitle": false, + "startTime": 1778484383903, + "submitTime": 1778484351693, "tableResultSettingsMap": {}, "title": "" } diff --git a/Retail/11 map_to_overview_dm_table.py b/Retail/11 map_to_overview_dm_table.py index 6f7b991..e0a26f4 100644 --- a/Retail/11 map_to_overview_dm_table.py +++ b/Retail/11 map_to_overview_dm_table.py @@ -800,201 +800,4 @@ # COMMAND ---------- -# MAGIC %md -# MAGIC ## STEP-14: calculate niad date - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC CREATE OR REPLACE TABLE tmp.tmp_dm_td_ext_retail_niad_month as -# MAGIC WITH ALL_RETIAL_DATA ( -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_nataional_niad -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_statin_xzk -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_nataional_oap -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_anti_asthma_copd -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_aagsa_ppi_oral -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_atomizer -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_nataional_rd -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_metoprolol_tartrat -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_htn -# MAGIC ) -# MAGIC SELECT -# MAGIC MAX(t1.month) as NIAD_MONTH, -# MAGIC max(t2.month) OTHERS_MONTH -# MAGIC FROM -# MAGIC all_retial_data t1 -# MAGIC LEFT JOIN ( -# MAGIC SELECT -# MAGIC MAX(month) as month -# MAGIC FROM -# MAGIC all_retial_data -# MAGIC WHERE -# MAGIC datatype = 'NOTNIAD' -# MAGIC ) t2 -# MAGIC WHERE -# MAGIC t1.datatype = 'NIAD' - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file +############################################################END################################################################ diff --git a/Retail/13 DM_TF_EXT_RETAIL_SALES.sql b/Retail/13 DM_TF_EXT_RETAIL_SALES.sql index 2ba1500..144a2c1 100644 --- a/Retail/13 DM_TF_EXT_RETAIL_SALES.sql +++ b/Retail/13 DM_TF_EXT_RETAIL_SALES.sql @@ -211,12 +211,30 @@ FROM -- 创建日期:2026-04-30 -- 功能: 月份NIAD不进行季度汇总, 新建DM.DM_TF_EXT_RETAIL_NIAD_SALES表做关联 -- **************************************************** --- INSERT OVERWRITE TABLE DM.DM_TF_EXT_RETAIL_NIAD_SALES +WITH NIAD_DWD_TABLE AS ( + select + a.month, + b.iqvia_pack_code as pack_code, + 'ROC' AS zk_region, + a.sales_unit, + a.sales_value, + a.counting_unit + from + dwd.dwd_gnd_ext_retail_nataional_niad a + left join dwd.dwd_gnd_ext_retail_pack_property b + on case + when length(zk_product_id) < 7 then right(concat('0000000', zk_product_id), 7) + else zk_product_id + end = b.product_id + where + a.zk_region = '全国' +) +INSERT OVERWRITE TABLE DM.DM_TF_EXT_RETAIL_NIAD_SALES SELECT cur.month AS YYYYMM, cur.pack_code AS PACK_CODE, '' AS CORP_CODE, - cur.zk_regin AS AUDIT_CODE, + cur.zk_region AS AUDIT_CODE, '' AS PLATFORM_TYPE, '' AS STORE_NAME, '' AS STORE_TYPE, @@ -244,8 +262,8 @@ SELECT '' AS PRESCRIPTION_SOURCE, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM (select * from tmp.tmp_retail_pack_rawdata where level_market = 'NIAD') cur -LEFT JOIN (select * from tmp.tmp_retail_pack_rawdata where level_market = 'NIAD') ly +FROM (select * from NIAD_DWD_TABLE ) cur +LEFT JOIN (select * from NIAD_DWD_TABLE ) ly ON CAST(CAST(ly.month AS INT) + 100 AS STRING) = cur.month AND ly.pack_code = cur.pack_code - AND ly.zk_regin = cur.zk_regin + AND ly.zk_region = cur.zk_region diff --git a/UNIONALL/DM_TF_EXT_RETAIL_MARKET_SALES_NIAD.sql b/UNIONALL/DM_TF_EXT_RETAIL_MARKET_SALES_NIAD.sql new file mode 100644 index 0000000..fcf09a1 --- /dev/null +++ b/UNIONALL/DM_TF_EXT_RETAIL_MARKET_SALES_NIAD.sql @@ -0,0 +1,233 @@ +-- Databricks notebook source +-- CREATE OR REPLACE TABLE DM.DM_TF_EXT_RETAIL_MARKET_SALES ( +-- MARKET STRING, +-- KEY_COMPETITOR STRING, +-- CLASS STRING, +-- YYYYMM STRING, +-- PACK_COD STRING, +-- CORP_COD STRING, +-- AUDIT_COD STRING, +-- PLATFORM_TYPE STRING, +-- STORE_NAME STRING, +-- STORE_TYPE STRING, +-- REGION_TYPE STRING, +-- DATA_SOURCE STRING, +-- PACK_FLAG STRING, +-- PROD_FLAG STRING, +-- DTP_FLAG STRING, +-- CMPS_FLAG STRING, +-- NEW_CODE STRING COMMENT '主数据关联CODE', +-- INST_CODE STRING COMMENT '内部机构编码', +-- AIA_HP_FLAG STRING, +-- DEPT_NAME STRING COMMENT '科室名称', +-- H_LEVEL STRING, +-- REIMBURSE STRING COMMENT '报销情况', +-- REIMBURSE_TYPE STRING COMMENT '报销类型', +-- PRESCRIPTION_TYPE STRING COMMENT '处方来源', +-- PRESCRIPTION DECIMAL(35,10), +-- PRESCRIPTION_LY DECIMAL(35,10), +-- VA STRING, +-- UT STRING, +-- CU STRING, +-- PT STRING, +-- SALES_UNIT_CAL DECIMAL(35,6), +-- SALES_UNIT_CAL_LY DECIMAL(35,6), +-- SALES_VALUE_CAL DECIMAL(35,6), +-- SALES_VALUE_CAL_LY DECIMAL(35,6), +-- CONUTING_UNIT DECIMAL(35,6), +-- CONUTING_UNIT_LY DECIMAL(35,6), +-- PDOT DECIMAL(35,6), +-- PDOT_LY DECIMAL(35,6), +-- ETL_INSERT_DT TIMESTAMP, +-- ETL_UPDATE_DT TIMESTAMP +-- ) +-- USING delta +-- PARTITIONED BY (DATA_SOURCE) +-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_market_sales'; +-- -- 上面是生产环境location,下面是测试环境location +-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_market_sales'; + + +-- COMMAND ---------- + +INSERT OVERWRITE TABLE + DM.DM_TF_EXT_RETAIL_MARKET_SALES( + MARKET, + KEY_COMPETITOR, + CLASS, + YYYYMM, + PACK_COD, + CORP_COD, + AUDIT_COD, + PLATFORM_TYPE, + STORE_NAME, + STORE_TYPE, + REGION_TYPE, + DATA_SOURCE, + PACK_FLAG, + PROD_FLAG, + DTP_FLAG, + CMPS_FLAG, + NEW_CODE, + INST_CODE, + AIA_HP_FLAG, + DEPT_NAME, + H_LEVEL, + REIMBURSE, + REIMBURSE_TYPE, + PRESCRIPTION_TYPE, + PRESCRIPTION, + PRESCRIPTION_LY, + VA, + UT, + CU, + PT, + SALES_UNIT_CAL, + SALES_UNIT_CAL_LY, + SALES_VALUE_CAL, + SALES_VALUE_CAL_LY, + CONUTING_UNIT, + CONUTING_UNIT_LY, + PDOT, + PDOT_LY, + ETL_INSERT_DT, + ETL_UPDATE_DT + ) +WITH + t1_filtered AS ( + SELECT + * + FROM + DM.DM_TF_EXT_RETAIL_NIAD_SALES + ), + mapping_cleaned AS ( + SELECT + * + FROM + ( + SELECT + PACK_CODE, + 'Retail(Quarterly)' DATASOURCE, + MARKET, + KEY_COMPETITOR, + CLASS, + MARKET_RATIO, + Value_brand_Ratio, + Unit_brand_Ratio, + CountingUnit_brand_Ratio, + PDOT_brand_Ratio, + GREATEST ( + starttime, + Value_brand_Ratio_start, + Unit_brand_start, + CountingUnit_brand_start, + PDOT_brand_start + ) AS eff_start, + LEAST ( + endtime, + Value_brand_Ratio_end, + Unit_brand_end, + CountingUnit_brand_end, + PDOT_brand_end + ) AS eff_end + FROM + DM.dm_td_ext_retail_market_pack_mapping + ) tmp + WHERE + eff_start <= eff_end -- 在外层子查询中过滤 + ) , + joined AS ( + SELECT + /*+ BROADCAST(t2, t3) */ + t1.*, + -- 当年 ratio + t2.MARKET, + t2.KEY_COMPETITOR, + t2.CLASS, + t2.MARKET_RATIO AS cy_market_ratio, + t2.Value_brand_Ratio AS cy_value_ratio, + t2.Unit_brand_Ratio AS cy_unit_ratio, + t2.CountingUnit_brand_Ratio AS cy_cu_ratio, + t2.PDOT_brand_Ratio AS cy_pdot_ratio, + -- 去年 ratio + t3.MARKET_RATIO AS ly_market_ratio, + t3.Value_brand_Ratio AS ly_value_ratio, + t3.Unit_brand_Ratio AS ly_unit_ratio, + t3.CountingUnit_brand_Ratio AS ly_cu_ratio, + t3.PDOT_brand_Ratio AS ly_pdot_ratio + FROM + t1_filtered t1 + LEFT JOIN mapping_cleaned t2 ON t1.PACK_CODE = t2.PACK_CODE + AND t1.DATA_SOURCE = t2.DATASOURCE + AND t1.YYYYMM >= t2.eff_start + AND t1.YYYYMM <= t2.eff_end + LEFT JOIN mapping_cleaned t3 ON t1.PACK_CODE = t3.PACK_CODE + AND t1.DATA_SOURCE = t3.DATASOURCE + AND (t1.YYYYMM - 100) >= t3.eff_start + AND (t1.YYYYMM - 100) <= t3.eff_end + AND t2.MARKET = t3.MARKET -- 保持原逻辑 + ) +SELECT + NVL(MARKET, 'ALL Market') AS MARKET, + NVL(KEY_COMPETITOR, 'OTHERS') AS KEY_COMPETITOR, + CASE + WHEN trim(lower(CLASS)) = 'others' THEN 'OTHERS' + WHEN CLASS IS NULL THEN 'OTHERS' + ELSE CLASS + END AS CLASS, + YYYYMM, + PACK_CODE, + CORP_CODE, + AUDIT_CODE, + PLATFORM_TYPE, + STORE_NAME, + STORE_TYPE, + REGION_TYPE, + DATA_SOURCE, + PACK_FLAG, + PROD_FLAG, + DTP_FLAG, + CMPS_FLAG, + NEW_CODE, + INST_CODE, + NULL AS AIA_HP_FLAG, + DEPT_NAME, + H_LEVEL, + REIMBURSE, + REIMBURSE_TYPE, + PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE, + CAST(PRESCRIPTION AS DECIMAL(35, 6)) AS PRESCRIPTIONAS, + CAST(PRESCRIPTION_LY AS DECIMAL(35, 6)) AS PRESCRIPTION_LY, + -- 预计算公用因子,避免重复计算 + NVL(NVL(cy_market_ratio, 1) * cy_value_ratio, 1) AS VA, + NVL(NVL(cy_market_ratio, 1) * cy_unit_ratio, 1) AS UT, + NVL(NVL(cy_market_ratio, 1) * cy_cu_ratio, 1) AS CU, + NVL(NVL(cy_market_ratio, 1) * cy_pdot_ratio, 1) AS PT, + CAST( + SALES_UNIT_CAL * NVL(cy_unit_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) + ) AS SALES_UNIT_CAL, + CAST( + SALES_UNIT_CAL_LY * NVL(ly_unit_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) + ) AS SALES_UNIT_CAL_LY, + CAST( + SALES_VALUE_CAL * NVL(cy_value_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) + ) AS SALES_VALUE_CAL, + CAST( + SALES_VALUE_CAL_LY * NVL(ly_value_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) + ) AS SALES_VALUE_CAL_LY, + CAST( + CONUTING_UNIT * NVL(cy_cu_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) + ) AS CONUTING_UNIT, + CAST( + CONUTING_UNIT_LY * NVL(ly_cu_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) + ) AS CONUTING_UNIT_LY, + CAST( + CONUTING_UNIT * NVL(cy_pdot_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) + ) AS PDOT, + CAST( + CONUTING_UNIT_LY * NVL(ly_pdot_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) + ) AS PDOT_LY, + FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, + FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT +FROM + joined; diff --git a/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql b/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql index ac837d5..565ef26 100644 --- a/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql +++ b/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql @@ -223,6 +223,7 @@ -- COMMAND ---------- +-- DBTITLE 1,market_sales INSERT OVERWRITE TABLE DM.DM_TF_EXT_UNIONALL_MARKET_SALES WITH @@ -522,146 +523,3 @@ SELECT FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT FROM joined; - --- COMMAND ---------- - -INSERT into TABLE - DM.DM_TF_EXT_UNIONALL_MARKET_SALES -WITH - t1_filtered AS ( - SELECT - * - FROM - DM.DM_TF_EXT_RETAIL_NIAD_SALES - ), - mapping_cleaned AS ( - SELECT - * - FROM - ( - SELECT - PACK_CODE, - DATASOURCE, - MARKET, - KEY_COMPETITOR, - CLASS, - MARKET_RATIO, - Value_brand_Ratio, - Unit_brand_Ratio, - CountingUnit_brand_Ratio, - PDOT_brand_Ratio, - GREATEST ( - starttime, - Value_brand_Ratio_start, - Unit_brand_start, - CountingUnit_brand_start, - PDOT_brand_start - ) AS eff_start, - LEAST ( - endtime, - Value_brand_Ratio_end, - Unit_brand_end, - CountingUnit_brand_end, - PDOT_brand_end - ) AS eff_end - FROM - DM.dm_td_ext_unionall_market_pack_mapping - ) tmp - WHERE - eff_start <= eff_end -- 在外层子查询中过滤 - ) , - joined AS ( - SELECT - /*+ BROADCAST(t2, t3) */ - t1.*, - -- 当年 ratio - t2.MARKET, - t2.KEY_COMPETITOR, - t2.CLASS, - t2.MARKET_RATIO AS cy_market_ratio, - t2.Value_brand_Ratio AS cy_value_ratio, - t2.Unit_brand_Ratio AS cy_unit_ratio, - t2.CountingUnit_brand_Ratio AS cy_cu_ratio, - t2.PDOT_brand_Ratio AS cy_pdot_ratio, - -- 去年 ratio - t3.MARKET_RATIO AS ly_market_ratio, - t3.Value_brand_Ratio AS ly_value_ratio, - t3.Unit_brand_Ratio AS ly_unit_ratio, - t3.CountingUnit_brand_Ratio AS ly_cu_ratio, - t3.PDOT_brand_Ratio AS ly_pdot_ratio - FROM - t1_filtered t1 - LEFT JOIN mapping_cleaned t2 ON t1.PACK_CODE = t2.PACK_CODE - AND t1.DATA_SOURCE = t2.DATASOURCE - AND t1.YYYYMM >= t2.eff_start - AND t1.YYYYMM <= t2.eff_end - LEFT JOIN mapping_cleaned t3 ON t1.PACK_CODE = t3.PACK_CODE - AND t1.DATA_SOURCE = t3.DATASOURCE - AND (t1.YYYYMM - 100) >= t3.eff_start - AND (t1.YYYYMM - 100) <= t3.eff_end - AND t2.MARKET = t3.MARKET -- 保持原逻辑 - ) -SELECT - NVL(MARKET, 'ALL Market') AS MARKET, - NVL(KEY_COMPETITOR, 'OTHERS') AS KEY_COMPETITOR, - CASE - WHEN trim(lower(CLASS)) = 'others' THEN 'OTHERS' - WHEN CLASS IS NULL THEN 'OTHERS' - ELSE CLASS - END AS CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - NULL AS AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - -- 预计算公用因子,避免重复计算 - NVL(NVL(cy_market_ratio, 1) * cy_value_ratio, 1) AS VA, - NVL(NVL(cy_market_ratio, 1) * cy_unit_ratio, 1) AS UT, - NVL(NVL(cy_market_ratio, 1) * cy_cu_ratio, 1) AS CU, - NVL(NVL(cy_market_ratio, 1) * cy_pdot_ratio, 1) AS PT, - CAST( - SALES_UNIT_CAL * NVL(cy_unit_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_UNIT_CAL, - CAST( - SALES_UNIT_CAL_LY * NVL(ly_unit_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_UNIT_CAL_LY, - CAST( - SALES_VALUE_CAL * NVL(cy_value_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_VALUE_CAL, - CAST( - SALES_VALUE_CAL_LY * NVL(ly_value_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_VALUE_CAL_LY, - CAST( - CONUTING_UNIT * NVL(cy_cu_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS CONUTING_UNIT, - CAST( - CONUTING_UNIT_LY * NVL(ly_cu_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS CONUTING_UNIT_LY, - CAST( - CONUTING_UNIT * NVL(cy_pdot_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS PDOT, - CAST( - CONUTING_UNIT_LY * NVL(ly_pdot_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - joined; diff --git a/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql b/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql index ef751a4..26936e1 100644 --- a/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql +++ b/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql @@ -80,13 +80,15 @@ SELECT T0.STORE_TYPE, T0.REGION_TYPE, T0.DATA_SOURCE, - CASE WHEN P.MARKET IS NOT NULL THEN 1 - WHEN T0.PACK_FLAG = 0 THEN 0 ELSE 2 END PACK_FLAG, - CASE WHEN P.MARKET IS NOT NULL THEN 1 + CASE WHEN P.MARKET IS NOT NULL AND T0.PACK_FLAG = 1 THEN 1 + WHEN P.MARKET IS NOT NULL THEN 2 + ELSE 0 END PACK_FLAG, + CASE WHEN P.MARKET IS NOT NULL AND T0.PROD_FLAG = 1 THEN 1 + WHEN P.MARKET IS NOT NULL THEN 2 WHEN T0.MARKET = 'Metoprolol Succinate Market' AND PACK.PROD_DES = 'BETALOC ZOK' THEN 1 WHEN T0.MARKET = 'Atorvastatin Market' AND PACK.PROD_DES = 'LIPITOR' THEN 1 WHEN T0.MARKET = 'AZITHROMYCIN Market' AND PACK.PROD_DES = 'ZITHROMAX' THEN 1 - WHEN T0.PROD_FLAG = 0 THEN 0 ELSE 2 END PROD_FLAG, + ELSE 0 END PROD_FLAG, T0.DTP_FLAG, CASE WHEN P.MARKET IS NOT NULL THEN 1 WHEN T0.MARKET = 'Metoprolol Succinate Market' AND PACK.PROD_DES = 'BETALOC ZOK' THEN 1 @@ -137,58 +139,6 @@ WHERE -- COMMAND ---------- -CREATE OR REPLACE TEMPORARY VIEW RETAIL_EXTERNAL_SALES_ALL AS -SELECT - T0.MARKET, - T0.KEY_COMPETITOR, - T0.CLASS, - T0.YYYYMM, - T0.PACK_COD, - T0.CORP_COD, - T0.AUDIT_COD, - T0.PLATFORM_TYPE, - T0.STORE_NAME, - T0.STORE_TYPE, - T0.REGION_TYPE, - T0.DATA_SOURCE, - CASE WHEN T1.PACK_COD IS NOT NULL THEN 1 ELSE T0.PACK_FLAG END PACK_FLAG, - CASE WHEN T2.PROD_COD IS NOT NULL THEN 1 ELSE T0.PROD_FLAG END PROD_FLAG, - T0.DTP_FLAG, - CASE WHEN T3.CMPS_COD IS NOT NULL THEN 1 ELSE T0.CMPS_FLAG END CMPS_FLAG, - T0.NEW_CODE, - T0.INST_CODE, - T0.AIA_HP_FLAG, - T0.DEPT_NAME, - T0.H_LEVEL, - T0.REIMBURSE, - T0.REIMBURSE_TYPE, - T0.PRESCRIPTION_TYPE, - T0.VA, - T0.UT, - T0.CU, - T0.PT, - T0.SALES_UNIT_CAL, - T0.SALES_UNIT_CAL_LY, - T0.SALES_VALUE_CAL, - T0.SALES_VALUE_CAL_LY, - T0.CONUTING_UNIT, - T0.CONUTING_UNIT_LY, - T0.PDOT, - T0.PDOT_LY, - T0.PRESCRIPTION, - T0.PRESCRIPTION_LY, - T0.MERGED_DATA_DTP_OTHERS -FROM - RETAIL_EXTERNAL_SALES AS T0 -LEFT JOIN (SELECT DISTINCT PACK_COD FROM RETAIL_EXTERNAL_SALES WHERE PACK_FLAG = 1) T1 - ON T0.PACK_COD = T1.PACK_COD -LEFT JOIN (SELECT DISTINCT PROD_COD FROM RETAIL_EXTERNAL_SALES WHERE PROD_FLAG = 1) T2 - ON T0.PROD_COD = T2.PROD_COD -LEFT JOIN (SELECT DISTINCT CMPS_COD FROM RETAIL_EXTERNAL_SALES WHERE CMPS_FLAG = 1) T3 - ON T0.CMPS_COD = T3.CMPS_COD - --- COMMAND ---------- - CREATE OR REPLACE TEMPORARY VIEW ALL_EXTERNAL_SALES AS --DTP SELECT @@ -287,12 +237,13 @@ SELECT 1 MERGED_DATA_DTP_OTHERS FROM DM.DM_TF_EXT_UNIONALL_MARKET_SALES AS T0 - LEFT JOIN ( + INNER JOIN ( SELECT OTHERS_MONTH FROM tmp.tmp_dm_td_ext_ec_niad_month ) T1 --EC取非niad先来数据部分 + ON T0.YYYYMM <= T1.others_month WHERE T0.DATA_SOURCE = 'EC(Monthly)' AND SUBSTR(T0.YYYYMM, 5, 2) IN ('03', '06', '09', '12') @@ -339,7 +290,7 @@ SELECT T0.PRESCRIPTION_LY, T0.MERGED_DATA_DTP_OTHERS FROM - RETAIL_EXTERNAL_SALES_ALL AS T0 + RETAIL_EXTERNAL_SALES AS T0 --OTHERS DATA SOURCE UNION ALL SELECT @@ -389,14 +340,6 @@ WHERE -- COMMAND ---------- - - --- COMMAND ---------- - -select distinct PACK_FLAG,PROD_FLAG from DM.DM_TF_EXT_UNIONALL_MARKET_SALES where DATA_SOURCE = 'Retail(Quarterly)' - --- COMMAND ---------- - create or replace table tmp.tmp_tf_ext_aia_target_inst -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/TMP/tmp_tf_ext_aia_target_inst'; -- 上面是生产环境location,下面是测试环境location @@ -535,7 +478,7 @@ FROM -- COMMAND ---------- --- delete from dm.DM_TF_EXT_UNIONALL_SALES_MAPPING where DATA_SOURCE IN ('Retail(Quarterly)', 'EC(Monthly)') +delete from dm.DM_TF_EXT_UNIONALL_SALES_MAPPING where DATA_SOURCE IN ('Retail(Quarterly)', 'EC(Monthly)') -- COMMAND ---------- diff --git a/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql b/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql index ea9a913..7707699 100644 --- a/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql +++ b/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql @@ -209,7 +209,7 @@ SELECT /*+ BROADCAST(m) */ CAST(round(kpi.DIGITAL_SPREAD_RATE,2) AS string)||'%' AS DIGITAL_SPREAD_RATE, CAST(round(kpi.WEIGHTED_SPREAD_RATE,2) AS string)||'%' AS WEIGHTED_SPREAD_RATE -FROM DM.DM_TF_EXT_UNIONALL_MARKET_SALES t +FROM DM.DM_TF_EXT_RETAIL_MARKET_SALES t LEFT SEMI JOIN niad_pack_cods m ON t.PACK_COD = m.PACK_COD LEFT JOIN kpi_pivot kpi ON kpi.pack_code = t.PACK_COD