我正在尝试使用PROC SQL来查询具有数亿条记录的DB2表.在开发阶段,我想在这些记录的任意小的子集上运行我的查询(例如,1000).我尝试使用INOBS来限制观察,但我相信这个参数只是限制了SAS正在处理的记录数.我希望SAS只从数据库中获取任意数量的记录(然后处理所有这些记录).
如果我自己编写SQL查询,我会简单地使用SELECT * FROM x FETCH FIRST 1000 ROWS ONLY ...(相当于SELECT TOP 1000 * FROM xSQL Server).但PROC SQL似乎没有这样的选择.获取记录需要很长时间.
问题:如何指示SAS任意限制从数据库返回的记录数.
我已经读过PROC SQL使用ANSI SQL,它没有行限制关键字的任何规范.也许SAS不想将其SQL语法转换为特定于供应商的关键字?有没有解决方法?
在SAS中删除表的最有效方法是什么?
我有一个循环和删除大量表的程序,并想知道PROC SQL之间是否存在性能差异; 和PROC DATASETS; 一次删除一个表..
或者如果有另一种方式或许???
有没有办法从这个SAS SQL查询中获取不区分大小写的不同行?...
SELECT DISTINCT country FROM companies;
Run Code Online (Sandbox Code Playgroud)
理想的解决方案包括单个查询.
结果现在看起来像:
Australia
australia
AUSTRALIA
Hong Kong
HONG KONG
Run Code Online (Sandbox Code Playgroud)
...真正需要2个不同行中的任何一行
可以大写数据,但这会以不符合此查询目的的方式不必要地更改值.
作为第三方,是否有可能开发SAS PROC?我在考虑像matlab工具箱或R包这样的东西.
我到处寻找有关如何做到这一点的信息,缺乏讨论让我相信这是不完美的.任何人都可以指出反例,最好是对所涉及的技术和业务问题有所了解吗?
我正在尝试在 SAS 结构中为金融系统数据构建数据模型。这个想法是将 ID 作为字符表达式保存在表中,然后从另一个表中为它们构建一个proc sqlwith -应该以表达式开头。应该看起来像这样:INNER JOINLIKEIDs'ID%'proc sql
proc sql;
SELECT I.*
FORM tableWithIDs X INNER JOIN tableWithData I
ON I.ID LIKE X.ID||'%'
;
quit;
Run Code Online (Sandbox Code Playgroud)
不幸的是,它应该看起来像这样:... LIKE 'X.ID%'
有没有办法在 SAS 代码中构建这样的表达式?
我需要一个理论上的答案.
想象一下,你有一个包含15亿行的表(该表是基于列的DB2-Blu创建的).
您正在使用SAS,并且您将通过使用Proc Summary类似的最小值/最大值/平均值,标准偏差值和百分位数-10,百分位数90来通过您的对等组进行一些统计.
例如,您有30.000个对等组,并且每个对等组中有50.000个值(总计1.5亿个值).
另一种情况是,您有300万个对等组,并且每个对等组中也有50个值.所以你再次拥有15亿的价值.
如果您拥有较少的对等组但每个对等组中的值更多,它会更快吗?或者,对于更多的对等组,它会更快,但每个对等组的值会更少.
我可以测试第一个案例(每个对等组有30.000个对等组和50.000个值),大约需要16分钟.但我无法测试第二种情况.
如果我有300万个对等组,并且每个对等组中有50个值,你能否为运行时写一个近似的预测?
这个问题还有一个方面.如果我使用这些统计数据会更快Proc SQL吗?
示例代码如下:
proc summary data = table_blu missing chartype;
class var1 var2; /* Var1 and var2 are toghether peer-group */
var values;
output out = stattable(rename = (_type_ = type) drop = _freq_)
n=n min=min max=max mean=mean std=std q1=q1 q3=q3 p10=p10 p90=p90 p95=p95
;
run;
Run Code Online (Sandbox Code Playgroud) 我有一个带有一列电话号码的数据集.我想使用PROC SQL过滤此数据集WHERE,数字的长度至少为 7位数.
在普通的SQL中,我可以在数字周围应用长度函数,但它可以工作,但是在SAS中它不允许我将它应用于数字列.
我的第一直觉是将列转换为字符,然后找到它的长度,但我只能在使用该put函数时声明一个大小.但是,我甚至不知道我的数字的最大尺寸,因为我无法计算长度!
如何使用PROC SQL在SAS中找到数值的长度?
我知道在teradata或其他sql平台上你可以通过以下方式找到变量组合的计数:
从db.table中选择count(distinct x1 || x2)
这将给出x1,x2对的所有独特组合.
但是,此语法在proc sql中不起作用.
无论如何在proc sql中执行这样的计数?
谢谢.
我正在尝试在 PROC SQL 上使用一个变量,但我无法通过互联网找到正确的方法。我只想在 PROC SQL 上应用以下 T-SQL 代码:
declare @example as int;
set @example=2;
select * from {table} where {column}=@example;
go
Run Code Online (Sandbox Code Playgroud)
如何在 PROC SQL 上应用此代码?