<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />剛剛請求一種將資料從外部程式移至 JMP 的方法。一般來說,我建議使用 CSV 文件,但如果壓縮是一個問題,也許還需要其他東西。這是幾個概念驗證腳本(你需要確保他們做你需要的事情)。由於我沒有外部程序,因此每個腳本分為兩部分:從表格建立 zip 文件,然後從 zip 檔案重新建立表格。這假設您可以控制外部流程如何打包資料並將資料呈現給 JMP。
重點:zip 檔案可以保存二進位(第一個範例)或可列印(第二個範例)資料。Jsl matrixToBlob 和 BlobToMatrix 速度很快。不要循環,或只循環幾列。避免對很多行的每一行進行循環。JMP 的 zip 檔案 API 附加新成員,可能會更改實際姓名為了避免較早的成員...請注意deleteFile()。不需要清除 zip (za=0);它暗示該檔案位於 JMP 之外(在磁碟上)。將數字轉換為可列印並返回的速度很慢,如果格式化值沒有足夠的數字,也可能會造成損失。
第一個腳本將原始資料以「little-endian」格式一次一行地放入 zip 檔案成員中。速度快,因為它不會來回轉換為可列印。
第二個腳本將列的格式化資料放入 zip 檔案成員中,每個成員一列。數字資料放在矩陣中,字元放在列表中。
您可以結合兩個腳本的想法。
實施例1
此範例假設二進位數字資料。應該是真的快速地。字元資料不會這樣工作......
//(此程式碼未經測試!)製作樣本數字數據
dt =新表( “人們” ,新增行( 1e7 ) ,
新專欄( “弗雷德” ,數位,連續的,格式( “最好的” , 12 ) ,公式(隨機常態() ) ) ,
新專欄( “拉爾夫” ,數位,連續的,格式( “最好的” , 12 ) ,公式(隨機常態() ) ) ,
新專欄( “喬治” ,數位,連續的,格式( “最好的” , 12 ) ,公式(隨機常態() ) , )
) ;
// 使用二進位資料製作範例 zip 文件
數據表= ( dt :弗雷德<<取得矩陣) || ( dt :拉爾夫<<取得矩陣) || ( dt :喬治<<取得矩陣) ;
斑點=矩陣到blob (數據表, “漂浮” , 8 , “小的” ) ;
札=打開( “$temp/deleteme2.zip” , “壓縮” ) ;
實際姓名=札<<寫( “數據” ,斑點) ;
// 清除拉鍊
札= 0 ;
// 重新開啟zip
札=打開( “$temp/deleteme2.zip” , “壓縮” ) ;
展示(札<<目錄) ; // 檢查成員
開始=滴答秒() ;
斑點萃取物=札<<讀(實際姓名,格式(斑點)) ;
資料擷取=斑點基質(斑點萃取物, “漂浮” , 8 , “小的” , 3 /*列*/ ) ;
文字擷取=新表() ;
文字擷取<<集合矩陣(資料擷取) ;
停止=滴答秒() ;
展示(停止-開始) ;
停止-開始=2.01666666666279; // 在 2 到 3 秒內解壓縮+載入 10,000,000 行 x 3 列
實施例2
這是另一種變體,速度較慢,但靈活的(處理數字和字元):
// (此程式碼未經測試!)製作樣本數值數據
dt =新表( “人們” ,新增行( 1e6 ) ,
新專欄( “弗雷德” ,數位,連續的,格式( “最好的” , 12 ) ,公式(隨機常態() ) ) ,
新專欄( “弗雷德·查爾” ,特點,公式(字元(隨機整數( 1000 , 99999 )))) ,
新專欄( “拉爾夫” ,數位,連續的,格式( “最好的” , 12 ) ,公式(隨機常態() ) ) ,
新專欄( “拉爾夫·查爾” ,特點,公式(字元(隨機整數( 1000 , 99999 )))) ,
新專欄( “喬治” ,數位,連續的,格式( “最好的” , 12 ) ,公式(隨機常態() ) , ) ,
新專欄( “喬治·查爾” ,特點,公式(字元(隨機整數( 1000 , 99999 ))))
) ;
dt <<運行公式() ;
// 使用二進位資料製作範例 zip 文件
嘗試(刪除文件( “$temp/deleteme.zip” )) ;
札=打開( “$temp/deleteme.zip” , “壓縮” ) ;
碰撞= dt <<取得列引用;
為了(我= 1 ,我<=尼特姆斯(碰撞) ,我++,
數據=碰撞[我] <<取得矩陣;
姓名=碰撞[我] <<取得名稱;
札<<寫(姓名,字元(數據)) ;
) ;
// 清除拉鍊
札= 0 ;
// 重新開啟zip
開始=滴答秒() ;
札=打開( “$temp/deleteme.zip” , “壓縮” ) ;
科名=札<<目錄; // 檢查成員
文字擷取=新表( “提取” ) ;
為了(我= 1 ,我<=尼特姆斯(科名) ,我++,
TXT =札<<讀(科名[我]) ;
文字擷取<<新欄目(科名[我] ,價值觀(解析( TXT ))) ;
) ;
停止=滴答秒() ;
展示(停止-開始) ;
停止-開始=12.3500000000349; // 在 12 到 14 秒內解壓縮+載入 1,000,000 x 6