転置のコンテキストで試すSQL クエリから取得したデータの転置を実行するスクリプトがあります。 クエリ内の正確な列が変わる可能性があるという許容範囲をスクリプトに追加したいと思います。 現在のスクリプトでは、動作するために一連の列が存在する必要があるため、何らかの方法で Try() 機能を適用して、SQL クエリの変動に対応したいと考えています。
try ステートメントに転置を含めた演習を実行しましたが、失敗しました。
自動化とスクリプトRe: 転置のコンテキストで試すどの部分に問題があるのでしょうか? 列名が変更されたために SQL クエリが失敗していますか? または、期待する列が取得されないために JSL スクリプトが失敗していますか? 問題が発生した場合、どうすればよいですか?
Re: 転置のコンテキストで試すSQL は期待どおりにデータを抽出しますが、演算子には JMP が転置すると想定するすべての列が含まれていない可能性があります。この場合、JMP 側で明示的に列が指定されているのに、欠落していることが判明する問題が発生します。
JMPログには、
'columns' のアクセスまたは評価で列が見つかりません。引数が正しくありません ({:SAMPLE})。
Re: 転置のコンテキストで試すその場合、何をすべきでしょうか? プログラムの実行を停止しますか? スクリプトのその部分をスキップしますか? 正しい列を取得しようとしますか?
Re: 転置のコンテキストで試す実際に表示された列のみを実行し、不足している列が原因で失敗しないようにしたいです。最終的には、多くの演算子が使用する必要があり、差異が発生するため、SQL クエリの差異をある程度許容するスクリプトが必要です。利点の 1 つは、Transpose Column (:VALUE) と Label 列 (:PARAMETER) に固定タイトルがあることです。ここや他の場所で見つけた情報を参考にして、この点について少し調べたところ、以下のスクリプトが機能しているようです。
解決済み: リスト内の要素を削除する - JMP ユーザー コミュニティ
助けてくれてありがとう。
dt = Current Data Table();
// List available columns
by_col_names = dt << get column names( "String" );
show(by_col_names);
// Remove Transpose and Label columns from list
delcols = {"VALUE", "PARAMETER"};
For( i = 1, i <= N Items( delcols ), i++,
Remove From( by_col_names, As List( Loc(by_col_names, delcols[i] ) ) );
);
// Transpose only if valid columns exist
If (N Items(by_col_names) > 0,
dt2 = dt << Transpose(
Columns(:VALUE),
By(
by_col_names
),
Label( :PARAMETER ),
Output Table( "Transpose of dt_data" )
);
);