如何仅 Open() 特定列您好,如果我有一个大型 JMP 数据表,有什么方法可以向 Open() 发送一条仅在特定列中加载的消息?这将大大减少大文件的文件加载时间。例如,如果我有这个文件:
打开(“c:\temp\fruit.jmp”);
假设 Fruit.jmp 包含 200 列不同水果类型,我可能需要访问所有这些内容,但目前我只需要加载一列“Apple”,从而减少文件加载时间。执行后续的 Subset() 达不到目的,因为需要首先打开大数据文件,而这里的目标是通过仅加载需要的列来减少文件加载时间。我希望像下面这样的东西会起作用,但这当然行不通:
Open("c:\temp\fruit.jmp",columns("Apple"));
建议?谢谢...dj
如何仅 Open() 特定列好吧,我想我可能已经弄清楚了。我最终找到了过去的一篇有用的帖子。我搜索了脚本指南中的所有 Open() 属性,如果不使用 Open Database() 命令,就无法执行此操作。基本上,只需先将源 .jmp 转换为 .xls 文件即可。只是想发布此内容以防对其他人有所帮助。 DJ
http://communities.sas.com/message/50379#50379
所以首先我将“fruit.jmp”转换为“fruit.xls”。这样我就可以让 JSL 使用 Excel ODBC DSN 连接和一点 SQL 代码来仅提取我需要的列。假设我的 Excel 数据表有一个工作表“Sheet1”,其中有一个名为“Apple”的列,为了节省时间,我只想加载此列,而不加载此工作表中的其他列。下面的代码可以解决这个问题:
dt=打开数据库("DSN=Excel 文件;DBQ=c:\temp\fruit.xls;DriverId=790;MaxBufferSize=2048;PageTimeout=5;","从`Sheet1$`中选择苹果","水果表" );