数式のない列が予期せず再計算されるのはなぜでしょうか?私はよくJMPを使ってデータパイプラインのプロトタイプを作成し、あるテーブルの列の値を計算し、その結果に基づいて別のテーブルにデータをクエリしています。そこで、非常に奇妙で直感に反する動作に気づきました。例えば、3つの列を持つテーブルがあるとします。

2 列目と 3 列目は、Lag (:Column 1) と Col Sum (:Column 1) として計算されます。
ここで、列 1 > 2 となる新しいテーブルに行をクエリします。結果は次のようになります。

テーブルが数式を継承しているため、「:列1の遅延」と「:列1の合計」は再計算されます。これは理解できます。
でも、数式を削除してテーブルを更新するとどうなるでしょうか? 数式がないので、対象テーブルでは値を再計算しないので、ソーステーブルのデータがそのまま表示されるはずですよね? まさか! 違います! 何も変わりません。null、3、7、7 は表示されますが、2、3、10、10 は表示されません。
これは欠陥でしょうか?それとも予想通りでしょうか?どのように説明すればいいのでしょうか?
ありがとう!
自動化とスクリプトRe: 数式のない列が予期せず再計算されるのはなぜですか?痛い、驚くほど有害な組み合わせ: クエリ ビルダーと列式!
サブセットのような設定

頭痛がかなり軽減されるでしょう。
それ以外にも、JMP の基本を理解するための便利な拡大鏡もあります : )
JMPのバージョンはどれですか?ログから手順を共有していただけますか?
JMP 18.2.2 および 19.0 でテストしたところ、クエリの実行後に遅れ()は実行されますが、 Col Sum() は実行されません。
数式を削除した後はすべて正常になります。
[おそらく: 数式を含む古いデータ テーブル「無題」を参照しましたか?]


names default to here(1);
dt = New Table( "Untitled",
Add Rows( 4 ),
New Column( "Column 1",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] )
),
New Column( "Sum[Column 1]",
Formula( Col Sum( :Column 1 ) )
),
New Column( "Lag[Column 1]",
Formula( Lag( :Column 1, 1) )
)
);
dt << run formulas();
wait(0);
queryDT= Expr(New SQL Query(
Connection( "JMP" ),
Select(
Column( "Column 1", "t1" ),
Column( "Sum[Column 1]", "t1" ),
Column( "Lag[Column 1]", "t1" )
),
From( Table( "Untitled", Alias( "t1" ) ) ),
Where(
GT(
Column( "Column 1", "t1" ),
2,
UI( Comparison( Base( "Continuous" ) ) )
)
)
) << Run Foreground);
queryDT;
Column (dt, 2) << delete formula();
Column (dt, 3) << delete formula();
wait(0);
queryDT;
wait(0);
dt << set name("input");
Re: 数式のない列が予期せず再計算されるのはなぜですか?JMPデータテーブルに対してクエリを実行していますか?どのテーブルから数式を削除していますか?問題を再現するためのサンプルデータセットを共有していただけますか?
Re: 数式のない列が予期せず再計算されるのはなぜですか?はい、2枚目のスクリーンショットの2番目のテーブルは、1枚目のスクリーンショットの最初のJMPデータテーブルをクエリした結果です。テーブルは添付されていますので、同じフォルダに配置し、2枚目のテーブルで「データベースから更新」スクリプトを実行してください。2枚目のテーブルには数式は含まれていませんが、結果を見ると、数式が存在し、評価されたかのような結果になっています。
Re: 数式のない列が予期せず再計算されるのはなぜですか?JMP Pro V.17
表を添付します。
Re: 数式のない列が予期せず再計算されるのはなぜでしょうか?良い回避策ではありませんが、元のテーブルから数式の評価を一時的に抑制し、クエリを実行して数式の評価を再度有効にすることができます (これは、クエリ ビルダーによって既に行われているはずです)。

また、何か奇妙なことが起こっているので、JMPサポートに連絡してください。JMPサポート
Re: 数式のない列が予期せず再計算されるのはなぜですか?JMP 19.1 への提案:
クエリビルダー: 数式列を無効にする
Re: 数式のない列が予期せず再計算されるのはなぜですか?ああ、誤解していた
しかし、数式を削除して表を更新するとどうなるでしょうか?
OK、JMP19 でも同じです。
つまり、JMP はクエリ (数式を含む) を実行し、ターゲット テーブル内のデータを新しい結果に置き換えるということですか?
これはまさに「更新」で期待していた結果です。しかし、JMPはなぜ、新しい列が追加された場合に「テーブルはそのままでデータのみを更新する」という更新ができないのでしょうか? コラム4に関しては、そこにあったものをすべて削除して、新しいクエリ結果に置き換えているように見えます。
おそらく、クエリの結果は取得されますが、古い列設定がコピーされて適用されますか?
... 列の数式が削除され、問題が隠れるのでしょうか?
Re: 数式のない列が予期せず再計算されるのはなぜでしょうか?はい、この回避策は有効です。私が使っているもう一つの不器用な回避策は、すべての行を数式なしで中間テーブルにクエリし、その後この中間テーブルにクエリを実行するというものです。
Re: 数式のない列が予期せず再計算されるのはなぜですか?JMP サポートからの応答はどうでしたか?
Re: 数式のない列が予期せず再計算されるのはなぜですか?私は彼らに連絡しませんでした。このコミュニティと私自身に頼りたいのです:)
Re: 数式のない列が予期せず再計算されるのはなぜでしょうか?うーん、「回避策」よりも公式の修正の方が好みです。
修理して、忘れてください。
回避策を見つけて忘れないでください!!
- 同僚全員に伝えるのを忘れないでください!
Re: 数式のない列が予期せず再計算されるのはなぜですか?「コミュニティと私」について - トピックを追加しました
注意: Jmp が予期しない動作をする箇所
一方、この問題は GUI で解決できると確信しています。
Subset と同様のオプションは、顧客が問題を理解するのに役立ちます。デフォルトのオプションは、数式列を削除するか無効にすることです。

この動作がバグであるかどうかを確認しましょう: TS-00244891。
そうでない場合は、まずウィッシュリストで十分なKudosを集める必要があるため、時間がかかります。 クエリビルダー:数式列を無効にする