クエリがスクリプトに対して遅すぎるクエリ ビルダーを使用していくつかのクエリをスクリプト化しました。 次に、これらのスクリプトを背中合わせに配置しました。 次に、クエリから形成された新しいデータ テーブルを操作したいと思います。
私の問題は、クエリの 1 つが実行に 10 秒以上かかり、クエリに続く JSL が「形成予定の」テーブル (スクリプトがコードのその部分に到達した時点では存在しない) を操作しようとすることです。 。 これにより明らかにエラーが発生し、スクリプトが終了します。
「バックグラウンドで実行」コマンドを使用しようとしましたが、スクリプトがまとめて終了してしまうようです。
クエリを実行し、すべてのクエリがテーブルを返すまで強制的に待機させてから、残りのスクリプト (それらのテーブルに作用する) を実行する方法はありますか?
ありがとう、
マーティン
Re: クエリがスクリプトに対して遅すぎる遅くなってごめんなさい - ブライアンの提案フォアグラウンドで実行JSL でクエリを実行することは、JSL の次の行が実行される前にクエリが確実に終了するようにする方法です。 書き直す必要はありません!
エリック
Re: クエリがスクリプトに対して遅すぎる実際には、「フォアグラウンドで実行」を使用するとさらに効果的です。すぐに正しく理解できなくて申し訳ありませんが、次のような感じです。
Query1 = 新しい SQL クエリ(
繋がり( ...
) 、
注文方法( ) 、
PostQueryScript ( ...
)
) ;
クエリ1 <<フォアグラウンドで実行します。
機能するはずです。
ブライアン
Re: クエリがスクリプトに対して遅すぎるこんにちは、マーティンさん
クエリのバックグラウンド操作をオフにしてみることもできます。これは私にとってはうまくいきました。「設定 -> クエリビルダー -> ODBC -> 可能な場合はバックグラウンドでクエリを実行する」に移動してチェックを外すか、スクリプトで次のようなことを行うことができます。
クエリビルダー設定(バックグラウンドクエリ(0))
スクリプトの先頭にあります。
ブライアン・コーコラン
JMP開発
Re: クエリがスクリプトに対して遅すぎる本当にありがとう、pmroz!!!! これには少し書き直す必要がありますが、魅力的に機能します。
Re: クエリがスクリプトに対して遅すぎるそれを試してみて、結果がどうなるかをお知らせします。
ありがとう
Re: クエリがスクリプトに対して遅すぎる私は、クエリ << 実行すぐに戻ります。 どうやってこれを同期できるのかわかりません。
私が使うSQLを実行する代わりに、スクリプトを進める前に完了するまで待機するようです。 たとえば、実行する SQL ステートメントが 4 つある場合:
dbc = create database connection(<CONNECTION-STRING>);
dt1 = execute sql(dbc, sql1);
dt2 = execute sql(dbc, sql2);
dt3 = execute sql(dbc, sql3);
dt4 = execute sql(dbc, sql4);
close database connection(dbc);</CONNECTION-STRING>
Re: クエリがスクリプトに対して遅すぎるはい。 Wait(0) は実際にはあなたが提案したとおりには動作しません。 クエリは実際には、そのサイズと複雑さ (のように見える) に基づいて、ランダムな順序で返されます。 クエリが 7 つあり、時間がかかるのは 4 つ目です。 このクエリをスクリプトの最初に入れようとしましたが、他のクエリは非常に高速に実行されるため、スクリプト内の残りのコードが実行されてもこのクエリはまだ完了していません。
これは私が使用しているコードの一部ですが、ソースを保護するために大部分が削除されています。 ただし、一般的な構造はわかります。 簡潔にするために、クエリ 4 ~ 7 と最後の 4 つの Join ステートメントを削除しました。
Query1 = 新しい SQL クエリ(
繋がり( ...
) 、
注文方法( ) 、
PostQueryScript ( ...
)
) ;
クエリ1 <<走る;
待って( 0 ) ;
Query2 = 新しい SQL クエリ(
繋がり( ...
) 、
注文方法( ) 、
PostQueryScript ( ...
)
) ;
クエリ2 <<走る;
待って( 0 ) ;
Query3 = 新しい SQL クエリ(
繋がり( ...
) 、
注文方法( ) 、
PostQueryScript ( ...
)
) ;
クエリ3 <<走る;
待って( 0 ) ;
//テーブルを結合する
表12 = データテーブル( 「01」 ) <<加入(
と(データ表( 「02」 ) ) 、
同じ名前の列を結合、
マッチフラグ( 0 ) 、
列の一致による(
:
) 、
複数をドロップする( 0 、 0 ) 、
不一致を含める( 0 、 0 ) 、
メインテーブルの順序を保持する( 1 ) 、
出力テーブル( 「12」 )
) ;
表123 = データテーブル( 「12」 ) <<加入(
と(データ表( 「03」 ) ) 、
同じ名前の列を結合、
マッチフラグ( 0 ) 、
列の一致による(
:
) 、
複数をドロップする( 0 、 0 ) 、
不一致を含める( 0 、 0 ) 、
メインテーブルの順序を保持する( 1 ) 、
出力テーブル( 「123」 )
) ;
Re: クエリがスクリプトに対して遅すぎるwait(0) を設定しましたか?取得するたびにコマンドを実行しますか? これにより、JMP は前のコマンドが完了するまで待機する必要があります。