msgbartop
List for SAS fans and programmer
msgbarbottom

22 11月 19 难道是SAS10?云分析服务时代的到来

难道是SAS10?云分析服务时代的到来

大家有一个普通的印象:SAS的更新很慢,很老很落后。可能跟它的版本命名有关,SAS9.0是2004年出来的,到现在都快20年了,版本号 还停留在9字头,并且还没有继续更新的迹象。当然这个与SAS公司的命名习惯有关系,要知道普通人都是没用过9.00,也没用过9.39的,不象MATLAB和SPSS那样一年几个或一个更新。

老外都迷信偶数,觉得偶数才是吉祥数字,奇数都是不稳定的。比如说3G通讯信号是个渣,Win7是个垃圾。苹果不自信,不敢用10,用了个X,果然也不行。一直准备学SAS的新编程语言CASL(Cloud Analytic Services Language),自己电脑上的SAS@ Studio 不知道怎么回事一直连不上。只好用用SAS网站上的SAS Viya trial(请自行搜索关键词),注册一下很快就可以用了,比本地安装SAS软件快多了。界面是浏览器界面,很清爽漂亮,长下面这个样子。

对于SASor来说,顺手写下了上面的代码是件在正常不过的事,类似在其他语言上写“Hello,World”。没有报错,在log里面的Note标签底下出现了SAS的Lincense信息(见以前的文章:深入了解SAS License),果然有收获。

先看看版本号V.03.04M0P050819,这不明摆着是10嘛,我觉得SAS有这个自信把这一版的SAS命名为SAS10,比如说CASL出现简直就是新的里程碑啊。然后授权点Site name:’DEMOCENTER – 19W21 Full Order Setinit’.全订单的demo版本,查了一下,好像不是很全,毕竟SAS好多东西都是Undocumented的。再往下看number没什么可讲的,不过下面的CPU A,B,C有点意思,云计算,CPU就是多。继续是有效期1年,很SAS。系统生日是2019年10月3日,很新,使用的应该是64位Linxus系统,紧跟着下面长长的列表就是全系统的SAS模块产品了,很长。CPU A 对应的是SAS老语言的模块,CPU B对应的只有两个Base SAS Software和Threaded Kernel Extensions for Central Analytic Server,没弄明白;后面的全是CPU C对应的模块,除了BASE和几个时间序列的,全是以CAS打头的,很明显,都是云分析模块,很细致很长,以前命名的模块,一个衍生出好多个,Goodnight这是要拆开来一个一个的单卖啊。

我全附在下面了,有兴趣的自行研究。

  • Original site validation data Current version: V.03.04M0P050819
  • Site name: ‘DEMOCENTER – 19W21
  • Full Order Setinit’. Site number:  ………
  • CPU A: Model name=” model number=” serial=”.
  • CPU B: Model name=” model number=” serial=’+9999′.
  • CPU C: Model name=” model number=” serial=’+9999′.
  • Expiration: 10OCT2020.
  • Grace Period: 45 days (ending 24NOV2020).
  • Warning Period: 47 days (ending 10JAN2021).
  • System birthday: 03OCT2019.
  • Operating System: LIN X64 . 

