當我建立工作流程時,我可能會使用 tabulate 建立一些匯總表,它會自動命名為「Untitle 1」。結果,當我再次執行工作流程時,新建立的匯總表被命名為“Untitle 2”,因此工作流程無法找到 Untilte1,我需要手動給它一個引用,如果有很多新表,就會發生很多錯誤。
有什麼辦法可以讓Workflow自動辨識新表嗎?或者,我們可以在“將其製成表格”之前直接在Tabulate中將表格命名為“Untitle”嗎?
謝謝!
您可以在使用 Tabulate 時決定名稱,但我認為您必須透過修改 JSL 來完成(將 Output Table("tablename") 新增至 << Make Into Data Table)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Car Poll.jmp");
obj = dt << Tabulate(
Add Table(
Column Table(Grouping Columns(:sex, :marital status)),
Row Table(Grouping Columns(:country, :size))
)
);
dt = obj << Make Into Data Table(Output Table("My Table"));Workflow Builder 很棒 - 使用者不需要了解任何 JSL 腳本。
……直到他遇到了陷阱:表名衝突。
在 50% 的情況下,沒有名稱匹配的表 - JMP 會詢問。
問題開始了,如果存在一個名稱匹配的表,但它是錯誤的。
本次演講的問答中討論了這個主題:
工作流程產生器或腳本編寫的“初級階段”
有幾種“解決方法”:
最簡單的一個 (#4b) - 以下@jthi範例:
使用一點 JSL 並將表引用儲存為“ dt ”。然後在所有其他工作流程步驟中也使用dt 。
注意:指定「輸出表」直到發生衝突才起作用,然後「無標題」將是「無標題2」。
其他方法:
#1 使用快退圖標

....關閉所有資料表,那麼新產生的表將再次「無標題」。
-> 沒有穩健的解決方案
一旦存在開啟的資料表Untitled並且使用者嘗試運行工作流程,該方法就會失敗。
#2:保存
建立資料表後,以特定名稱儲存。使用已儲存的資料表記錄附加步驟。
很酷:使用“保存”,即使存在表名衝突 - JMP 也不會添加“2”。
只需每次使用相同的臨時檔案並覆蓋它即可。
不太好 - 但非常有效!
@Zoe_Betteridge 使用 JMP-Workflow-Builder 進行自動化分析
#3:自 JMP18 以來的新功能:使用foreach 循環
它將嵌套工作流程步驟中的所有表格名稱替換為匯入步驟中的表格名稱(也適用於 N=1):
https://community.jmp.com/t5/Benelux-JMP-Users-Group/Workflow-Builder-or-the-quot-baby-steps-quot-into-Scripting/mp/739486/highlight/true#M7
#4:使用一點 JSL:在所有工作流程步驟中,刪除表格名稱引用
// for workflow steps like
// Data Table("mytable") << command (...);
// just remove the data table and get:
command( ... )[不幸的是,在一些例外情況下,這種方法會失敗]。
#4b:更改程式碼並使用變數作為資料表的引用
導入步驟:
// add "dt ="
dt = open( ...);
後續工作流程步驟:
// replace:
// Data Table("mytable") << command (...)
// with
dt << command( ...)
我希望,在 JMP 的未來版本中,會有一個工作流程產生器,它可以自動防止使用者陷入這個陷阱,例如
- 建立資料表後,Worklow Builder 可以請求合適的變數名稱來引用資料表。
- 工作流程產生器中的一個按鈕:
用表格名稱取代資料表引用 -> 用變數取代資料表引用
基於選項 4b,願望清單中有一個帖子可以自動修復該問題:
允許 Action Recorder 使用簡單的變數名稱作為引用