cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Get the free JMP Student Edition for qualified students and instructors at degree granting institutions.
Choose Language Hide Translation Bar
View Original Published Thread

WaferID と By ステートメントを照合して配布タイトルを編集する

saneal
Level III

こんにちは、

分布グラフのタイトルを編集して、もう少し説明的で、作成した別のグラフと簡単に照合できるようにしたいと考えています。各グラフのタイトルを「Wafer = XYZ...、BatchID = ABC...」にしたいと思います。

undefined

以下に作成したコードではタイトルを編集できますが、当然のことながら、以前に作成した連想配列にリストされていたすべてのバッチ ID がリストされます。 (この配列は、私が持っているテーブルの列内のすべてのバッチIDをリストしているだけです)。私がやりたいのは、Wafer を 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 )
			)}
		)
	)
);

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

Distribution の Outline Box() からウェーハ値を取り除き、ルックアップ データ テーブルからルックアップを実行して BatchID を取得するか、私の例の場合は Lot_id を取得するのは簡単なことです。それを Outline Box() のタイトルに追加します。

undefined

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)
 )
);
10 REPLIES 10
txnelson
Super User

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

最初のコードの外でタイトルをリセットして配布を生成し、配布レポートが生成された後にタイトルを変更します。

undefined

これはスクリプトに基づく例ですが、サンプルデータに変更されています

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 )
 )
);

注: 見やすくするために、出力の [プロセス能力] セクションを手動で閉じました。

 

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

saneal
Level III

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

txnelson さん、こんにちは。

 

迅速な返信ありがとうございます。 これは、すべてではなく、1 つの BatchID のみを表示する必要があることを除いて、私が望むものに近づいています。 おそらく、例の表を見るとより理にかなっているでしょう。

 

分布グラフのタイトルを「分布ウェーハ = A、バッチ ID = X」、「分布ウェーハ = B、バッチ ID = X」などにしたいと考えています。 Wafer を正しい BatchID に一致させます。 (または、その点でそれらをまったく一致させる方法)

注: 各 Wafer をその BatchID に一致させるテーブルが既にあります。

バッチIDウェーハ
バツ
バツB
バツ
D

ZG
ZH
Z

 

私が持っていた別の副次的な質問は、あなたが送ったコードについて、Byステートメントの最初のタイトルを除いて、私のグラフのすべてのタイトルを更新しているようです. これが発生する一般的な理由を知っていますか? 私はこれを複数回見ました。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

Distribution の Outline Box() からウェーハ値を取り除き、ルックアップ データ テーブルからルックアップを実行して BatchID を取得するか、私の例の場合は Lot_id を取得するのは簡単なことです。それを Outline Box() のタイトルに追加します。

undefined

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)
 )
);

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

saneal
Level III

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

こんにちは、txnelson! 迅速な対応と素晴らしい解決策をありがとうございました。

 

私はまだルックアップテーブルに問題があります。 「theWafer」は正しく検出されているようですが、デバッガーで実行すると「theLot」が読み込まれません。 これに関して何か問題がありましたか? 添付は私の正確なコードです。 私のヘッダーは「Distributions Wafer = ABC123, BatchID = .」のようになっています。

 

BatchIDs = 参照用のルックアップ テーブル

バッチIDウェーハ
QQQ1234ABC-123
YYY1234QWE-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)
 )
);

助けてくれてありがとう!

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

前回の回答で提供した例は、あなたにとって有効ですか? それが出発点である必要があります。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

saneal
Level III

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

要するにいいえ。 必要なテーブルで動作させることができません。 それは理にかなっていて、うまくいくはずですが、私が言えることから。 前回のメッセージで送信したエラー (返信がなかったのは残念です) が引き続き表示されます。 私がよく理解していない唯一のことは、この行の最後の [1] です。

 

theLot = AllTheBatchIDs:BatchID[(AllTheBatchIDs << get rows where( :Wafer == theWafer ))[1]];

 

それは何をするためのものか? 助言がありますか?

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

saneal
Level III

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

... のアクセスまたは評価で無効な添え字 (数値または数値のリストでなければなりません){1}
「theLot」のエラーメッセージ

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

txnelson
Super User

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

サンプル スクリプトのエラーです。私が使用していたサンプルデータテーブルを使用するには、以下を参照してください。

実行している JMP のバージョンは何ですか?

私が提供した私のサンプルプログラムでは、行を変更してください

dt = current data table();

dt = open("$sample_data/semiconductor capability.jmp");

そして、スクリプトを実行します。エラーなく動作するはずです。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

saneal
Level III

Re: By ステートメントで WaferID を一致させてディストリビューション タイトルを編集する

私はJMP14を実行しています。

 

奇妙なことに、このコード行から [1] を削除すると、スクリプトは正しく実行されます。 他のすべてを同じままにします。

thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];

次のように変更されました。

thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))];

ご協力いただきありがとうございます。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Recommended Articles

おすすめが見つかりませんでした