Product expiration dates: —Base SAS Software 10OCT2020 (CPU A) —SAS/STAT 10OCT2020 (CPU A) —SAS/GRAPH 10OCT2020 (CPU A) —SAS/ETS 10OCT2020 (CPU A) —SAS/OR 10OCT2020 (CPU A) —SAS/IML 10OCT2020 (CPU A) —SAS/QC 10OCT2020 (CPU A) —SAS/CONNECT 10OCT2020 (CPU A) —SAS Risk Management 10OCT2020 (CPU A) —SAS Enterprise Miner 10OCT2020 (CPU A) —SAS/Secure 168-bit 10OCT2020 (CPU A) —SAS Data Quality Server 10OCT2020 (CPU A) —SAS High-Performance Forecasting 10OCT2020 (CPU A) —OR OPT 10OCT2020 (CPU A) —OR PRS 10OCT2020 (CPU A) —OR IVS 10OCT2020 (CPU A) —OR LSO 10OCT2020 (CPU A) —SAS/ACCESS Interface to DB2 10OCT2020 (CPU A) —SAS/ACCESS Interface to Oracle 10OCT2020 (CPU A) —SAS/ACCESS Interface to SAP ASE 10OCT2020 (CPU A) —SAS/ACCESS Interface to PC Files 10OCT2020 (CPU A) —SAS/ACCESS Interface to ODBC 10OCT2020 (CPU A) —SAS/ACCESS Interface to R/3 10OCT2020 (CPU A) —SAS/ACCESS Interface to Teradata 10OCT2020 (CPU A) —SAS/ACCESS Interface to Microsoft SQL Server 10OCT2020 (CPU A) —SAS/ACCESS Interface to MySQL 10OCT2020 (CPU A) —SAS Data Quality Server – All Languages 10OCT2020 (CPU A) —Text Miner for Danish 10OCT2020 (CPU A) —Text Miner for Dutch 10OCT2020 (CPU A) —Text Miner for Finnish 10OCT2020 (CPU A) —Text Miner for French 10OCT2020 (CPU A) —Text Miner for German 10OCT2020 (CPU A) —Text Miner for Italian 10OCT2020 (CPU A) —Text Miner for Portuguese 10OCT2020 (CPU A) —Text Miner for Spanish 10OCT2020 (CPU A) —Text Miner for Swedish 10OCT2020 (CPU A) —Text Miner for Polish 10OCT2020 (CPU A) —Text Miner for Japanese 10OCT2020 (CPU A) —Text Miner for Arabic 10OCT2020 (CPU A) —Text Miner for Russian 10OCT2020 (CPU A) —Text Miner for Korean 10OCT2020 (CPU A) —SAS Size Profiling 10OCT2020 (CPU A) —SAS Pack Optimization 10OCT2020 (CPU A) —Text Miner for Croatian 10OCT2020 (CPU A) —Text Miner for Norwegian 10OCT2020 (CPU A) —Text Miner for Slovak 10OCT2020 (CPU A) —Text Miner for Slovenian 10OCT2020 (CPU A) —Text Miner for Czech 10OCT2020 (CPU A) —Text Miner for Greek 10OCT2020 (CPU A) —Text Miner for Hebrew 10OCT2020 (CPU A) —Text Miner for Hungarian 10OCT2020 (CPU A) —Text Miner for Romanian 10OCT2020 (CPU A) —Text Miner for Thai 10OCT2020 (CPU A) —Text Miner for Turkish 10OCT2020 (CPU A) —Text Miner for Chinese 10OCT2020 (CPU A) —Text Miner for Indonesian 10OCT2020 (CPU A) —Text Miner for Vietnamese 10OCT2020 (CPU A) —Text Analytics for Farsi 10OCT2020 (CPU A) —Text Analytics for Hindi 10OCT2020 (CPU A) —Text Analytics for Tagalog 10OCT2020 (CPU A) —SAS Model Manager 10OCT2020 (CPU A) —SAS/IML Studio 10OCT2020 (CPU A) —SAS Workspace Server for Local Access 10OCT2020 (CPU A) —SAS Workspace Server for Enterprise Access 10OCT2020 (CPU A) —SAS/ACCESS Interface to Netezza 10OCT2020 (CPU A) —SAS Scoring Accelerator for Teradata 10OCT2020 (CPU A) —SAS/ACCESS Interface to Greenplum 10OCT2020 (CPU A) —SAS/ACCESS to Hadoop 10OCT2020 (CPU A) —SAS/ACCESS to Vertica 10OCT2020 (CPU A) —SAS/ACCESS to Postgres 10OCT2020 (CPU A) —SAS/ACCESS to Impala 10OCT2020 (CPU A) —SAS/ACCESS to HAWQ 10OCT2020 (CPU A) —SAS/ACCESS to Amazon Redshift 10OCT2020 (CPU A) —DataFlux Driver for Base SAS 10OCT2020 (CPU A) —High Performance Suite 10OCT2020 (CPU A) —SAS High-Performance Risk Engine Server 10OCT2020 (CPU A) —SAS High-Performance Statistics 10OCT2020 (CPU A) —SAS High-Performance Econometrics and Time Series 10OCT2020 (CPU A) —SAS Event Stream Processing 10OCT2020 (CPU A) —SAS Visual Analytics Hub 10OCT2020 (CPU A) —SAS Visual Analytics Services 10OCT2020 (CPU A) —Score Publish Hadoop 10OCT2020 (CPU A) —SAS/ACCESS to SAP HANA 10OCT2020 (CPU A) —SAS Visual Analytics Server Components 10OCT2020 (CPU A) —SAS Data Quality Accelerator for Teradata 10OCT2020 (CPU A) —SAS Visual Statistics Mid-tier 10OCT2020 (CPU A) —Visual Analytics Explorer 10OCT2020 (CPU A) —Cloud Analytic Services 10OCT2020 (CPU A) —Vis Investigator Alerts Svc 10OCT2020 (CPU A) —Vis Invstgtr Srch Disc Svc 10OCT2020 (CPU A) —Visual Investigator 10OCT2020 (CPU A) —Vis Invstgtr Entity Svc 10OCT2020 (CPU A) —Machine Learning Procedures 10OCT2020 (CPU A) —Common Analytic Procedures 10OCT2020 (CPU A) —Advanced Analytics Statistics 10OCT2020 (CPU A) —Text Mining Process 10OCT2020 (CPU A) —SAS DMML Setinit 10OCT2020 (CPU A) —Time Series Model Procs 10OCT2020 (CPU A) —Forecast Reconcil Procs 10OCT2020 (CPU A) —Time Series Info Procs 10OCT2020 (CPU A) —SAS Econometrics Procedures 10OCT2020 (CPU A) —Optimization Procedures 10OCT2020 (CPU A) —Event Stream Analytics 10OCT2020 (CPU A) —SAS Event Stream Manager 10OCT2020 (CPU A) —DM DQ Orderable (Viya) 10OCT2020 (CPU A) —SAS Data Preparation 10OCT2020 (CPU A) —Text Analytics UI Setinit 10OCT2020 (CPU A) —Data Agent Service 10OCT2020 (CPU A) —Forecasting Procedures 10OCT2020 (CPU A) —Mobile Investigator 10OCT2020 (CPU A) —Analytics for IoT 10OCT2020 (CPU A) —Time Series External Language 10OCT2020 (CPU A) —SAS Adaptive Learning and Intelligent Agent 10OCT2020 (CPU A) —Data Connector SAS Data Sets 10OCT2020 (CPU A) —Data Connector to DB2 10OCT2020 (CPU A) —Data Con Accel Hadoop 10OCT2020 (CPU A) —Data Con Accel Teradata 10OCT2020 (CPU A) —Data Connector to Hadoop 10OCT2020 (CPU A) —Data Connector to Impala 10OCT2020 (CPU A) —Data Connector to ODBC 10OCT2020 (CPU A) —Data Connector to Oracle 10OCT2020 (CPU A) —Data Connector to PC Files 10OCT2020 (CPU A) —Data Connector to Postgres 10OCT2020 (CPU A) —CAS DFeeder EmbProc Switch 10OCT2020 (CPU A) —TK Extensions for CAS DFeed 10OCT2020 (CPU A) —Data Connector to Teradata 10OCT2020 (CPU A) —TK Ext for Amazon Redshift 10OCT2020 (CPU A) —TK Ext for Impala 10OCT2020 (CPU A) —TK Ext for HAWQ 10OCT2020 (CPU A) —TK Ext for SAP HANA 10OCT2020 (CPU A) —TK Ext for Oracle 10OCT2020 (CPU A) —TK Ext for Greenplum 10OCT2020 (CPU A) —TK Ext for HadoopHive 10OCT2020 (CPU A) —TK Ext for DB2 10OCT2020 (CPU A) —TK Ext for Netezza 10OCT2020 (CPU A) —TK Ext for Teradata 10OCT2020 (CPU A) —TK Ext for MySQL 10OCT2020 (CPU A) —TK Ext for PostgreSQL 10OCT2020 (CPU A) —TK Ext for ODBC 10OCT2020 (CPU A) —TK Ext for MS SQL Server 10OCT2020 (CPU A) —CAS Web Media Data Feeder 10OCT2020 (CPU A) —Data Connector to SAP HANA 10OCT2020 (CPU A) —TK Ext for Vertica 10OCT2020 (CPU A) —Data Connector to Amazon Redshift 10OCT2020 (CPU A) —Data Connector to Microsoft SQL Server 10OCT2020 (CPU A) —Data Connector to SPDE 10OCT2020 (CPU A) —Data Connector to MySQL 10OCT2020 (CPU A) —SAS/ACCESS to Spark 10OCT2020 (CPU A) —TK Ext for Spark 10OCT2020 (CPU A) —Data Connector to Spark 10OCT2020 (CPU A) —Data Con Accel Spark 10OCT2020 (CPU A) —SAS/ACCESS to JDBC 10OCT2020 (CPU A) —TK Ext for JDBC 10OCT2020 (CPU A) —Data Connector to JDBC 10OCT2020 (CPU A) —Data Connector to Vertica 10OCT2020 (CPU A) —Text Analytics Kazakh 10OCT2020 (CPU A) —Intel Investgatn Mgmt 10OCT2020 (CPU A) —Base SAS Software 10OCT2020 (CPU B) —Threaded Kernel Extensions for Central Analytic Server 10OCT2020 (CPU B) —Base SAS Software 10OCT2020 (CPU C) —Time Frequency Analysis 10OCT2020 (CPU C) —Time Series Analysis 10OCT2020 (CPU C) —Simple Forecasting Service 10OCT2020 (CPU C) —Automated Time Series Model 10OCT2020 (CPU C) —Time Series Utilities 10OCT2020 (CPU C) —Time Series Modeling 10OCT2020 (CPU C) —Forecasting Time Filters 10OCT2020 (CPU C) —Forecast UI Setinit 10OCT2020 (CPU C) —Decision Microservice 10OCT2020 (CPU C) —Rulesets Microservice 10OCT2020 (CPU C) —CAS Action Set for Aggregation 10OCT2020 (CPU C) —CAS Action Set for Bayesian Network Classifier 10OCT2020 (CPU C) —Action Set for Boolean Rule Extraction 10OCT2020 (CPU C) —CAS Action Set for Cardinality 10OCT2020 (CPU C) —CAS Action Set for COUNTREG Messages 10OCT2020 (CPU C) —CAS Action Set for Deep Neural Networks 10OCT2020 (CPU C) —CAS Action Set for DS2 10OCT2020 (CPU C) —CAS Action Set for Decision Tree 10OCT2020 (CPU C) —Action Set for FEDSQL 10OCT2020 (CPU C) —CAS Action Set for simple one-off Time Series 10OCT2020 (CPU C) —CAS Action Set for K-Means Cluster Analytics 10OCT2020 (CPU C) —CAS Action Set for Streaming Data 10OCT2020 (CPU C) —CAS Action Set for Data Mining, Machine 10OCT2020 (CPU C) —CAS Action Set for Artificial Neural Net 10OCT2020 (CPU C) —CAS Action Set for Nonlinear Models 10OCT2020 (CPU C) —CAS Action Set for OPTMINER 10OCT2020 (CPU C) —Action Set for Parsing and Categorization 10OCT2020 (CPU C) —CAS Action Set for principal component analysis 10OCT2020 (CPU C) —Action Set for Reconcile 10OCT2020 (CPU C) —CAS Action Set for Regression Modeling 10OCT2020 (CPU C) —CAS Action Set for Real-Time Entity Generation 10OCT2020 (CPU C) —CAS Action Set for Sampling 10OCT2020 (CPU C) —CAS Action Set for Full Text Search 10OCT2020 (CPU C) —CAS Action Set for Sentiment Analysis 10OCT2020 (CPU C) —CAS Action Set for Sequence 10OCT2020 (CPU C) —Action Set for Severity Modeling 10OCT2020 (CPU C) —CAS Action Set for Common Code 10OCT2020 (CPU C) —Action Set for Support Vector Machines 10OCT2020 (CPU C) —CAS Action Set for Time Series Processing 10OCT2020 (CPU C) —CAS Action Set to Implement Factorization 10OCT2020 (CPU C) —Action Set for Transpose 10OCT2020 (CPU C) —CAS Action Set for Text Mining 10OCT2020 (CPU C) —CAS Action Set for Variable Reduce 10OCT2020 (CPU C) —CAS Action Set Recommender 10OCT2020 (CPU C) —CAS Action Set for midTierServices 10OCT2020 (CPU C) —CAS Action Set Soc Ntwk Analys 10OCT2020 (CPU C) —CAS Action Set Network Common 10OCT2020 (CPU C) —CAS Action Set for Deep Learning 10OCT2020 (CPU C) —CAS Action Set Network Opt 10OCT2020 (CPU C) —CAS Action Set QKB Management 10OCT2020 (CPU C) —CAS Action Set Data Mgt Cluster 10OCT2020 (CPU C) —CAS Action Set ASTORE Scoring 10OCT2020 (CPU C) —CAS Action Set for Computer Vision 10OCT2020 (CPU C) —CAS Action Set Model Publishing 10OCT2020 (CPU C) —Action Set Stat Graph Comp 10OCT2020 (CPU C) —CAS Action Set Data Profile 10OCT2020 (CPU C) —ActionSet Decision Tree Adv 10OCT2020 (CPU C) —CAS Action Set Parsing Adv 10OCT2020 (CPU C) —CAS Action Set Txt Mining Adv 10OCT2020 (CPU C) —CAS Action Set Nearest Neighbor 10OCT2020 (CPU C) —CAS Action Set Variable Cluster 10OCT2020 (CPU C) —CAS Action Set Rule Mining 10OCT2020 (CPU C) —CAS Action Set SemiSuper Learn 10OCT2020 (CPU C) —CAS Action Set Optimization 10OCT2020 (CPU C) —CAS Action Set Clustering ESP 10OCT2020 (CPU C) —CAS Action Set Time Series Info 10OCT2020 (CPU C) —CAS Action Set Forecast Override 10OCT2020 (CPU C) —CAS Action Set Time Frequency 10OCT2020 (CPU C) —CAS Action Set Copula Modeling 10OCT2020 (CPU C) —CAS Action Set Panel Dat Regress 10OCT2020 (CPU C) —CAS Action Set QLIM Models 10OCT2020 (CPU C) —CAS Action Set Vector Data Desc 10OCT2020 (CPU C) —CAS Action Set Robust PCA 10OCT2020 (CPU C) —CAS Action Set PLS 10OCT2020 (CPU C) —CAS Action Set QuantReg 10OCT2020 (CPU C) —CAS Action Set Planning Service 10OCT2020 (CPU C) —CAS Action Set Comp Symb Diff 10OCT2020 (CPU C) —CAS Action Set DeepRecur NeurNet 10OCT2020 (CPU C) —CAS Action Set Multnom Discrete 10OCT2020 (CPU C) —CAS Action Set Hid Markov Model 10OCT2020 (CPU C) —CAS Action Set Spatial Regress 10OCT2020 (CPU C) —CAS Action Set Agg Loss Model 10OCT2020 (CPU C) —CAS Action Set CASRMV 10OCT2020 (CPU C) —CAS Action Set CASCORR 10OCT2020 (CPU C) —CAS Action Set CASFREQ 10OCT2020 (CPU C) —CAS Action Set GAM 10OCT2020 (CPU C) —CAS Action Set Mixed 10OCT2020 (CPU C) —CAS Action Set PHREG 10OCT2020 (CPU C) —CAS Action Set CASSPC 10OCT2020 (CPU C) —CAS Action Set LDA Topic Model 10OCT2020 (CPU C) —CAS Action Set Stability Monitoring 10OCT2020 (CPU C) —CAS Action Set Time Filters 10OCT2020 (CPU C) —CAS Action Set Parsing VisTxtAn 10OCT2020 (CPU C) —CAS Action Set Txt Min Vis Anlyt 10OCT2020 (CPU C) —CAS Action Set BLRule VisAnlyt 10OCT2020 (CPU C) —CAS Action Set SentAnlys VisAnly 10OCT2020 (CPU C) —CAS Action Set Search VisAnlyt 10OCT2020 (CPU C) —CAS Action Set Txt Mining Topics 10OCT2020 (CPU C) —CAS Action Set Txt Mining Util 10OCT2020 (CPU C) —CAS Action Set Txt Mining RLDisc 10OCT2020 (CPU C) —CAS Action Set Txt Mining RLDev 10OCT2020 (CPU C) —CAS Action Set Txt Mining RLScor 10OCT2020 (CPU C) —CAS Action Set VisAnlyt CRF 10OCT2020 (CPU C) —CAS Action Set Vis Anlyt TxtSum 10OCT2020 (CPU C) —CAS Action Set for Smart Data 10OCT2020 (CPU C) —CAS Action Set Biomed Img Prcs 10OCT2020 (CPU C) —CAS Action Set PSEUDO Local 10OCT2020 (CPU C) —CAS Action Set Mdl-Based Clustr 10OCT2020 (CPU C) —CAS Action Set for Audio 10OCT2020 (CPU C) —CAS Action Set for Speech to Text 10OCT2020 (CPU C) —CAS Action Set for Univariate Time Series Analysis 10OCT2020 (CPU C) —CAS Action Set for Economic Capital Modeling 10OCT2020 (CPU C) —CAS Action Set Ind. Cmpnt Anlys 10OCT2020 (CPU C) —CAS Action Set for tSNE 10OCT2020 (CPU C) —CAS Action Set Multi-task Learn 10OCT2020 (CPU C) —CAS Action Set for probML 10OCT2020 (CPU C) —CAS Action Set Mach Lrning Tool 10OCT2020 (CPU C) —CAS Action Set Risk Methods 10OCT2020 (CPU C) —CAS Action Set Risk Results 10OCT2020 (CPU C) —CAS Action Set Risk Run 10OCT2020 (CPU C) —CAS Action Set Risk Sim 10OCT2020 (CPU C) —Action Set for Automated Machine Learning 10OCT2020 (CPU C) —Action Set for Composite Interpretability 10OCT2020 (CPU C) —Action Set for Model Interpretability 10OCT2020 (CPU C) —Action Set for Machine Learning for Sparse Data 10OCT2020 (CPU C) —Subset of Action Set for Deep Learning 10OCT2020 (CPU C) —Time Series MOTIF Analysis 10OCT2020 (CPU C) —Singular Spectrum Analysis 10OCT2020 (CPU C) —TimeSeries Distance Measures 10OCT2020 (CPU C) —Subspace Tracking 10OCT2020 (CPU C)

