使用JSL查詢jmp數據表你好,
我需要在 Big Class.jmp 中獲取 12 歲和 13 歲的不同姓名列表
我現在的方式似乎效率很低。 (選擇位置、子集...)
使用 Query(); 執行此操作的方法是什麼?
謝謝。
我的腳本是:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
AgeList = {13, 15};
dt << Select where( Contains( AgeList, :Age ) > 0 );
SubsetDt = dt << Subset( Selected Rows, Columns( "name" ) );
Summarize( SubsetDt, DistinctNames = By( :(1) ) );
Close( SubsetDt, nosave );
Show( DistinctNames );Re: 使用JSL查詢jmp數據表非常感謝,這正是我所需要的。
Re: 使用JSL查詢jmp數據表謝謝你,吉姆, @tx尼爾森。
@湯姆_阿布拉莫夫,有多種方法可以做到這一點。 由於您使用了查詢一詞,我懷疑您可能有更複雜的 SQL 類型選擇,因此我使用了 JMP query() 函數。下面是一個不需要 SQL 語法的簡單方法。 關聯數組是一個帶鍵的列表,並且鍵必須是唯一的。:name[idx] 生成包含 12、13 和 15 歲兒童的所有行的列表。 關聯數組僅具有關聯值為 1 的唯一名稱。 唯一的名稱是關聯數組的鍵。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
idx = dt << get rows where(Contains(Agelist,:age));
uniq_names = Associative Array( :name[idx] ) <<GET keys=""></GET>
Re: 使用JSL查詢jmp數據表讓查詢創建數據表實際上並不是一個抑製劑。下面的腳本是對上一個腳本的簡單修改,添加了將“名稱”列的內容從最終數據表移動到列表中,然後刪除數據表。對於運行該腳本的任何人來說,都不會顯示任何數據表。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ),invisible, Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
namesList = ndtQ:Name << get values;
Close( dt, NoSave );
close(ndtQ, nosave);Re: 使用JSL查詢jmp數據表這非常有幫助,謝謝。
我正在使用 JMP 15。
還有一個問題——我可以將查詢結果直接保存到列表中而不是創建數據表嗎?
那是因為我不需要表格,我需要一個不同名稱的列表。
如果沒有,它仍然比 SelectWhere --> Subset 好得多。
謝謝。
Re: 使用JSL查詢jmp數據表@湯姆_阿布拉莫夫,
您沒有提及您正在使用哪個版本的 JMP。我不記得 JMP query() 函數首先在 JMP 12 或 13 中是否可用。 您可以在 JMP 表上使用標準 SQL 語句。由於 Big Class 對於 12 歲和 15 歲的孩子只有一個非唯一的名字 Robert,因此我修改了您針對 12、13 和 15 歲孩子的請求。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ), Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
ndtQ << set name( "Unique BC Names" );
Wait( 3 );
Close( dt, NoSave );
結果如下:
