通过将 WaferID 与 By Statement 相匹配来编辑分发标题你好,
我想编辑分布图的标题,使其更具描述性,并且更容易与我创建的另一个图表相匹配。我希望每个图表的标题为“晶圆 = XYZ...,BatchID = ABC...”

我在下面创建的代码允许我编辑标题,但是,它毫不奇怪地列出了我之前创建的关联数组中列出的所有批处理ID。 (这个数组只是列出了我拥有的表的一列中的所有batchID)。我想做的是将晶圆与 BatchID 相匹配,并使用 By 语句将其显示在每个图表的标题中。有办法做到这一点吗?谢谢你!
//DISTRIBUTION PLOT
batchids = Associative Array( BatchIDs:BatchID );
RawData << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :col1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :FailDie ), Where( :FailDie == 0 ) ) ),
By( :Wafer ),
SendToReport(
Dispatch(
{},
"Distributions Wafer=XYZ",
OutlineBox,
{Set Title(
"Distributions Wafer=XYZ, Batch ID = " || Char( batchids << Get Keys )
)}
)
)
);大规模定制回复:通过匹配 WaferID 和 By Statement 来编辑分发标题显然,当只返回一个值时,您的 JMP 版本正在返回一个定标器。回复:通过匹配 WaferID 和 By Statement 来编辑分发标题我正在运行 JMP 14。
奇怪的是,当我从这行代码中删除 [1] 时,脚本运行正确。 其他一切都一样。
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
改为:
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))];
再次感谢你的帮助!
回复:通过匹配 WaferID 和 By Statement 来编辑分发标题我的示例脚本错误。请参阅下文以使用我正在使用的示例数据表。
您运行的是什么版本的 JMP?
在我提供的示例程序中,更改行
dt = current data table();
到
dt = open("$sample_data/semiconductor capability.jmp");
然后运行脚本。它应该可以正常工作。
回复:通过匹配 WaferID 和 By Statement 来编辑分发标题简而言之,没有。 我无法让它与我需要它的桌子一起工作。 据我所知,它确实有意义并且应该起作用。 我在上一条消息中发送的错误(抱歉没有看到您的回复)是不断出现的错误。 我唯一没有完全理解的是这一行末尾的 [1]:
theLot = AllTheBatchIDs:BatchID[(AllTheBatchIDs << get rows where( :Wafer == theWafer ))[1]];
它有什么作用? 有什么建议么?
回复:通过匹配 WaferID 和 By Statement 来编辑分发标题访问或计算...时无效的下标(必须是数字或数字列表){1}
“theLot”的错误信息回复:通过匹配 WaferID 和 By Statement 来编辑分发标题我在上次回复中提供的示例对您有用吗? 这需要作为起点。回复:通过匹配 WaferID 和 By Statement 来编辑分发标题嗨特克斯尼尔森! 再次感谢您的快速响应和出色的解决方案。
我的查找表仍然有问题。 似乎正确找到了“theWafer”,但是当我在调试器中运行它时,“theLot”没有填充。 你有这方面的问题吗? 附件是我的确切代码。 我的标题看起来像“Distributions Wafer = ABC123, BatchID = ”。
BatchIDs = 查找表以供参考
| 批号 | 晶圆 |
| QQQ1234 | ABC-123 |
| YYY1234 | QWE-456 |
For( i = 1, i <= N Items( VthNew ), i++,
theWafer = char(word(-1,Report( VthNew[i] )[Outline Box( 1 )] << get title,"="));
theLot = BatchIDs:BatchID[(BatchIDs << get rows where(:Wafer == theWafer))[1]];
Report( VthNew[i] )[Outline Box( 1 )] <<
Set title(
Report( VthNew[i] )[Outline Box( 1 )] << get title || " BatchID =" || Char(theLot)
)
);
谢谢您的帮助!
回复:通过匹配 WaferID 和 By Statement 来编辑分发标题从 Distribution 的 Outline Box() 中剥离晶圆值是一件简单的事情,然后从查找数据表中进行查找并获取 BatchID,或者在我的示例中,获取 Lot_id,然后将其添加到 Outline Box() 的标题中。

Names Default To Here( 1 );
dt = Current Data Table();
batchids = Associative Array( dt:lot_id );
dtlookup =New Table( "Lookup",
Add Rows( 24 ),
New Column(
["en" => "wafer", "ja" => "ウエハー", "x-id" => "S_wafer_Col", "zh-CN" => "晶片"],
Numeric( 1 ),
"Nominal",
Set Values(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24]
),
Lock( 1 )
),
New Column( "lot_id",
Character,
"Nominal",
Set Values(
{"lot01", "lot02", "lot03", "lot04", "lot05", "lot06", "lot07", "lot08",
"lot09", "lot10", "lot11", "lot12", "lot13", "lot01", "lot02", "lot03",
"lot04", "lot05", "lot06", "lot07", "lot08", "lot09", "lot10", "lot11"}
)
)
);
Dis = dt << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :npn1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :site ), Where( :site == 1 ) )
),
By( :Wafer )
);
For( i = 1, i <= N Items( Dis ), i++,
theWafer = num(word(-1,Report( dis[i] )[Outline Box( 1 )] << get title,"="));
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
Report( dis[i] )[Outline Box( 1 )] <<
Set title(
Report( dis[i] )[Outline Box( 1 )] << get title || " Lot="
|| Char(thelot)
)
);回复:通过匹配 WaferID 和 By Statement 来编辑分发标题你好特克斯尼尔森,
再次感谢您的快速回复。 这越来越接近我想要的,除了每个 Wafer 应该只显示 1 个 BatchID,而不是全部。 也许查看示例表会更有意义。
我希望我的分布图的标题是“Distribution Wafer = A, BatchID = X”和“Distribution Wafer = B, BatchID = X”等。但是,我不太了解我可以确定的方式将 Wafer 与正确的 BatchID 匹配。 (或者就此而言如何匹配它们)
注意:我有一个表,它确实将每个 Wafer 与其已经可用的 BatchID 相匹配。
我的另一个问题是:对于您刚刚发送的代码,它似乎更新了我图表的所有标题,但 By 语句中的第一个标题除外。 您知道发生这种情况的常见原因吗? 我不止一次看到过这种情况。
回复:通过匹配 WaferID 和 By Statement 来编辑分发标题我会在初始代码之外重置标题以生成分布,并在生成分布报告后更改标题

这是一个基于您的脚本的示例,但已修改为示例数据
Names Default To Here( 1 );
dt = Current Data Table();
batchids = Associative Array( dt:lot_id );
Dis = dt << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :npn1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :site ), Where( :site == 1 ) )
),
By( :Wafer )
);
For( i = 1, i <= N Items( Dis ), i++,
Report( dis[i] )[Outline Box( 1 )] <<
Set title(
Report( dis[i] )[Outline Box( 1 )] << get title || " Lots="
|| Char( batchids << get keys )
)
);
注意:我手动关闭了输出的过程能力部分以获得更好的画面