原创文章: ”难道是SAS10?云分析服务时代的到来“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/454

01 7月 17 何种方式最有效地得到数据表的观测数?


何种方式最有效地得到数据表的观测数?
reproduced by sxlion

导读:SASor论坛上经典对话很多,以前用爬虫把整个网站down下来过一次,可惜没时间整理,然后电脑升级,最后就丢失了。每每想重温论坛,都无法得到原文。网络上仅仅转载了部分的对话,想起来真是可惜。现在仅凭一些时有时无的记忆点,在网络重搜出来一些经典对话,整理分享一下【论坛沉钩001】。

QKAIWEI:
1

1
2
3
%let rc=%sysfunc(open(yourTable));
%let nobs=%sysfunc(attrn(&rc,nobs));
%let rc=%sysfunc(close(&rc));

2

1
2
3
proc sql noprint;
select count(1) into:nobs from yourTable;
quit;

3

1
2
3
4
5
6
data _null_;
point=0;
set yourTable point=point nobs=n;
call symput('nobs',n);
stop;
run;

4

others???

SAS_DREAM:

1

1
2
3
%let rc=%sysfunc(open(yourTable));
%let nobs=%sysfunc(attrn(&rc,nobs));
%let rc=%sysfunc(close(&rc));

– open, attrn是SCL函数在base里的调用方式,需要测试一下对AF license的依赖性,该方法从表头meta区读取信息,与数据大小无关,效率较高。不过attrn要建立scl list,稍费周折。

