宏观大数据-模型部署说明 V1.3.1
模型部署
2、 准备工作
2.1 获取最新版本
2.1.1 查看钉钉群公告
2.1.2 确认最新版本
【截至2021-10-13最新版本为:模型部署文档\V1.3.1-20210924版本】,所需资源列表如下
-
Python环境包:
模型部署文档\Python环境包\python379.zip
-
个性化包:
模型部署文档\个性化包\mysql-connector-java-5.1.39-bin.jar 模型部署文档\个性化包\py4j-0.10.4-src.zip
-
Python模型【普通模型和Spark改造模型代码已合并】
模型部署文档\V1.3.1-20210924版本\hsp-hgjc-model_20210924.zip
2.2 配置修改
2.2.1 配置文件修改
配置文件修改【模型部署文档\V1.3.1-20210924版本\hsp-hgjc-model_20210924\app\config\settings.ini】
-
宏观决策业务库—mysql:
[mysql_db] host = host地址 user = 用户名 pwd = 密码 dbname = 数据库名 port = 3306 dbschema = 数据库名 driver=com.mysql.jdbc.Driver
-
宏观决策业务库—pg:
[gp_db] host=host地址 port=5432 user=用户名 pwd=密码 dbname=数据库名 dbschema=数据库模式
-
集市层数据库—hive
[hive_db] host=host地址 port=21066 user=用户名 pwd=密码 dbname=数据库名 dbschema=数据库名 # 是否启用kerberos认证,如果是kerberos 则填写: kerberos use_auth=kerberos principal=hive/hadoop.hadoop.com@HADOOP.COM keytab_file=/pingan/tool/pingan_1633440279428_keytab/user.keytab
-
spark_set:
spark submit 命令以及是否使用,具体见使用见配置文件中的备注及下文部署时的命令介绍;推荐【以文件夹形式提交命令】
# 如果是不需要执行spark_submit命令(如:阿里云),则use_spark_submit为False,其他的填入True use_spark_submit=True # 如下两种方式只能使用其中一个,不需要spark_submit的,如阿里云,随便放开一个就行 # 以文件夹形式提交命令 spark_submit= # 以zip方式提交命令 # spark_submit= # 目前支持odps,hive,阿里云填写odps spark_platform=hive
-
tab_space_schema:
兼容老的表结构,部分会使用到运行监测空间的表,如果所有表都放宏观决策空间,此时这个配置可以都配置这一个宏观决策空间的模式;例:mds_prd为集市层数据库名
[tab_space_schema] # 宏观决策集市空间 schema=mds_prd # 运行监测集市空间 schema_yx=mds_prd
-
tab_space_set:设置非 Spark 模型的表所在数据库;【以产品下发为准,暂时不用修改】,注意修改表的前缀
# 表空间设置:表=数据库类型 [tab_space_set] # ==============================================中长期模型====================================================== modl_para_pop=gp modl_para_insu_clct=gp modl_para_insu_pay=gp econ_scen_info_d=mysql modl_sbj_para_cfg_d=mysql modl_para_dierat=mysql modl_para_fee=mysql modl_b_inpt_fee_d=mysql modl_b_inpt_clct_d=mysql modl_a_inpt_fee_d=mysql modl_a_inpt_clct_d=mysql modl_inpt_retr_adjm_d=mysql modl_inpt_fort_pop_d=mysql modl_a_para_rat_clct=mysql modl_outp=mysql ac_simu_scen_devi_poolarea_d=mysql econ_fort_d=mysql econ_fort_sum_d=mysql econ_eld_pop_tre_d=mysql econ_eld_pop_tre_sum_d=mysql econ_tre_d=mysql econ_tre_sum_d=mysql env_incexpd_sum_d=mysql env_pay_smlt_rslt_d=mysql env_growrat_sum_d=mysql mid_long_modl_oupt_rslt_d=mysql econ_para_d=mysql # ==============================================药品目录模型====================================================== sco_params_d=mysql drug_info_sys_in_d=mysql drug_user_input_d=mysql drug_info_for_test_d=mysql fund_info_d=gp drug_cptn_mkt_share_cnfm_d=gp fund_variation_result_d=mysql drug_variation_result_d=mysql # ==============================================药品目录外模型====================================================== pharm_catalog_info_prepare=mysql pharm_model_params=mysql # ==============================================药品招采模型====================================================== ac_drug_bidprcu_model_para_d=mysql ac_drug_use_info_d=mysql ac_drug_hosp_user_info_d=mysql ac_fund_info_d=mysql ac_drug_use_chg_rslt_d=mysql ac_fund_fee_chg_rslt_d=mysql #==============================================政策模拟====================================================== ac_treatment_policy_analysis_d=mysql # ==============================================医疗机构费用=================================================== ##模型输入 fct_agg_modl_fixmedins_sum_kpi_mi=hive FCT_AGG_MODL_FIXMEDINS_DETL_SUM_KPI_MI=hive FCT_AGG_FIXMEDINS_DETL_PSNCNT_MI=hive FCT_AGG_FIXMEDINS_STD_PSNCNT_MI=hive hospital_type=hive special_type=hive ##模型输出 medins_modl_output_d=hive # ==============================================医疗价格服务======================================================
-
tab_spark_space_set:设置 Spark 所在表的空间模式、所在数据库信息;【以产品下发为准,暂时不用修改】
-
注意修改表的前缀【dm_yxjc,dm_hgjc为对应的mds_prd】
[tab_spark_space_set] fee_table=mds.fct_idp_settled_fee_info_detl_di fee_table_db=hive dict_table=dm_yxjc.dim_idp_data_dic_map dict_table_db=hive ;setl_table=dm_yxjc.fct_idp_setl_info_detl_d ;setl_table_db=hive # 模型结果转换表 mp_scen_ana_d=mp_scen_diff_type_ana_d mp_scen_ana_d_db=mysql model_detl=mp_scen_detl_info_d model_detl_db=mysql model_econ=econ_scen_info_d model_econ_db=mysql dict=hgjc.dim_cfg_info_b dict_db=mysql #模型输出结果 fee_info_agg=modl_fee_adjm_rslt_d fee_info_agg_db=mysql item_fee_info_agg=modl_med_servitem_fee_d item_fee_info_agg_db=mysql # 中间表,无需表结构 temp_table=temp temp_table_db=mysql # 中间表,无需表结构 temp_table2=temp2 temp_table2_db=mysql #政策模拟 # 中间表,无需表结构 mid_idp_setl_info_detl=dm_hgjc.mid_idp_setl_info_detl mid_idp_setl_info_detl_db=hive res_idp_setl_info_detl_d=res_idp_setl_info_detl_d res_idp_setl_info_detl_d_db=mysql # 中间表,无需表结构 pol_hn_pol_trt_model_d_dcl=pol_hn_pol_trt_model_d_dcl pol_hn_pol_trt_model_d_dcl_db=mysql fct_idp_setl_info_detl_d=dm_hgjc.modl_setl_info_detl_d fct_idp_setl_info_detl_d_db=hive # 中间表,无需表结构 origin_data=origin_data origin_data_db=hive # 中间表,无需表结构 pol_hn_pol_trt_model_d_init=fct_trt_pol_yi_init pol_hn_pol_trt_model_d_init_db=hive # 中间表,无需表结构 pol_hn_pol_trt_model_d_dedc=fct_trt_pol_yi_dedc pol_hn_pol_trt_model_d_dedc_db=hive # 中间表,无需表结构 pol_hn_pol_trt_model_d_reim_prop=fct_trt_pol_yi_reim_prop pol_hn_pol_trt_model_d_reim_prop_db=hive # 中间表,无需表结构 pol_hn_pol_trt_model_d_pol=fct_trt_pol_yi_pol pol_hn_pol_trt_model_d_pol_db=hive pol_hn_pol_trt_model_d=pol_hn_pol_trt_model_d pol_hn_pol_trt_model_d_db=mysql mid_idp_setl_info_detl_p=dm_hgjc.mid_idp_setl_info_detl_p mid_idp_setl_info_detl_p_db=hive # 中间表,无需表结构 saving_sim_result_step1=saving_sim_result_step1 saving_sim_result_step1_db=hive mid_idp_setl_info_detl_f=dm_hgjc.mid_idp_setl_info_detl_f mid_idp_setl_info_detl_f_db=hive mid_idp_setl_info_detl_d=dm_hgjc.mid_idp_setl_info_detl_d mid_idp_setl_info_detl_d_db=hive ac_treatment_policy_analysis_d=dm_hgjc.ac_treatment_policy_analysis_d ac_treatment_policy_analysis_d_db=hive
2.2.2 配置模型输出
文件功能说明:针对中长期模型的模型输出表 modl_outp 到应用可直接使用的结果表的数据转换逻辑,此部分为 sql 执行,如有本地不支持 mysql,语法需要自行修改。
2.3 准备模型服务器
2.3.1 服务器配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJ5h0WgR-1646116334386)(华为-宏观大数据-模型部署说明 V1.3.1.assets/image-20211013172422733.png)]
2.3.2 服务器配置检查
#查看内存:
cat /proc/meminfo | grep MemTotal
#查看CPU核数:
cat /proc/cpuinfo | grep "cpu cores" | uniq
2.3.3 MRS客户端安装
2.3.3.1 获取软件包
- 登录FusionInsight Manager
https://10.53.153.211:28443/web/ | pingan/Huawei12#
%<br />pingan1/Huawei12#
% pingan1-pingan7 密码都是Huawei12#$5 |
---|---|
2.3.3.2 安装客户端
10.53.154.154 | root/admin@123 |
---|---|
-
通过xftp上传安装包到服务器【路径:/opt/client】
-
安装包解压缩
#进入安装包所在目录,例如“/opt/client”。执行如下命令解压安装包到本地目录。 tar -xvf FusionInsight_Cluster_1_Services_Client.tar #执行sha256sum命令校验解压得到的文件,检查回显信息与sha256文件里面的内容是否一致,例如: sha256sum -c FusionInsight_Cluster_1_Services_ClientConfig.tar.sha256 #结果:FusionInsight_Cluster_1_Services_Client.tar: OK tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar #进入客户端解压目录 cd /opt/client/FusionInsight_Cluster_1_Services_ClientConfig #执行cat realm.ini >> /etc/hosts,将域名映射关系导入到hosts文件中 cat realm.ini >> /etc/hosts #进入安装包所在目录,执行如下命令安装客户端到指定目录(绝对路径),例如安装到“/opt/hadoopclient”目录 ./install.sh /opt/hadoopclient #成功的结果:Components client installation is complete.
遇到的问题,缺少NTP
安装NTP,失败
可修改【install.sh】将NTP检查代码注释掉
2.3.3.3 验证客户端
#执行cd /opt/hadoopclient命令进入客户端安装目录。
cd /opt/hadoopclient
#执行source bigdata_env命令配置客户端环境变量。
source bigdata_env
#如果集群为安全模式,执行以下命令,设置kinit认证,输入客户端用户登录密码;普通模式集群无需执行用户认证。集群账号为pingan
kinit pingan
Password for pingan@HADOOP.COM: #输入admin用户登录密码(与登录集群的用户密码一致)
集群重装后,之前安装的客户端将不再可用,需要重新部署客户端。
#使用rm -rf命令删除所有客户端程序所在文件夹内的文件(例如删除“/opt/hadoopclient”文件夹)。
rm -rf /opt/hadoopclient
#重新安装客户端
2.3.3.4 登录hive库
#执行以下命令,切换到客户端安装目录
cd /opt/hadoopclient
#执行source bigdata_env命令配置客户端环境变量。
source bigdata_env
#如果集群为安全模式,执行以下命令,设置kinit认证,输入客户端用户登录密码;普通模式集群无需执行用户认证。集群账号为pingan
kinit pingan
Password for pingan@HADOOP.COM: #输入admin用户登录密码(与登录集群的用户密码一致)
#根据集群认证模式,完成Hive客户端登录。
beeline
2.4 普通模型部署
2.4.1 Pyhton 安装
#通过xftp上传python379.zip
上传路径:/pingan/tool/python379.zip
#进入/pingan/tool/
cd /pingan/tool/
#解压 python379.zip:
unzip python379.zip
#验证python环境,查看版本
/pingan/tool/python3.7.9/bin/python3 -V
#结果:Python 3.7.9
2.4.2 模型安装
2.4.2.1 前提条件检查
-
应用功能检查
检查模型对应的菜单是否可以正常查询、保存、修改;如果有问题,则需要修复应用程
序内容,才内容完成后,才能进行模型调试。
模型-菜单对应关系见文件《模型场景依赖整理.xlsx》
-
依赖数据检查
检查模型输入表、依赖表是否有、是否为本省份数据,如果不是,则需要修改这些数据,
部分数据可以从初始化工具中进行修复后,重新初始化。
检查输入表时,要注意对应的时间维度(年份)以及其他维度(如:统筹区、医疗机构
等级)等维度是否能匹配上。
模型-输入、依赖表对应关系见文件《模型场景依赖整理.xlsx》
2.4.2.2 上传模型
注:如下操作的用户为有 hive 权限的用户,所有文件及程序都要放入此用户有足够权限的目录下
#通过xftp上传最新模型hsp-hgjc-model到【/pingan/model】
/pingan/model
注:如下操作的用户为有 hive 权限的用户,所有文件及程序都要放入此用户有足够权限的目录下
2.4.2.3 场景初始化
-
清空模型数据(首次部署):
delete from econ_scen_info_d;
-
初始化模型数据
标准场景初始化:确保econ_scen_info_d(模型场景主表)有中长期模型的标准场景,具体代号包括:1、2、
3、5、6、7、8等7个场景;若无,则需执行初始化【select * from econ_scen_info_d where SCEN_TYPE in(‘1’,‘2’,‘3’,‘5’,‘6’,‘7’,‘8’);】
--执行【初始化数据之前执行(mysql)标准场景.txt】脚本初始化 update econ_scen_info_d set SCEN_RUN_STAS ='2' SCEN_TYPE in('1','2','3','5','6','7','8');
标准场景:主表中
scen_type
为场景类型、def_flag 为 1、del_flag 为 0 的数据,每个场景有且只能有一个
/pingan/tool/python3.7.9/bin/python3 /pingan/model/hsp-hgjc-model_20210924/running_start.py 1
查看运行结果:
先确认输出表是否有数据,此示例模型的输出表为:modl_outp,根据此次运行的模型scen_id 查询此结果表,有数据即为模型运行成功;
根据运行的 scen_id 查询模型主表 econ_scen_info_b,此数据的 scen_run_stas 是否为“4”,如果是,则运行成功;
如果运行成功,则还需检查模型输出表是否有数据,如果没有数据,则优先根据模型输入输出文档排查此场景输入表的数据、维度是否正确;
如果运行失败,则查看运行日志,分析具体原因,如分析不出来问题,则发送日志给到产品研发。
2.4.2.4 应用模型初始化
使用数据初始化工具导入应用模型初始化数据
参照一体化工具安装
2.4.2.5 模型调试
- 运行模型:每年运行一次:
#python3路径 主文件 场景类型
/pingan/tool/python3.7.9/bin/python3 /pingan/model/hsp-hgjc-model_20210924/running_start.py init_1
运行普通模型
#python3路径 主文件 场景类型
/pingan/tool/python3.7.9/bin/python3 /pingan/model/hsp-hgjc-model_20210924/running_start.py 1
确定模型主表 econ_scen_info_d 中有对应场景类型的数据(模型代码见文件《模型场景依赖整理.xlsx》的模型代号,与此表 scen_type 对应),并且 scen_run_stas 为 2,之后才能开始进行此模型调试。
启动模型执行命令(以模型代号为“1”的示例):
#python3路径 主文件 场景类型
/pingan/tool/python3.7.9/bin/python3 /pingan/model/hsp-hgjc-model_20210924/running_start.py 1
查看运行结果:
先确认输出表是否有数据,此示例模型的输出表为:modl_outp,根据此次运行的模型scen_id 查询此结果表,有数据即为模型运行成功;
根据运行的 scen_id 查询模型主表 econ_scen_info_b,此数据的 scen_run_stas 是否为“4”,如果是,则运行成功;
如果运行成功,则还需检查模型输出表是否有数据,如果没有数据,则优先根据模型输入输出文档排查此场景输入表的数据、维度是否正确;
如果运行失败,则查看运行日志,分析具体原因,如分析不出来问题,则发送日志给到产品研发。
2.5 Spark模型部署
2.5.1 Pyhton 安装
#通过xftp上传python379.zip
上传路径:/pingan/tool/python379.zip
#执行以下命令,切换到客户端安装目录
cd /opt/hadoopclient
#执行source bigdata_env命令配置客户端环境变量。
source bigdata_env
#如果集群为安全模式,执行以下命令,设置kinit认证,输入客户端用户登录密码;普通模式集群无需执行用户认证。集群账号为pingan
kinit pingan
Password for pingan@HADOOP.COM: #输入admin用户登录密码(与登录集群的用户密码一致)
#直接执行HDFS Shell命令,查看文件目录,仅可在/user/pingan目录下操作【集群账号为pingan】
hdfs dfs -ls /
常见命令如下:
命令 | 说明 | 样例 |
---|---|---|
hdfs dfs -mkdir 文件夹名称 | 创建文件夹 | hdfs dfs -mkdir /tmp/mydir |
hdfs dfs -ls 文件夹名称 | 查看文件夹 | hdfs dfs -ls /tmp |
hdfs dfs -put 客户端节点上本地文件 | 上传本地文件到HDFS指定路径 | hdfs dfs -put /opt/test.txt /tmp上传客户端节点“/opt/tests.txt”文件到HDFS的“/tmp”路径下 |
hdfs dfs -get hdfs指定文件 客户端节点上**指定路径 | 下载HDFS文件到本地指定路径 | **hdfs dfs -get /tmp/test.txt /opt/**下载HDFS的“/tmp/test.txt”文件到客户端节点的“/opt”路径下 |
hdfs dfs -rm -r -f hdfs指定文件夹 | 删除文件夹 | hdfs dfs -rm -r -f /tmp/mydir |
#查看文件夹
hdfs dfs -ls /user/pingan/mds
#创建文件夹
hdfs dfs -mkdir /user/pingan/mds/tool
#上传python379.zip
hdfs dfs -put /pingan/tool/python379.zip /user/pingan/mds/tool
#验证上传结果
2.5.2 模型安装
2.5.2.1 前提条件检查
-
应用功能检查
检查模型对应的菜单是否可以正常查询、保存、修改;如果有问题,则需要修复应用程
序内容,才内容完成后,才能进行模型调试。
模型-菜单对应关系见文件《模型场景依赖整理.xlsx》
-
依赖数据检查
检查模型输入表、依赖表是否有、是否为本省份数据,如果不是,则需要修改这些数据,
部分数据可以从初始化工具中进行修复后,重新初始化。
检查输入表时,要注意对应的时间维度(年份)以及其他维度(如:统筹区、医疗机构
等级)等维度是否能匹配上。
模型-输入、依赖表对应关系见文件《模型场景依赖整理.xlsx》
2.5.2.2 上传个性化包
#通过上传个性化包到模型服务器【/pingan/tool/】
#mysql-connector-java-5.1.39-bin.jar
#py4j-0.10.4-src.zip
#上传个性化包
hdfs dfs -put /pingan/tool/mysql-connector-java-5.1.39-bin.jar /user/pingan/mds/tool
hdfs dfs -put /pingan/tool/py4j-0.10.4-src.zip /user/pingan/mds/tool
2.5.2.3 上传模型
#先删除
hdfs dfs -rm -r -skipTrash /user/pingan/mds/tool/hsp-hgjc-model
#上传命令:【强制覆盖命令:hdfs dfs -put -f】
hdfs dfs -put /pingan/tool/hsp-hgjc-model /user/pingan/mds/tool/hsp-hgjc-model
2.5.2.4 应用模型初始化
使用数据初始化工具导入应用模型初始化数据,如普通模型已经初始化,则无需再执行
参照一体化工具安装
2.5.2.5 Spark-Submit 提交命令介绍
# spark 提交模式
master yarn
# spark 部署模式
deploy-mode cluster
# 执行器个数(可根据实际情况修改)
num-executors 2
# 核心执行器个数
executor-cores 1
# 执行器使用内存(按照每 1 万人 100M 的容量设置)
executor-memory 4g
# 驱动器内存
driver-memory 4g
# 上传至 hdfs 的 python 环境包地址 hdfsA 方式
conf spark.yarn.dist.archives=hdfs:///user/ybapp/python379.zip#PyEnv,hdfs:///user/ybapp/hsp-hgjc-model
# 上传至 hdfs 的 python 环境包地址 hdfsB 方式
conf spark.yarn.dist.archives=hdfs:///user/ybapp/python379.zip#PyEnv,hdfs:///user/ybapp/hsp-hgjc-model.zip#hsp-hgjc-model
# spark python 使用路径
conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=PyEnv/python3.7.9/bin/python3.7
conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=PyEnv/python3.7.9/bin/python3.7
conf spark.executorEnv.PYSPARK_PYTHON=PyEnv/python3.7.9/bin/python3.7
conf spark.executorEnv.PYSPARK_DRIVER_PYTHON=PyEnv/python3.7.9/bin/python3.7
conf spark.pyspark.python=PyEnv/python3.7.9/bin/python3.7
conf spark.pyspark.driver.python=PyEnv/python3.7.9/bin/python3.7
# 启用 hive 的动态分区
conf hive.exec.dynamici.partition=true
conf hive.exec.dynamic.partition.mode=nonstrict
# 指定我们使用的队列(前期没有队列是,可以去掉,使用默认队列)
conf spark.yarn.queue=root.default
conf mapreduce.job.user.name=pingan
conf spark.mapreduce.job.user.name=pingan
conf spark.sql.catalogImplementation=hive
# 集群需要使用到我们个性化的驱动包
jars hdfs://hnsybj/user/ybapp/mysql-connector-java-5.1.39-bin.jar,hdfs://hnsybj/user/ybapp/py4j-0.10.4-src.zip
# python 文件:文件根目录地址、主执行文件地址(都要事先上传至 hdfs,否则非单文件目录的工程无法启动)hdfsA 方式
py-files hdfs:///user/ybapp/hsp-hgjc-model hdfs:///user/ybapp/hsp-hgjc-model/running_start.py
# python 文件:文件根目录地址、主执行文件地址(都要事先上传至 hdfs,否则非单文件目录的工程无法启动)hdfsB 方式
py-files hdfs:///user/ybapp/hsp-hgjc-model /running_start.py
2.5.2.6 模型调试
2.5.3 模型调试
2.5.3.1 Spark 配置文件修改
配置文件修改【模型部署文档\V1.3.1-20210924版本\hsp-hgjc-model_20210924\app\config\settings.ini】
spark_set:
spark submit 命令以及是否使用,具体见使用见配置文件中的备注及下文部署时的命令介绍;推荐【以文件夹形式提交命令】
# 如果是不需要执行spark_submit命令(如:阿里云),则use_spark_submit为False,其他的填入True
use_spark_submit=True
# 如下两种方式只能使用其中一个,不需要spark_submit的,如阿里云,随便放开一个就行
# 以文件夹形式提交命令
spark_submit=
# 以zip方式提交命令
# spark_submit=
# 目前支持odps,hive,阿里云填写odps
spark_platform=hive
下文以 hdsfA 代表以文件夹形式提交命令,以 hdfsB 代表以 zip 方式提交命令
2.5.3.2 文件夹形式分发部署(hdfsA)
这种方式,适用于 spark 集群服务器可以分发文件夹资源的平台,测试方式,可按照正常部署进行测试,当运行模型时如果出现读取不到包,即 ModuleNotFoundError 时,是不支持文件夹形式部署的,则需要采用 zip 压缩包形式的部署;
这种形式需要修改配置文件 setting.ini 中的 spark_submit 为#以文件夹形式提交命令
针对ModuleNotFoundError 问题可通过命令增加参数配置解决,建议以hdfsA方式,便于更新操作,命令如下:
spark_submit 的值 + ‘ spark_model’+ ‘ 场景 id’ + ‘ 场景类型’
#命令如下
spark-submit \
--master yarn \
--deploy-mode cluster \
--num-executors 2 \
--executor-cores 1 \
--executor-memory 4g \
--driver-memory 4g \
--conf spark.pyspark.driver.python=./python3.7.9/python3.7.9/bin/python3 \
--conf spark.pyspark.python=./python3.7.9/python3.7.9/bin/python3 \
--archives hdfs:///user/pingan/mds/tool/python379.zip#python3.7.9,hdfs:///user/pingan/mds/tool/hsp-hgjc-model \
--jars hdfs:///user/pingan/mds/tool/mysql-connector-java-5.1.39-bin.jar,hdfs:///user/pingan/mds/tool/py4j-0.10.4-src.zip \
--conf hive.exec.dynamici.partition=true \
--conf hive.exec.dynamic.partition.mode=nonstrict \
--conf mapreduce.job.user.name=pingan \
--conf spark.mapreduce.job.user.name=pingan \
--conf spark.sql.catalogImplementation=hive \
--conf spark.yarn.dist.pyFiles=hdfs:///user/pingan/mds/tool/hsp-hgjc-model \
hdfs:///user/pingan/mds/tool/hsp-hgjc-model/running_start.py spark_model 14 14
# 注意hdfs:///设置为三条斜线,例如
--conf spark.yarn.dist.pyFiles=hdfs:///user/pingan/mds/tool/hsp-hgjc-model
# 仅黑龙江部署过程中为了验证本地环境写的py文件
test_spark_session.py mds_prd.ac_bidprcu_age_grp_useamt_d
# 指定我们使用的队列(前期没有队列是,可以去掉,使用默认队列)
--conf spark.yarn.queue=root.default \
#测试命令
spark-submit \
--master yarn \
--deploy-mode cluster \
--num-executors 2 \
--executor-cores 1 \
--executor-memory 4g \
--driver-memory 4g \
--conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
--conf spark.rdd.compress=true \
--conf spark.speculation.interval=10000ms \
--conf spark.sql.legacy.setCommandRejectsSparkCoreConfs=false \
--conf spark.pyspark.driver.python=./python3.7.9/python3.7.9/bin/python3 \
--conf spark.pyspark.python=./python3.7.9/python3.7.9/bin/python3 \
--archives hdfs:///user/pingan/mds/tool/python379.zip#python3.7.9,hdfs:///user/pingan/mds/tool/hsp-hgjc-model \
--jars hdfs:///user/pingan/mds/tool/mysql-connector-java-5.1.39-bin.jar,hdfs:///user/pingan/mds/tool/py4j-0.10.4-src.zip \
--conf hive.exec.dynamici.partition=true \
--conf hive.exec.dynamic.partition.mode=nonstrict \
--conf mapreduce.job.user.name=pingan \
--conf spark.mapreduce.job.user.name=pingan \
--conf spark.sql.catalogImplementation=hive \
--conf spark.yarn.dist.pyFiles=hdfs:///user/pingan/mds/tool/hsp-hgjc-model \
hdfs:///user/pingan/mds/tool/hsp-hgjc-model/running_start.py spark_model 14 14
2.5.3.3 日志查看
命令查看
#执行完成后,查看日志:yarn logs -applicationId 实际id(日志中的application id)
yarn logs -applicationId application_1633750358201_6781
#下载日志:yarn logs -applicationId 实际id > logs1.txt
yarn客户端
选择集群节点
找到对应applicationId
点击logs
附录
常见问题FQA
$1 政策模拟—14—待遇政策仿真模拟
1.1 模型场景依赖
场景依赖(数仓) | 来源 | 备注 | |
---|---|---|---|
set hive.optimize.sort.dynamic.partition=true;
set hive.exec.dynamic.partition = true;
set hive.exec.dynamic.partition.mode = nonstrict;
set hive.exec.parallel = true;
set hive.exec.parallel.thread.number = 16;
set tez.queue.name=root.ambari-qa;
set hive.merge.tezfiles=true;
set hive.merge.size.per.task=512000000;
set hive.merge.smallfiles.avgsize=512000000;
set hive.map.aggr=true;
set hive.groupby.skewindata=true;
set hive.optimize.skewjoin=true;
set hive.skewjoin.key=500000;
--odps sql
--********************************************************************--
--author:gengzf
--create time:2020-07-21 14:06:11
--last update by:gengzf
--last update time:2020-11-19 18:16:00
--结算信息明细表
--********************************************************************--
--------------------------------字典----------------------------------------
--结算类别 SETL_TYPE
--1 中心报销
--2 联网结算
--3 补充报销
--支付地点类别 PAY_LOC
--1 中心
--2 医疗机构
--3 省内异地
--4 跨省异地
--5 互联网医院
--人员类别 PSN_TYPE
--11 在职
--1101 职工在职
--1102 公务员在职
--1103 灵活就业人员在职
--1160 地方其他扩展人员
--12 退休人员
--1201 职工退休
--1202 公务员退休
--1203 灵活就业人员退休
--1260 地方其他扩展人员
--13 离休
--1300 离休人员
--1360 地方其他扩展人员
--14 居民(未成年)
--1401 新生儿
--1402 学龄前儿童
--1403 中小学生
--1404 大学生
--1405 未成年(未入学)
--15 居民(成年)
--1501 普通居民(成年)
--1560 地方其他扩展身份
--16 居民(老年)
--------------------------------字典----------------------------------------
with
medmap as (select std_dic_code,prd_dic_code from mds_prd.DIM_IDP_DATA_DIC_MAP where std_dic_type='MED_TYPE' and prd_dic_type ='MDTRT_WAY' )
,hosplvmap as (select std_dic_code,prd_dic_code from mds_prd.DIM_IDP_DATA_DIC_MAP where std_dic_type='HOSP_LV' and prd_dic_type ='MEDINSLV_MAJCLS')
,tt as (
select mdtrt_id
,fix_blng_admdvs
,dscg_way
,med_type
,case when inhosp_stas='0' then ipt_days else 0 end ipt_days
,inhosp_stas
,dscg_dept_codg as dscg_dept_code
,DSCG_DEPT_NAME
,dscg_maindiag_code
,dscg_maindiag_name
,ROW_NUMBER() OVER(PARTITION BY mdtrt_id ORDER BY updt_time desc ) AS num
from dwd.dwd_dgn_mdtrt_d
where vali_flag='1'
)
,mdtrt_d as (
select mdtrt_id
,fix_blng_admdvs
,dscg_way
,ipt_days
,inhosp_stas
,dscg_dept_code
,DSCG_DEPT_NAME
,dscg_maindiag_code
,dscg_maindiag_name
,med_type
from tt
where num=1
)
,tt1 AS
(
SELECT mdtrt_id
,poolarea_no as poolarea_no
,diag_code as diag_code
,diag_name as diag_name
,diag_srt_no
,ROW_NUMBER() OVER(PARTITION BY mdtrt_id ORDER BY diag_srt_no asc ) AS num
FROM dwd.DWD_DGN_SETL_DIAG_LIST_D
WHERE vali_flag='1'
)
,t4 AS
(
SELECT mdtrt_id
,poolarea_no as poolarea_no
,diag_code as diag_code
,diag_name as diag_name
FROM tt1
WHERE num=1
)
,cxcl as (
select mdtrt_id,insu_admdvs
FROM dwd.dwd_fin_setl_d t1 --结算信息表
WHERE --etl_date = substr('${bdp.system.bizdate}',1,6) --经办时间
date_format(t1.updt_time,'yyyy-MM-dd') = '${p.ETL_DATE}'
and t1.refd_setl_flag='1'
)
,a as (
SELECT
t1.insu_admdvs as poolarea_no --统筹区编号
,mdtrt_d.fix_blng_admdvs --定点归属医保区划
,t1.insutype --险种类型
,mdtrt_d.med_type --医疗类型
,t1.setl_type --结算类别
,t1.clr_way --清算方式
,t1.pay_loc --支付地点类别
,t1.psn_type as psn_tyt_type --医疗人员类别
,t1.fixmedins_code --定点医药机构编号
,t1.psn_type --人员类别
,case when medmap.prd_dic_code='1' then coalesce(t4.diag_code,'')
when medmap.prd_dic_code='3' then t1.dise_no
WHEN medmap.prd_dic_code='2' then coalesce(mdtrt_d.dscg_maindiag_code,'')
ELSE '' end as dise_no --病种编号
,t1.setl_id --结算id
,t1.mdtrt_id --就诊ID
,t1.mdtrt_cert_type --就诊凭证类型
,t1.init_setl_id --原结算ID
,' ' as out_fil_type --异地备案类型(非异地就医默认为空)
,t1.setl_time --结算时间
,t1.begndate --开始日期
,t1.enddate --结束日期
,t1.year --年度
,t1.clr_type --清算类别
,t1.clr_optins --清算经办机构
,t1.refd_setl_flag --退费结算标志
,t1.manl_reim_rea --零星报销原因
,t1.fixmedins_name --定点医药机构名称
,t1.hosp_lv --医院等级
,t1.dedc_hosp_lv --起付线医院等级
,t1.afil_rlts --隶属关系
,t1.insu_admdvs --参保所属医保区划
,t1.emp_no --单位编号
,t1.emp_mgt_type --单位管理类型
,t1.emp_type --单位类型
,t1.emp_name --单位名称
,t1.econ_type --经济类型
,t1.afil_indu as indu--所属行业
,t1.psn_no --人员编号
,t1.psn_insu_rlts_id --人员参保关系id
,t1.psn_cert_type --人员证件类型
,t1.brdy --出生日期
,t1.naty --民族
,t1.age --年龄
,t1.gend --性别
,t1.cvlserv_flag --公务员标志
,t1.cvlserv_lv --公务员等级
,t1.nwb_flag --新生儿标志
,t1.sp_psn_type --特殊人员类型
,t1.sp_psn_type_lv --特殊人员类型等级
,case when medmap.prd_dic_code ='1' then coalesce(t4.diag_name,'')
when mdtrt_d.med_type ='3' then t1.dise_name
WHEN medmap.prd_dic_code='2' then coalesce(mdtrt_d.dscg_maindiag_name,'')
ELSE '' end dise_name --病种名称
,t1.vali_flag --有效标志
,mdtrt_d.dscg_way --离院方式
,nvl(t1.medfee_sumamt,0) as medfee_sumamt --医疗费总额
,nvl(t1.fund_pay_sumamt,0) as fund_pay_sumamt --基金支付总额
,nvl(t1.dedc_std,0) as dedc --起付标准
,nvl(t1.act_pay_dedc,0) as act_pay_dedc --实际支付起付线
,nvl(t1.pool_prop_selfpay,0)as pool_prop_selfpay--基本医疗统筹支付比例
,nvl(t1.hifp_pay,0) as hifp_pay --统筹基金支出
,nvl(t1.overlmt_selfpay,0)as overlmt_selfpay --超限价自费费用
,nvl(t1.crt_dedc,0) as crt_dedc --本次起付线
,nvl(t1.fulamt_ownpay_amt,0)as fulamt_ownpay_amt--全自费金额
,nvl(t1.inscp_amt,0) as inscp_amt --符合范围金额
,nvl(t1.acct_pay,0)as acct_pay --个人账户支出
,nvl(t1.psn_pay,0) as psn_payamt --个人支付金额
,nvl(t1.preselfpay_amt,0)as preselfpay_amt --先行自付金额
,nvl(t1.cash_payamt,0) as cash_payamt --现金支付金额
,nvl(t1.othfund_pay,0) as othfund_pay --其它基金支付
,nvl(t1.cvlserv_pay,0) as hifcs_pay --公务员医疗补助基金支出
,nvl(t1.hifes_pay,0) as hifes_pay --补充医疗保险基金支出
,nvl(t1.hifmi_pay,0) as mihi_hifes_pay --大病补充医疗保险基金支出
,nvl(t1.hifob_pay,0) as hifob_med_subs_fund_pay --大额医疗补助基金支出
,nvl(t1.hifdm_pay,0) as hifd_pay -- 伤残人员医疗保障基金支出
,nvl(t1.maf_pay,0) as maf_pay --医疗救助基金支出
,nvl(mdtrt_d.ipt_days,0) as ipt_days --住院天数
,mdtrt_d.inhosp_stas --在院状态
,hosplvmap.prd_dic_code as medinslv --医疗机构级别
-- ,hosplv_2_medinslv(t1.hosp_lv) as medinslv --医疗机构级别
,uuid() as rid --唯一记录号
,'oms' as dwh_created_by --创建人
,current_date() as dwh_created_dt --创建时间
,'101400' as dwh_src_sys_id --源系统ID
,'医保业务基础子系统' as dwh_src_sys_name --源系统名称
,'300706246' as dwh_job_id --任务ID
,mdtrt_d.DSCG_DEPT_CODE
,t1.CLCT_GRDE
,t5.FIXMEDINS_TYPE
,mdtrt_d.DSCG_DEPT_NAME
,'' as RESD_NATU
,t1.FLXEMPE_FLAG
,t7.MAT_IDET_CODE
,'0' as dwh_soft_delete_flg
,case when medmap.prd_dic_code='1' then coalesce(t4.diag_code,'')
when medmap.prd_dic_code='3' then t1.dise_no
WHEN medmap.prd_dic_code='2' then coalesce(mdtrt_d.dscg_maindiag_code,'')
ELSE '' end as diag_code --病种编号
,case when medmap.prd_dic_code='1' then coalesce(t4.diag_name,'')
when medmap.prd_dic_code='3' then t1.dise_name
WHEN medmap.prd_dic_code='2' then coalesce(mdtrt_d.dscg_maindiag_name,'')
ELSE '' end diag_name --病种名称
,date_format (t1.setl_time,'yyyyMMdd') as dt --分区键
-- ,mdtrt_d.vali_flag as mdtrtflag
FROM dwd.dwd_fin_setl_d t1 --结算信息表
inner JOIN mdtrt_d --就诊信息表
ON t1.mdtrt_id = mdtrt_d.mdtrt_id --就诊ID
LEFT JOIN t4 ON t1.mdtrt_id=t4.mdtrt_id --and t1.dwh_prov_admdvs=t4.dwh_prov_admdvs
LEFT JOIN (SELECT fixmedins_code
,max(fixmedins_type) as fixmedins_type
FROM dwd.DWD_PTY_FIXMEDINS_b
WHERE vali_flag='1' --and dwh_active_flg='1' and dwh_soft_delete_flg='0'
and begntime <=to_date('${p.ETL_DATE}')
and endtime >=to_date('${p.ETL_DATE}')
group by fixmedins_code --,dwh_prov_admdvs
)t5 ON t1.FIXMEDINS_CODE=t5.FIXMEDINS_CODE --and t1.dwh_prov_admdvs=t5.dwh_prov_admdvs
LEFT JOIN (SELECT max(mat_idet_code) as mat_idet_code
,psn_no
FROM dwd.dwd_pty_ma_obj_info_b
WHERE vali_flag='1'
group by psn_no ) t7 ON t1.psn_no=t7.psn_no --and t1.dwh_prov_admdvs=t7.dwh_prov_admdvs
left join medmap on medmap.std_dic_code=mdtrt_d.med_type
left join hosplvmap on hosplvmap.std_dic_code=t1.hosp_lv
WHERE
date_format(t1.updt_time,'yyyy-MM-dd') = '${p.ETL_DATE}'
)
INSERT OVERWRITE TABLE mds_prd.fct_idp_setl_info_detl_di PARTITION (dt)
SELECT
poolarea_no --统筹区编号
,fix_blng_admdvs --定点归属医保区划
,insutype --险种类型
,med_type --医疗类型
,setl_type --结算类别
,clr_way --清算方式
,pay_loc --支付地点类别
,psn_tyt_type --医疗人员类别
,fixmedins_code --定点医药机构编号
,psn_type --人员类别
,dise_no --病种编号
,setl_id --结算id
,mdtrt_id --就诊ID
,mdtrt_cert_type --就诊凭证类型
,init_setl_id --原结算ID
,out_fil_type --异地备案类型(非异地就医默认为空)
,setl_time --结算时间
,begndate --开始日期
,enddate --结束日期
,year --年度
,clr_type --清算类别
,clr_optins --清算经办机构
,refd_setl_flag --退费结算标志
,manl_reim_rea --零星报销原因
,fixmedins_name --定点医药机构名称
,hosp_lv --医院等级
,dedc_hosp_lv --起付线医院等级
,afil_rlts --隶属关系
,insu_admdvs --参保所属医保区划
,emp_no --单位编号
,emp_mgt_type --单位管理类型
,emp_type --单位类型
,emp_name --单位名称
,econ_type --经济类型
,indu--所属行业
,psn_no --人员编号
,psn_insu_rlts_id --人员参保关系id
,psn_cert_type --人员证件类型
,brdy --出生日期
,naty --民族
,cast(age as string) as age --年龄
,gend --性别
,cvlserv_flag --公务员标志
,cvlserv_lv --公务员等级
,nwb_flag --新生儿标志
,sp_psn_type --特殊人员类型
,sp_psn_type_lv --特殊人员类型等级
,dise_name --病种名称
,vali_flag --有效标志
,dscg_way --离院方式
,medfee_sumamt --医疗费总额
,fund_pay_sumamt --基金支付总额
,dedc --起付标准
,act_pay_dedc --实际支付起付线
,pool_prop_selfpay--基本医疗统筹支付比例
,hifp_pay --统筹基金支出
,overlmt_selfpay --超限价自费费用
,crt_dedc --本次起付线
,fulamt_ownpay_amt--全自费金额
,inscp_amt --符合范围金额
,acct_pay --个人账户支出
,psn_payamt --个人支付金额
,preselfpay_amt --先行自付金额
,cash_payamt --现金支付金额
,othfund_pay --其它基金支付
,hifcs_pay --公务员医疗补助基金支出
,hifes_pay --补充医疗保险基金支出
,mihi_hifes_pay --大病补充医疗保险基金支出
,hifob_med_subs_fund_pay --大额医疗补助基金支出
,hifd_pay -- 伤残人员医疗保障基金支出
,maf_pay --医疗救助基金支出
,ipt_days --住院天数
,inhosp_stas --在院状态
,medinslv --医疗机构级别
,rid --唯一记录号
,dwh_created_by --创建人
,dwh_created_dt --创建时间
,dwh_src_sys_id --源系统ID
,dwh_src_sys_name --源系统名称
,dwh_job_id --任务ID
,DSCG_DEPT_CODE
,CLCT_GRDE
,FIXMEDINS_TYPE
,DSCG_DEPT_NAME
,RESD_NATU
,FLXEMPE_FLAG
,MAT_IDET_CODE
,diag_code
,diag_name
,dt --分区键
FROM a
where vali_flag='1' and refd_setl_flag='0'
and insutype in ('310','510','380','390','391')
--and mdtrtflag='1'
UNION ALL
SELECT t1.poolarea_no --统筹区编号
,t1.fix_blng_admdvs --定点归属医保区划
,t1.insutype --险种类型
,t1.med_type --医疗类型
,t1.setl_type --结算类别
,t1.clr_way --清算方式
,t1.pay_loc --支付地点类别
,t1.psn_trt_type as psn_tyt_type --医疗人员类别
,t1.fixmedins_code --定点医药机构编号
,t1.psn_type --人员类别
,t1.dise_no --病种编号
,t1.setl_id --结算id
,t1.mdtrt_id --就诊ID
,t1.mdtrt_cert_type --就诊凭证类型
,t1.init_setl_id --原结算ID
,t1.out_fil_type --异地备案类型(非异地就医默认为空)
,t1.setl_time --结算时间
,cast(t1.begndate as date) as begndate --开始日期
,cast(t1.enddate as date) as enddate --结束日期
,t1.year --年度
,t1.clr_type --清算类别
,t1.clr_optins --清算经办机构
,t1.refd_setl_flag --退费结算标志
,t1.manl_reim_rea --零星报销原因
,t1.fixmedins_name --定点医药机构名称
,t1.hosp_lv --医院等级
,t1.dedc_hosp_lv --起付线医院等级
,t1.afil_rlts --隶属关系
,t1.insu_admdvs --参保所属医保区划
,t1.emp_no --单位编号
,t1.emp_mgt_type --单位管理类型
,t1.emp_type --单位类型
,t1.emp_name --单位名称
,t1.econ_type --经济类型
,t1.indu--所属行业
,t1.psn_no --人员编号
,t1.psn_insu_rlts_id --人员参保关系id
,t1.psn_cert_type --人员证件类型
,cast(t1.brdy as date) as brdy --出生日期
,t1.naty --民族
,t1.age --年龄
,t1.gend --性别
,t1.cvlserv_flag --公务员标志
,t1.cvlserv_lv --公务员等级
,t1.nwb_flag --新生儿标志
,t1.sp_psn_type --特殊人员类型
,t1.sp_psn_type_lv --特殊人员类型等级
,t1.dise_name --病种名称
,t1.vali_flag --有效标志
,t1.dscg_way --离院方式
,t1.medfee_sumamt --医疗费总额
,t1.fund_pay_sumamt --基金支付总额
,t1.dedc --起付标准
,t1.act_pay_dedc --实际支付起付线
,t1.pool_prop_selfpay--基本医疗统筹支付比例
,t1.hifp_pay --统筹基金支出
,t1.overlmt_selfpay --超限价自费费用
,t1.crt_dedc --本次起付线
,t1.fulamt_ownpay_amt--全自费金额
,t1.inscp_amt --符合范围金额
,t1.acct_pay --个人账户支出
,t1.psn_payamt --个人支付金额
,t1.preselfpay_amt --先行自付金额
,t1.cash_payamt --现金支付金额
,t1.othfund_pay --其它基金支付
,t1.hifcs_pay --公务员医疗补助基金支出
,t1.hifes_pay --补充医疗保险基金支出
,t1.mihi_hifes_pay --大病补充医疗保险基金支出
,t1.hifob_med_subs_fund_pay --大额医疗补助基金支出
,t1.hifd_pay -- 伤残人员医疗保障基金支出
,t1.maf_pay --医疗救助基金支出
,t1.ipt_days --住院天数
,t1.inhosp_stas --在院状态
,t1.medinslv --医疗机构级别
,t1.rid --唯一记录号
,t1.dwh_created_by --创建人
,t1.dwh_created_dt --创建时间
,t1.dwh_src_sys_id --源系统ID
,t1.dwh_src_sys_name --源系统名称
,t1.dwh_job_id --任务ID
,t1.DSCG_DEPT_CODE
,t1.CLCT_GRDE
,t1.FIXMEDINS_TYPE
,t1.DSCG_DEPT_NAME
,t1.RESD_NATU
,t1.FLXEMPE_FLAG
,t1.MAT_IDET_CODE
,t1.diag_code
,t1.diag_name
,t1.dt as dt
FROM
(
SELECT t1.poolarea_no --统筹区编号
,t1.fix_blng_admdvs --定点归属医保区划
,t1.insutype --险种类型
,t1.med_type --医疗类型
,t1.setl_type --结算类别
,t1.clr_way --清算方式
,t1.pay_loc --支付地点类别
,t1.psn_trt_type --医疗人员类别
,t1.fixmedins_code --定点医药机构编号
,t1.psn_type --人员类别
,t1.dise_no --病种编号
,t1.setl_id --结算id
,t1.mdtrt_id --就诊ID
,t1.mdtrt_cert_type --就诊凭证类型
,t1.init_setl_id --原结算ID
,t1.out_fil_type --异地备案类型(非异地就医默认为空)
,t1.setl_time --结算时间
,t1.begndate --开始日期
,t1.enddate --结束日期
,t1.year --年度
,t1.clr_type --清算类别
,t1.clr_optins --清算经办机构
,t1.refd_setl_flag --退费结算标志
,t1.manl_reim_rea --零星报销原因
,t1.fixmedins_name --定点医药机构名称
,t1.hosp_lv --医院等级
,t1.dedc_hosp_lv --起付线医院等级
,t1.afil_rlts --隶属关系
,t1.insu_admdvs --参保所属医保区划
,t1.emp_no --单位编号
,t1.emp_mgt_type --单位管理类型
,t1.emp_type --单位类型
,t1.emp_name --单位名称
,t1.econ_type --经济类型
,t1.indu--所属行业
,t1.psn_no --人员编号
,t1.psn_insu_rlts_id --人员参保关系id
,t1.psn_cert_type --人员证件类型
,t1.brdy --出生日期
,t1.naty --民族
,t1.age --年龄
,t1.gend --性别
,t1.cvlserv_flag --公务员标志
,t1.cvlserv_lv --公务员等级
,t1.nwb_flag --新生儿标志
,t1.sp_psn_type --特殊人员类型
,t1.sp_psn_type_lv --特殊人员类型等级
,t1.dise_name --病种名称
,t1.vali_flag --有效标志
,t1.dscg_way --离院方式
,t1.medfee_sumamt --医疗费总额
,t1.fund_pay_sumamt --基金支付总额
,t1.dedc --起付标准
,t1.act_pay_dedc --实际支付起付线
,t1.pool_prop_selfpay--基本医疗统筹支付比例
,t1.hifp_pay --统筹基金支出
,t1.overlmt_selfpay_fee as overlmt_selfpay --超限价自费费用
,t1.crt_dedc --本次起付线
,t1.fulamt_ownpay_amt--全自费金额
,t1.inscp_amt --符合范围金额
,t1.acct_pay --个人账户支出
,t1.psn_payamt --个人支付金额
,t1.preselfpay_amt --先行自付金额
,t1.cashpay_amt as cash_payamt --现金支付金额
,t1.othfund_pay --其它基金支付
,t1.hifcs_pay --公务员医疗补助基金支出
,t1.hifes_pay --补充医疗保险基金支出
,t1.mihi_hifes_pay --大病补充医疗保险基金支出
,t1.hifob_med_subs_fund_pay --大额医疗补助基金支出
,t1.hifd_pay -- 伤残人员医疗保障基金支出
,t1.maf_pay --医疗救助基金支出
,t1.ipt_days --住院天数
,t1.inhosp_stas --在院状态
,t1.medinslv --医疗机构级别
,t1.rid --唯一记录号
,t1.dwh_created_by --创建人
,t1.dwh_created_dt --创建时间
,t1.dwh_src_sys_id --源系统ID
,t1.dwh_src_sys_name --源系统名称
,t1.dwh_job_id --任务ID
,t1.DSCG_DEPT_CODE
,t1.CLCT_GRDE
,t1.FIXMEDINS_TYPE
,t1.DSCG_DEPT_NAME
,t1.RESD_NATU
,t1.FLXEMPE_FLAG
,t1.MAT_IDET_CODE
,t1.diag_code
,t1.diag_name
,t1.dt as dt
,t3.setl_id as setl_id_null
,t4.mdtrt_id as mdtrtnull
from mds_prd.fct_idp_setl_info_detl_di t1
left semi join a t2 on t1.dt=t2.dt
left join a t3 on t1.setl_id=t3.setl_id and t3.dt=t1.dt and t1.insu_admdvs=t3.insu_admdvs
left join cxcl t4 on t1.mdtrt_id=t4.mdtrt_id and t1.insu_admdvs=t4.insu_admdvs
) t1 where t1.setl_id_null is null and t1.mdtrtnull is null
;