京公网安备 11010802034615号
经营许可证编号:京B2-20210330
如何在SAS EG中展示DB2表的中文列标识
SAS EG中展示DB2表的中文列标识
SAS用户经常会使用SAS Enterprise Guide (简称EG),通过SAS/ ACCESS to DB2 查看、获取DB2中的表。
各种系统的开发人员经常使用神一样的字段来定义列名,而业务分析人员希望看到简单明白直观的中文列名。比如下面两张图对比一下,NAME和SALARY这两个单词很容易理解。但是如果使用了一些缩写,比如CUSTID, CUSTNAME 或 CUSTSALA就很难理解了。
我们可以使用DB2中的comment,在EG中展示列的中文标识。
比如DB2中的表EMP2,有两列:name和salary。其中name的comment为“名字”,而salary的comment为“年薪”。
解决思路
开发一个SAS程序(db2_add_comment.sas),该程序可以为DB2中的表添加comment信息,同时将表部分抽取到work逻辑库下,方便SAS用户对数据进行进一步分析。
该SAS程序可以分成3部分:
1.抽取DB2中的表以及包含表字段comment数据的字典表sysibm.syscolumns到work逻辑库下。
2. 对字典表当中的列名、comment 以及列的个数参数化,生成一系列宏变量。
3.对SAS数据集添加label信息。
SAS宏自动化编译
最终完整的SAS程序是一个可以直接被调用的SAS宏。
1. 为了方便用户使用这段宏,将该SAS脚本上传到SAS 计算层所在的环境中,如:/local/install/cfgsas1/sas_code/
2. 修改文件appserver_autoexec_usermods.sas (该文件一般在配置目录下,如 /install/cfgsas1/config/Lev1/SASApp),%include该SAS脚本,这样每次打开EG的时候就会自动对宏进行编译。
3.打开EG之后直接调用该宏。
比如用户希望查看DB2当中的EMP2这张表。那么可以运行下面的调用语句:
%db2_add_comment(database = database_name, user = db_user, password = db_password, table = EMP2,obs_num = 10)
其中database为db2数据库的名称,user/password分别为能够读取EMP2这张表的用户名和密码,table为DB2中表的名称,obs_num为希望将DB2中该表的前多少行数据抽取出来,默认为10行。
执行成功后,会在work逻辑库下生成一个同名的SAS数据集EMP2,为了能够通过EG打开SAS数据集的时候看到label而不是变量名,可以在EG的选项中做一个设定:
这时在EG中打开该数据集,即可以看到comment信息得以展示:
完整 SAS 程序
如果有需要,可以回复关键字【源代码DB2】下载完整SAS程序。
%macro db2_add_comment(database = , /* db2 database name */
user = , /* db2 user name */
password = , /* db2 password */
table = , /* db2 table */
obs_num = 10 /* number of obs to be extracted in db2 table */
);
%let table_nm = %str(%"&table%");
proc sql;
connect to db2 (database=&database user=&user password=&password);
create table work.column_name as
select NAME,REMARKS
from connection to db2(select name, remarks from sysibm.syscolumns where tbname = &table_nm);
create table work.&table as
select * from connection to db2(select * from &table fetch first &obs_num rows only);
quit;
data _null_;
set work.column_name;
call symputx("column_lable"||strip(_n_),kstrip(remarks));
call symputx("column_name"||strip(_n_),strip(name));
call symputx("column_num",strip(_n_));
run;
%macro modify_data;
proc datasets library=work nolist;
modify &table;
%do i = 1 %to &column_num;
%if &&column_lable&i = %then %do;
label &&column_name&i = "&&column_name&i";
%end;
%else %do;
label &&column_name&i = "&&column_lable&i";
%end;数据分析师培训
%end;
quit;
%mend;
%modify_data
%mend;
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在 MySQL 数据查询中,“按顺序计数” 是高频需求 —— 例如 “统计近 7 天每日订单量”“按用户 ID 顺序展示消费记录”“按产品 ...
2025-10-31在数据分析中,“累计百分比” 是衡量 “部分与整体关系” 的核心指标 —— 它通过 “逐步累加的占比”,直观呈现数据的分布特征 ...
2025-10-31在 CDA(Certified Data Analyst)数据分析师的工作中,“二分类预测” 是高频需求 —— 例如 “预测用户是否会流失”“判断客户 ...
2025-10-31在 MySQL 实际应用中,“频繁写入同一表” 是常见场景 —— 如实时日志存储(用户操作日志、系统运行日志)、高频交易记录(支付 ...
2025-10-30为帮助教育工作者、研究者科学分析 “班级规模” 与 “平均成绩” 的关联关系,我将从相关系数的核心定义与类型切入,详解 “数 ...
2025-10-30对 CDA(Certified Data Analyst)数据分析师而言,“相关系数” 不是简单的数字计算,而是 “从业务问题出发,量化变量间关联强 ...
2025-10-30在构建前向神经网络(Feedforward Neural Network,简称 FNN)时,“隐藏层数目设多少?每个隐藏层该放多少个神经元?” 是每个 ...
2025-10-29这个问题切中了 Excel 用户的常见困惑 —— 将 “数据可视化工具” 与 “数据挖掘算法” 的功能边界混淆。核心结论是:Excel 透 ...
2025-10-29在 CDA(Certified Data Analyst)数据分析师的工作中,“多组数据差异验证” 是高频需求 —— 例如 “3 家门店的销售额是否有显 ...
2025-10-29在数据分析中,“正态分布” 是许多统计方法(如 t 检验、方差分析、线性回归)的核心假设 —— 数据符合正态分布时,统计检验的 ...
2025-10-28箱线图(Box Plot)作为展示数据分布的核心统计图表,能直观呈现数据的中位数、四分位数、离散程度与异常值,是质量控制、实验分 ...
2025-10-28在 CDA(Certified Data Analyst)数据分析师的工作中,“分类变量关联分析” 是高频需求 —— 例如 “用户性别是否影响支付方式 ...
2025-10-28在数据可视化领域,单一图表往往难以承载多维度信息 —— 力导向图擅长展现节点间的关联结构与空间分布,却无法直观呈现 “流量 ...
2025-10-27这个问题问到了 Tableau 中两个核心行级函数的经典组合,理解它能帮你快速实现 “相对位置占比” 的分析需求。“index ()/size ( ...
2025-10-27对 CDA(Certified Data Analyst)数据分析师而言,“假设检验” 绝非 “套用统计公式的机械操作”,而是 “将模糊的业务猜想转 ...
2025-10-27在数字化运营中,“凭感觉做决策” 早已成为过去式 —— 运营指标作为业务增长的 “晴雨表” 与 “导航仪”,直接决定了运营动作 ...
2025-10-24在卷积神经网络(CNN)的训练中,“卷积层(Conv)后是否添加归一化(如 BN、LN)和激活函数(如 ReLU、GELU)” 是每个开发者都 ...
2025-10-24在数据决策链条中,“统计分析” 是挖掘数据规律的核心,“可视化” 是呈现规律的桥梁 ——CDA(Certified Data Analyst)数据分 ...
2025-10-24在 “神经网络与卡尔曼滤波融合” 的理论基础上,Python 凭借其丰富的科学计算库(NumPy、FilterPy)、深度学习框架(PyTorch、T ...
2025-10-23在工业控制、自动驾驶、机器人导航、气象预测等领域,“状态估计” 是核心任务 —— 即从含噪声的观测数据中,精准推断系统的真 ...
2025-10-23