2

1
2
3
proc sql noprint;
select count(1) into:nobs from yourTable;
quit;

– 顺序遍历表,数数记录,不从表头取信息,表越大,时间越长。

3

1
2
3
4
5
6
data _null_;
point=0;
set yourTable point=point nobs=n;
call symput('nobs',n);
stop;
run;

– 考虑一下空表情形:

1
2
3
4
5
6
%let nobs = 0;
data _null_;
set yourTable (drop=_all_) nobs=n;
call symput('nobs',n);
stop;
run;

如果空表,n是取不到值的,所以宏obs要赋初值。
(drop=_all_)当表列数很多又是通过远程提交时,这个选项会省时间。
point=0不用也可,因为stop会限制data step在一条记录以后就停。

这个方法也是直接从表头meta区取观测数,与表大小无关。

4 others???
你已经知道这么多方法,除了第二条没有什么理由去用,第一,三方法都是既简洁准确又不用一秒钟就精确搞定,余下的时间,不如去想其它有意思的专题了。

IMOEN:

1
2
3
4
5
PROC SQL NOPRINT;
SELECT NOBS INTO: NUM_OF_ROW
FROM SASHELP.VTABLE
WHERE LIBNAME="SASHELP" AND MEMNAME="CLASS";
QUIT;%PUT &NUM_OF_ROW;

