如何僅 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$`中選擇蘋果","水果表" );