<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />私のデータは次のように列に配置されています。
ウェーハ番号、ログ番号、DUT ID、テスト時間、パラメータ1、パラメータ2 ........
Hour of Test = 0で失敗するすべてのDUTを識別するために適用したい一連の仕様があります。それらのDUTが識別されたら、私はそれらの同じDUTのすべてのインスタンスを削除したいです。ただし、同じ仕様のセットを他のすべてのテストデータ時間に適用したくはありません。
私は、同じフォーマットで別のテーブルを生成するところまで行き、すべてのt = 0の失敗を識別しました。ここで、Log#、DUT IDをキー入力し、失敗したDUTのすべてのインスタンス(以降のすべてのテスト時間)を元のテーブルから削除します。どうすればいいのですか?
(これは、上記のMartinのアプローチとは少し異なります)。
一般に、1つの列の値に異なる制限がある場合は、必要な制限を列のプロパティとして格納できるようにデータを分割することをお勧めします。しかし、あなたがこれをしない理由があるなら、以下のアプローチは私があなたが望むと思うことをする一つの方法です。コードを切り取ってエディタウィンドウに貼り付け、[編集]> [スクリプトの実行]を選択します。( 'Wait()'コマンドは、何が起こっているのか見ることができるようになっています)。
NamesDefaultToHere ( 1 ) ;
//テーブル例
dt =
新しいテーブル ( 「DUT」 、
行を追加 ( 12年 ) 、
新しいコラム ( 「DUT ID」 、
数値 、
「公称」 、
フォーマット ( "ベスト" 、 12年 ) 、
設定値 ( [ 1 、 2 、 3 、 4 、 1 、 2 、 3 、 4 、 1 、 2 、 3 、 4 ] )
) 、
新しいコラム ( 「テスト時間」 、
数値 、
"序数" 、
フォーマット ( "ベスト" 、 12年 ) 、
設定値 ( [ 0 、 0 、 0 、 0 、 1 、 1 、 1 、 1 、 2 、 2 、 2 、 2 ] )
) 、
新しいコラム ( "P1" 、
数値 、
「連続」 、
フォーマット ( 「固定12月」 、 12年 、 3 ) 、
設定値 (
[ 0.299525242746479 、 1.0633718409566 、 0.507859846881073 、
- 1.11573907805173 、 0.222826061547355 、 - 0.318546800557343 、
- 0.0356930503397689 、 0.661572077447882 、 - 0.182884744578411 、
- 0.930044642545168 、 0.767786562806245 、 - 0.130135490980355 ]
)
) 、
新しいコラム ( "p2" 、
数値 、
「連続」 、
フォーマット ( 「固定12月」 、 12年 、 3 ) 、
設定値 (
[ 0.967955026618985 、 - 1.05625737545624 、 0.399938006086842 、
- 0.0459988344031106 、 - 1.30650202283731 、 1.66536579742163 、
1.19669670020495 、 - 0.205442597157623 、 - 1.40714522703899 、
0.517030195850593 、 - 0.51315580063705 、 - 1.17294833449061 ]
)
)
) ;
// 'Hour of Test' = 0で 'pi' <0.5の値が失敗を定義するとします -
//次にdtの対応する行を選択します
待つ ( 1 ) ;
dt << clearSelect () ;
dt << selectWhere ( : P1 < 0.5 & : テスト時間 == 0 ) ;
// [DUT ID]列を選択します
待つ ( 1 ) ;
カラム ( dt 、 「DUT ID」 ) << setSelected ( 1 ) ;
//失敗したDUTに関連付けられているすべての行を含むように選択を「拡張」します
待つ ( 1 ) ;
dt << selectMatchingCells ;
//列の選択を解除
待つ ( 1 ) ;
カラム ( dt 、 「DUT ID」 ) << setSelected ( 0 ) ;
//行を削除します
待つ ( 1 ) ;
dt << deleteRows ;
[編集:リアルタイムの計算問題を避けるために "Eval Formula"を追加。]
これが私があなたが探していることをすると思うコードの断片です:
dt = データ表 ( "targetdt" ) ;
dt << 場所を選択 ( : 時 == 0 ) ;
SDT = dt << サブセット ( 選択された行 ) ; // hours = 0の時点でデータのサブセットテーブルを生成します
ミンスペック = 3 ; //あなたのスペック
SDT << 新しいコラム ( 「inspec」 、式 ( : パラメータ1 > = ミンスペック 、評価式 ) ; //このdutがhours = 0データに従ってスペック内にあるかどうかを確認
dt << 更新 (
あり ( SDT ) 、
一致列 ( : ログ# = : ログ# 、 : DUT_ID = : DUT_ID ) 、
更新テーブルから列を追加 ( : 検査 )
) ;
dt << 場所を選択 ( : 検査 == 0 ) ;
dt << 行を削除 () ;
重要なのは、「更新」を使って元のテーブルに追加する「inspec」のような列を持つことです。その後、その列でフィルタリングできます。