特定の列のみを Open() する方法こんにちは。大きな JMP データ テーブルがある場合、特定の列にのみロードするメッセージを Open() に送信する方法はありますか?これにより、大きなファイルのロード時間が大幅に短縮されます。たとえば、次のファイルがあるとします。
Open("c:\temp\fruit.jmp");
Fruit.jmp にはさまざまな果物の種類の 200 列が含まれており、これらすべてにアクセスする必要があるとします。ただし、現時点では「Apple」という 1 つの列のみをロードする必要があるため、ファイルのロード時間が短縮されます。後続の Subset() を実行すると、最初に大きなデータ ファイルを開く必要があり、ここでの目的は、必要な列のみをロードすることでファイルのロード時間を短縮することであるため、目的が果たせません。次のようなものが機能することを期待していましたが、もちろんそうではありません。
Open("c:\temp\fruit.jmp",columns("Apple"));
提案は? thx...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=Open Database("DSN=Excel Files;DBQ=c:\temp\fruit.xls;DriverId=790;MaxBufferSize=2048;PageTimeout=5;","SELECT Apple FROM `Sheet1$`" , "フルーツ テーブル" );