这种方法也是直读metadata,优点是不仅仅可以用来读出纪录数,还可读出大量有用的表信息。打开sashelp.vtable看一看就知道了。

SAS_DREAM:

imoen 写到:
1
2
3
4
5
PROC SQL NOPRINT;
SELECT NOBS INTO: NUM_OF_ROW
FROM SASHELP.VTABLE
WHERE LIBNAME="SASHELP" AND MEMNAME="CLASS";
QUIT;%PUT &NUM_OF_ROW;

这种方法也是直读metadata,优点是不仅仅可以用来读出纪录数,还可读出大量有用的表信息。打开sashelp.vtable看一看就知道了。

透过vtable这样一个集中元数据表来访问表信息,对于一次性访问多个表的多种信息,是很方便的。

但是就每次零星地考察单表记录数而言,有些地方似乎值得进一步考量:
sashelp.vtable是sashelp库里的一个sql view, 应该是有后台管理进程辅助更新。对于通过vtable访问某个表的记录数,可能有几个担心:
1,在vtable中搜寻一个单表的信息需要进行View的retrieve遍历,还要进行逐条比对(WHERE LIBNAME=”SASHELP” AND MEMNAME=”CLASS”);尚不清楚vtable view的生成代码是什么(感觉像是Proc contents类似的操作生成的),但是该view的建立应该很难高效地利用针对“libname”和”memname”的索引,这样,搜寻访问效率可能随着view retrieve遍历的表记录增加而降低。
当系统中总的表数增大到一个较大的数量级,这在大型数据仓库系统,尤其是系统安装的模块较多,或者存在大量OLAP, EM projects时很有可能发生,vtable中包含的内容就会很多,因为它的内容涵盖系统中所有的表,甚至临时表;此时如果又用不上索引,vtable的访问速度会相当慢,事实上,用VT sashelp.vtable时已会有所感觉。
2,对于服务器端的应用,如果多个连接程序需要同时访问vtable取信息时,可能会进一步面临效率问题
3,当服务器端系统中一方面不断生成和删除大量表,同时有很多远程连接需要访问vtable取信息时,vtable所透视的内容可能面临更新和取用的双重压力

