使用優先級列表對缺陷進行分類我附上了 table1,其中包含 3 個輸入列(零件號、產量和缺陷)和 1 個輸出列(Bin)。 我還附上了另一個優先級表,說明缺陷的層次結構,其中裂紋是最重要的。
如何使用 JMP 腳本生成輸出列 Bin,如果零件號有一些缺陷,則將最重要的缺陷放入與該零件號相關的所有行的 Bin 列中? 另外,如果良率低於 60% 並且缺陷不在priority_table 上,則將 bin 放入“低於 60%”?
以下是缺陷等。 缺陷列由操作員鍵入。

高級統計建模自動化和腳本編寫數據存取大規模定制質量和工藝工程回复:使用優先級列表對缺陷進行分類知道了謝謝!
回复:使用優先級列表對缺陷進行分類您會收到相當有用的錯誤消息
Query failed: near "when": syntax error in access or evaluation of 'Query'
問題出在這一行:
case when p.Bin is NULL then "Invalid Defect" else when t1.yield < 60 then "less than 60%" else
SQLite案例
您可以使用以下鏈接語句什麼時候所以似乎有額外的別的那裡然後是“無效缺陷”別的什麼時候
回复:使用優先級列表對缺陷進行分類嗨,賈莫,
感謝您的代碼。 我想更改標準和代碼以確保我理解。 如果我想改變:
首要任務是
1) 不在優先級列表中的任何零件,移至名為“無效缺陷”的箱中
2) 任何部件<60%,移至名為“<60% 部件”的垃圾箱
3)比較優先級列表
我更改瞭如下代碼,但出現語法錯誤:
dt_result = Query(
Table(dt_table1, "t1"),
Table(dt_priority, "p"),
"\[
with min_prio as (SELECT t1."Part No", min(p.priority) as priority
FROM t1
LEFT OUTER JOIN p
on t1.Defects like "%"||p.Bin||"%"
group by t1."Part No"
)
select t1."Part No", t1.Yield, t1.Defects, mp.priority,
case when p.Bin is NULL then "Invalid Defect" else when t1.yield < 60 then "less than 60%" else
p.Bin end as Bin
FROM t1
LEFT OUTER JOIN min_prio mp on mp."Part No" = t1."Part No"
left outer join p on mp.priority = p.priority
]\"
);
dt_result << Set Name("SQL_RESULT");回复:使用優先級列表對缺陷進行分類您也許可以更改 SQL 中的連接以使用通配符:
Names Default To Here(1);
dt_table1 = Open("Table1.jmp", Invisible);
dt_priority = Open("priority_table.jmp", Invisible);
dt_result = Query(
Table(dt_table1, "t1"),
Table(dt_priority, "p"),
"\[
with min_prio as (SELECT t1."Part No", min(p.priority) as priority
FROM t1
LEFT OUTER JOIN p
on t1.Defects like "%"||p.Bin||"%"
group by t1."Part No"
)
select t1."Part No", t1.Yield, t1.Defects, mp.priority,
case when p.Bin is NULL and t1.yield < 60 then "less than 60%" else p.Bin end as Bin
FROM t1
LEFT OUTER JOIN min_prio mp on mp."Part No" = t1."Part No"
left outer join p on mp.priority = p.priority
]\"
);
dt_result << Set Name("SQL_RESULT");
由於文本是由操作員手動輸入的,因此可能會出現拼寫錯誤,而這無法捕獲它們。 對於類似的事情,您很可能必須開始在字符串之間進行某種距離計算(一個示例:編輯距離)。 在 JMP 中,您還可以使用最短編輯腳本進行“距離”計算。
文本資源管理器也許也可以幫助你,但我不熟悉該平台
回复:使用優先級列表對缺陷進行分類謝謝賈莫,
我更新了我的問題和 Table1.jmp。 缺陷欄由操作員手動輸入,每個字符串中都包含缺陷詞,如裂紋、縱樑等。
謝謝。
回复:使用優先級列表對缺陷進行分類我不能 100% 確定您想要如何進行匹配,但我可以猜測您將根據 Bin 值與缺陷(最後一個單詞)中的匹配進行匹配。 解決這個問題的方法有很多,這裡有兩種可能的想法:
這是一種更具交互性的解決方案:
- 僅使用缺陷列的最後一個字向 Table1 創建新列
- 使用 Table1 中的新列和priority_table 中的 Bin 將 Table1 與priority_table 連接起來
- 使用 Col Min 公式獲得零件編號的最高優先級(首先將優先級更改為數字)
- 從這裡,您可以使用新的公式列和priority_table中的優先級再次加入優先級表,以獲得最終的垃圾箱(丟失的除外)
- 創建最終公式來計算缺失值

您應該從 JMP 獲取這些步驟所需的所有腳本(表腳本(以及增強日誌,如果使用 JMP16))
或者如果您熟悉 SQL,您可以嘗試直接使用它。 下面是某種查詢:
Names Default To Here(1);
dt_table1 = Open("Table1.jmp", Invisible);
dt_priority = Open("priority_table.jmp", Invisible);
dt_result = Query(
Table(dt_table1, "t1"),
Table(dt_priority, "p"),
"\[
with min_prio as (SELECT t1."Part No", min(p.priority) as priority
FROM t1
LEFT OUTER JOIN p
ON SUBSTR(t1.Defects, LOCATE(" ", t1.defects) + 1) = p.Bin
group by t1."Part No"
)
select t1."Part No", t1.Yield, t1.Defects, mp.priority,
case when p.Bin is NULL and t1.yield < 60 then "less than 60%" else p.Bin end as Bin
FROM t1
LEFT OUTER JOIN min_prio mp on mp."Part No" = t1."Part No"
left outer join p on mp.priority = p.priority
]\"
);
dt_result << Set Name("SQL_RESULT");
