接受比预期的路径字符串短的SAS文件名URL语句

时间:2014-02-24 08:56:18

标签: sas

我之前在此处发布了关于SAS中的“文件名URL”语句,并且在响应最大URL长度方面有一些有用的信息。我一直在努力保持提交的字符串低于2000个字符。

提交给Yahoo Finance以下载.csv文件库存数据。提交的URL采用以下格式:

http://finance.yahoo.com/d/quotes.csv?s=TIK1+TIK2+TIK3&f=ab5d6

文件路径中的TIK1等代表纳斯达克交易所的四个字符股票代码符号,而'& f ='后面的字母代表股票表现的各种不同指标。

由于SAS因长时间而返回文件名错误,因此我不得不一次将上述URL减少到200个股票行情。远远超过220,代码将无法运行。

我不明白的是,如果你包含股票代码,那么文件名少于1100个字符,它们之间的所有'+'signds以及URL的开头和开头。我应该再玩900个字符。

另外,如果SAS直接提交此请求,与Web浏览器无关,我仍然受其URL字节长度的限制吗?

由于

2 个答案:

答案 0 :(得分:0)

雅虎可能!限制为200; API最常见的是让您免受服务器负担过重的影响。 This page描述雅虎财经API(位于download.finance.yahoo.com,所以可能与你正在做的略有不同 - 但也许更适合?)在评论中建议限制为50,所以200远高于此(虽然该页面已超过2年)。

如果你还没有这样做,我建议你设置一个文件名数据集。

data have;
infile datalines truncover;
input @1 filen $2000.;
datalines;
http://finance.yahoo.com/d/quotes.csv?s=GOOG+MSFT+AAPL&f=ab5d6
;;;;
run;

data want;
set have;
infile a url filevar=filen lrecl=32767 dlm=',' dsd eov=end end=end;
do until(end);
    input price;
    output;
end;
run;

这样可以更轻松地处理多个文件名,因为您可以通过编程方式向have数据集添加行(它应该适用于任意数量的行,每次向Yahoo!发送新查询)

答案 1 :(得分:0)

如果没有返回结果,您遇到的问题可能是服务器端而不是SAS端的问题。您可能会发现,您确实需要限制您尝试的差异库存/指标数量,以及单次尝试。

如果你有9.2或更高版本,那么你可能会更幸运的替代方法是使用proc http。或者使用第三方工具,例如curl。 proc http的文档:

http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a003286808.htm

Curl(google it)是一个非常常用的程序,它会发送http请求并将结果吐出到stdout。您可以将这些结果重定向到文件,然后让SAS使用该文件。您也可以通过这种方法看到性能改进。我在过去做过这个,当http文件名不够用时,它对我来说效果很好。您可以使用x命令从SAS调用curl。