不过对于一般应用情形,都是OK了。 上面的担心只是瞎猜而已… …

IMOEN:

View只在被访问时才生成数据。同时,SAS的串行查询,令到冲突几乎不可能发生。

由于都是访问metadata,即使系统中有数千个表,也是秒级的操作。在大数据量ETL优化时,这类秒级操作基本上是忽略的。程序的可读性和通用性更加重要。

在主流DBMS中,SQL优化器在遇到qkaiwei第二种方法时,都会直接查询meta,而不是遍历原数据。如果数据引擎用的是其他DBMS,最快的方法是用SQL Pass-through。例如:

1
2
3
4
5
6
Proc SQL;
CONNECT TO ODBC AS DW ();SELECT nob INTO :NO_OF_ROW
FROM CONNECTION TO DW
(SELECT count(*) AS nob
FROM a_table);DISCONNECT FROM DW;
QUIT;

如果在SAS里面Count(*),立刻就会把所有的数据,通过你的接口引擎,在SAS中遍历。两种方法的速度有本质的差别。

SAS_DREAM:

imoen 写到:
在主流DBMS中,SQL优化器在遇到qkaiwei第二种方法时,都会直接查询meta,而不是遍历原数据。如果数据引擎用的是其他DBMS,最快的方法是用SQL Pass-through。例如:

1
2
3
4
5
6
Proc SQL;
CONNECT TO ODBC AS DW ();SELECT nob INTO :NO_OF_ROW
FROM CONNECTION TO DW
(SELECT count(*) AS nob
FROM a_table);DISCONNECT FROM DW;
QUIT;


如果在SAS里面Count(*),立刻就会把所有的数据,通过你的接口引擎,在SAS中遍历。两种方法的速度有本质的差别。

说得有道理!

感谢Q版,大清早信手拈来就给大家一个好玩的话题!
今天和vtable玩了个游戏,发现一些现象很有趣:

1,先造10000个表在系统里

1
2
3
4
5
6
7
8
9
10
11
12
13
%let tableNum = 10000;

%macro tables();
data
%do i=1 %to &tableNum;
test&i
%end;
;
set sashelp.class;
run;
%mend tables;

%tables;

2,再去找其中TEST100的观测数
set nobs跑了1秒

1
2
3
4
5
6
7
8
9
%let nobs=0;

data _null_;
set TEST100(drop=_all_) nobs=rows;
call symput('nobs',rows);
stop;
run;

%put &nobs;

NOTE: There were 1 observations read from the data set WORK.TEST100.
NOTE: DATA statement used:
real time 1.00 seconds
cpu time 0.00 seconds

FROM SASHELP.VTABLE跑了29秒

1
2
3
4
5
PROC SQL;
SELECT NOBS
FROM SASHELP.VTABLE
WHERE LIBNAME="WORK" AND MEMNAME="TEST100";
QUIT;

NOTE: PROCEDURE SQL used:
real time 29.10 seconds
cpu time 0.17 seconds

如果再运行一遍,由于cache的机理,两个方法都是不到1秒了。

猜想:
vtable被访问时的应该是动态收集系统中所有的表meta,搜集的耗时与表的数目有关,而且不论是访问那个表的信息(where 。。。),都是先去收集系统中所有的表meta;否则,利用WHERE LIBNAME=”WORK” AND MEMNAME=”TEST100″取一条记录,不会在系统表数目增长时产生显著的响应下降(系统表1000个时,就是2,3秒而已)
而set nobs的方法与系统表数目无关。
因此,极端情况下vtable还是有响应效率问题的,不过算不了什么。

结论:
1万个系统表的状况还是比较罕见的,而且vtable的响应也是可以接受(机器快了更是影响比较小),如Imoen所说,使用vtable方法比较通用和易读,也不致在效率上产生实质问题。
只取观测数的话,set nobs方法仍是比较高效的。
如果愿意,编个macro把set nobs和vtable的优势结合,也是很好玩的。

提示:
这个测试情形必须保证消除cache效应,方法可以是在每种方法测试之前,运行一个大进大出的summary,搞到out of memory更好,会把之前测试的cache清得一干二净,各种方法的真实效率才会显现,在其它类似测试中也如是。

QKAIWEI:
我其实一直想努力使sasor向这个方向走:画一个圈,挖一口井。

我一般使用data步的做法,比较省时,而且sas语言上data步是最稳定的,如果用别的,说不定哪里就来个bug。

如果是在scl中,我一般用
dsid=open(talbename);
nobs=attrn(dsid,’nobs’);

接下来,我可能要前移游标,做变量取值操作。但是scl语法不能操作sas server上的表,使用%sysfunc一般也是折衷之计。

