実行番号の値をインクリメントします実行番号をインクリメントする式を開発しようとしています。 ショップオーダーに新しいプロセスIDが設定されるたびにカウントアップし、新しいショップオーダーが以前に実行されていない場合は1にリセットする必要があります。 以下に示すように、Shop Order532には3つの異なるプロセスIDがありますが、それらは順序付けられていないため、順序付けられていなくても、最後の1つで最大3つまで増加します。 数式列の理想的な結果として何が必要かを手動で示す列を作成しました。 この問題に対処するための式をどのように書くのですか?

データ表スクリプティングRe:実行番号の値をインクリメントします使用できる式は次のとおりです。新しい列Run#を作成します。モデリングタイプを「序数」にすることをお勧めします。新しい列の数式エディタを開き、以下に貼り付けます。
If( Row() == 1,
:Process ID << set property( "Value Order", {Common Order( 0 ), Row Order Levels( 1 )} );
Summarize( byGroup = by( :Process ID ) );
:Process ID << delete property("Value Order");
);
以下は、列の作成を行い、数式を適用するスクリプトです。
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Run #",
ordinal,
formula(
If( Row() == 1,
:Process ID << set property( "Value Order", {Common Order( 0 ), Row Order Levels( 1 )} );
Summarize( byGroup = by( :Process ID ) );
:Process ID << delete property("Value Order")
);
Contains( byGroup, :Process ID );
)
);Re:実行番号の値をインクリメントしますこれありがとう。 それは私が探していることを完全には行いません。 「実行番号の理想的な結果列」と「実行番号」の不一致を確認してください。 数式が現在機能している方法は、新しいSOが開始されたかどうかに関係なく増加するだけです。

Re:実行番号の値をインクリメントします申し訳ありませんが、ShopOrderとのリンクを見逃しました。それはすべてを変え、式をはるかに簡単にします
If( Row() == 1 | :Shop Order != Lag( :Shop Order ),
count = 1,
If( :Process ID != Lag( :Process ID ),
count
++)
);
count;