首页 文章

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

提问于
浏览
1

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

该提交是雅虎财务下拉.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

    对于API来说,最常见的是保持服务器负担过重,这是非常常见的 . This page描述了Yahoo Finance 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!发送新查询) .

  • 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 .

相关问题