在远程sas server如果想得到scl的同样效果,我的做法是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
rsubmit;
%let rc=%sysfunc(open(tablename));
%let nobs=%sysfunc(attrn(&rc,nobs));
%let rc=%sysfunc(close(&rc));

data _null_;
nobs=&nobs;
do p=1 to nobs
set my table point=p;
call symput('a',a);
call symput('b',b);
call execute('%macro1(&a)');
call execute('%macro2(&b)');
end;
stop;run;
endrsubmit;

proc sql在使用v系列的视图确实相比其他方法比较耗费时间,当然这个差别要考虑机器性能。
我以前的电脑在使用这一方法的时候总要顿一下。
当然imoen的说的也是,就是在读取其他数据库的时候,如oracle上的表时,这是scl 以及data步不能实现的。

在sas server上分组取观测数时,proc sql也很有意思,有的时候也用一下,比较方便。

1
2
3
4
5
6
rsubmit;
proc sql noprint;
select count(1) into:group_obs separated by ',' from tblname group by var;
quit;
&sysrput group_obs=&group_obs /*caution the length of macro variable*/
endrsubmit;

接下来有个%superq的用法,然后循环,用%scan分别取值。
我去做饭,不能多写了,希望多开一些这样的题目,做深入的讨论。
两位周末快乐!

原创文章: ”何种方式最有效地得到数据表的观测数?“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/448


17 1月 12 SAS资源资讯博客精华汇总 2011

2011年网站年末盘点

2012农历新年马上就要到了,看着湖南卫视的小年夜春晚,不禁想着给自己的博客网站做个盘点,这个想法其实在大家年会的时候就想做了,趁奥尼尔还没出场,赶紧把这个盘点给整了,有些事现在不做,以后永远就不会做了。

 自从2010年9月3日开始至今天(2012.1.17),本博客网站共发布了60篇博文,其中2010年16篇,2011年42篇,2012年是2篇,累计访问IP近2W,PV近10W(因为用插件统计,所以有一定的水分,需要打折下)。因为没有类似的博客网站数据和其他类型网站的数据(都没有公布),所以无法横向和纵向比较。大家也随便看看,消遣一下吧,反正有水分。

本站文章包括自己原创评论、网络资源整理、工作信息、书籍点评推荐、转载文章和外文翻译等等内容,下面对本站博文的内容分类和精选才是最真才实料的干货。

史上最强悍的十篇SAS资源整理博文

  1. 最全的SAS9.2函数列表一
  2. 2010年10月近期SAS职位招聘列表
  3. SAS中文书籍清单 1991-2010年
  4. 学习和提高SAS编程和应用的好出处——博客资源(2011年扩充版)
  5. 学习SAS编程技术的好出处——网页资源
  6. 学习和讨论SAS技术的好出处——论坛资源
  7. 学习SAS画图的好出处
  8. SAS程序员必看的10个中文网站(另10个英文)
  9. 最新最全的SAS公司官方博客(2011年)
  10. 新浪微博资讯整理列表

(更多…)

29 9月 11 SAS程序员必看的10个中文网站(另10个英文)


据个人多年的SAS学习经历,下面推荐10个SAS程序员必看的中文网站:

1,Google.hk                 强悍的技术搜素引擎       http://www.google.com.hk/

2,SAS资源资讯列表      SAS综合信息博客           http://saslist.net/

3,SAS中文论坛            人气SAS论坛                  http://mysas.net/forum

4,人大经济论坛 SAS版   人气SAS论坛                http://bbs.pinggu.org/forum-68-1.html

5, (更多…)

原创文章: ”SAS程序员必看的10个中文网站(另10个英文)“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/204


29 8月 11 最新最全的SAS公司官方博客(2011年)


博客作为一种很好的信息传播媒体,SAS公司前几年开始尝试一些博客信息公布,刚开始只有个别员工,后来很多部门也开始建立机构的团队博客。

随着SAS新版本9.3的问世,SAS公司更改了原来SAS博客地址,原来为:http://blogs.sas.com,现在更改为:http://blogs.sas.com/content/ 。订阅过这些博客的TX们,赶紧更改feed的地址啊,老地址的博文将不再更新了。

这些都来自SAS公司内部人员,可以说是第一手信息,新鲜又权威,就是有点多,SAS粉们可以对感兴趣的选择性关注下。

下面是SAS公司的博客列表:

(更多…)

原创文章: ”最新最全的SAS公司官方博客(2011年)“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/181


13 8月 11 公益活动: SAS(统计分析软件)维基计划


前言:

如果说论坛BBS是一群人的讨论会,那么博客Blog是一个人的独角戏,而维基Wiki则是一群人共同编写一部大辞典。

维基作为一项公益性的共享项目, “平等”、“开放”、“协作”、“共享”是维基精神的核心理念。维基百科全书的创始人Jimmy Wales当初创建维基百科的初衷是建立一个网上的百科全书(中文版本),而事实上图书馆中已经有大英百科全书。尽管如此,维基百科全书经过8年的发展,英文版就含有280万篇文章,是大英百科全书的5倍多。因为把百科全书搬到网络上,大家可以更加方便的使用,百科本身也可以在大家都维护下不断更新,保持时新性。

正文:

创建SAS维基的目的是建立一个专注于统计分析软件的词典,因为图书馆并没有一本统计软件的百科全书,维基百科全书上只是简单的介绍见:统计软件,显然并不能满足专业化的细节需求。维基百科全书本身就是一种实用的工具,然后大百科的分类目录太长,不方便扩展和精细化的操作,因此有必要适当的建立专业而全面的统计软件小百科。

