使用SQL Passthrough工具和SAS有什么好处吗?
虽然这个问题过于宽泛,但我可以提供过于广泛的答案.
SAS中的传递SQL允许您直接与数据库通信.当您使用特定于数据库的功能时,这将变得非常有利.一个例子是Oracle的统计功能.您不必担心SAS将如何处理您的编码或翻译您的SQL.
此外,对我们来说,传递SQL需要在SAS端进行非常少的处理也是一个好处.如果您有一个非常繁忙的SAS框,您可以选择将处理逻辑直接发送到数据库.这可以在不使用Pass-through SQL的情况下实现,但在使用时可以获得更高程度的控制.
这绝不是一个详尽的好处列表,只是使用传递SQL的一些高级特权.如果您有更具体的用例,我们可以讨论编码技术的具体差异.
PROC SQL会尝试将尽可能多的逻辑传递给数据库,但有时它不能.使用在数据库中没有等效的SAS函数(或在数据库的SAS/ACCESS引擎中)将阻止将整个查询传递到数据库.当查询未完全传递到数据库时,数据将被拉入SAS并在那里处理.SQL越复杂,最终在SAS中处理的可能性就越大.这是一个比您可能意识到的更大差异的案例.
libname dbpath=dbserver user=... password=...; proc sql; create table db.new as select * from db.largedata where flag=1; quit;
这实际上(至少通过SAS 9.1.3)将所有匹配flag = 1的数据下拉到SAS,然后将其加载回数据库.它真的减慢了数百万行.
在这种情况下,您会发现显式传递速度更快.
proc sql; connect dbase (server=dbserver user=... password=...); execute (create table db.new as select * from db.largedata where flag=1) as dbase; disconnect dbase; quit;
我最近使用Oracle和一个大约250,000行的表做了一个例子.第一种方式需要20秒,第二种方式需要2秒.