下面是SAS维基的首页面截图:

(更多…)

原创文章: ”公益活动: SAS(统计分析软件)维基计划“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/166


27 4月 11 学习SAS画图的好出处


这里的SAS画图是指用SAS编程代码的方式来作图。

虽然用SAS作图很辛苦,但是有时为了保持系统性和自动化,不得不用SAS来作图。当然,SAS作图并非儿戏,它也能做出非常专业精美的图形

下面介绍几个EXCEL作图和SAS画图相关的资源。

之所以学习EXCEL,是为了入门,因为作图设计到颜色搭配、图表类型选择、表达形式和风格,以及怎么匹配不同的场合等等很多问题,本身就是门专业技术活;然后就是怎么将这些图用SAS代码来实现了。

(更多…)

原创文章: ”学习SAS画图的好出处“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/124


03 4月 11 学习和提高SAS编程和应用的好出处——博客资源(2011年扩充版)


本博去年(2010年)9月6日收集了几个有关SAS编程和应用的博客,这里进行扩充,并且增加了微博这种新的博客形式。

博客和微博都是以一种个人发布的形式传播信息。博客传递非常快和信息大;微博则是短和更快。

传统书籍和网页都跟不上步伐,因此这里倾力收集了目前主要是中文或华人的SAS博客,以后会逐渐增加更多英文博客和更全面的相关博客,不断更新, 希望能够满足大家的需求。 (更多…)

原创文章: ”学习和提高SAS编程和应用的好出处——博客资源(2011年扩充版)“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/119


07 10月 10 七个SAS公司员工博客


尽管目前大型博客站点纷纷倒闭,但是博客这种非常个性化的形式,不会过时,还是非常适合技术人员来分享技术。我觉得很多大型综合性的博客站不容易个性化,不好定位而导致关门,而个人博客如果定位某一门技术,也许受众很小,但也是能提高所在行业知名度的。当然写博客是件辛苦的事情,大部分都是义务劳动,汗水换荣誉。不过这次推出的是有公司给博主付费的博客,那就是SAS公司。                http:// saslist.net

SAS公司博客最近新增了两位员工博客,一个是关于IML主题,一个是关于JMP主题。毫无疑问,他们是日常工作就是与这些内容打交道,通俗点,他们就是专门干这个的,当然他们的技术博客也值得订阅学习,也可以在博客留言问问题交流,提供技术支持本来就是他们的工作一部分。下面除了给出新开了两个博客,我另外挑选了5个技术性非常强的博客,一个7个,如下:                             http://saslist.net

Rick Wicklin 新开博客

IML模块/studio开发者  Statistical Programming with SAS/IML Software 作者  http://blogs.sas.com/iml/

JMP 新开博客
有关JMP软件 数据展现、six sigma、实验设计及统计            http://blogs.sas.com/jmp/
负责support.sas.com更新                        http://blogs.sas.com/supportnews/
内容为Enterprise Guide, 微软办公 Add-In 和EM. SAS for Dummies作者 http://blogs.sas.com/sasdummy/
SAS用户全球论坛  http://blogs.sas.com/sgf/
SAS培训、认证,一些技巧建议 http://blogs.sas.com/sastraining/
文本挖掘,非结构性文本 团体博客 http://blogs.sas.com/text-mining/
————————————————
SAS公司陆续推出员工博客,值得我们关注。

原创文章: ”七个SAS公司员工博客“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/88


06 9月 10 学习和提高SAS编程和应用的好出处——博客资源


博客资源 (随机排序)

我所订阅到SAS博客

http://blogs.sas.com/sasdummy/ SAS公司员工博客

主要是将EG模块的。博客作者曾经写过一本初级的SAS书《SAS for Dummies

http://sxlion.spaces.live.com/default.aspx 一个SASor的技术空间

一个SAS爱好者用SAS编程解决各种数据清理,数据整理和解决各种实际问题。

http://sxlion.blog.sohu.com/ 一个SASor的图表空间

和上面是同一个作者,这个博客宣称用SAS画出所能看到的所有数据图形,主要侧重于商业,学术和工业图表,里面有用SAS模仿商业周刊风格的精美图表。

http://sas-programming.blogspot.com SAS Programming for Data Mining Applications

oloolo的个人技术博客,专注于用BASE,STAT等等编程模块实现与EM同等功能的各种数据挖掘功能的算法,相当强大,SAS主办的2010年数据挖掘大会上作为官方推荐资源。博客提供了许多用BASE编的挖掘算法, 可惜国内看不到,需翻墙。

http://sugiclub.blogspot.com/ SUGI CLUB — SAS User Group International Club

这个博客,文章是博主挑出各SUG(SAS用户组,在网页资源有解释)的一些文章进行翻译,做少量补充,内容涉及范围较广。但是需要翻墙。

下面是几个停止更新的博客:

http://statcompute.spaces.live.com/default.aspx

博主刘文穗 WenSui Liu,现在在ebay。 曾经是最勤劳的SAS博主,产量非常大,博客文章很值得一读,都是关于市场,经济等等方面的。2010年5月后停止更新。

http://blog.csdn.net/anyjack/

博主单名一个:风    各种SAS技术,偏IT,2009年停止更新。

原创文章: ”学习和提高SAS编程和应用的好出处——博客资源“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/59