こんにちは、
データベースに接続し、手動で作成した長い SQL クエリを実行して、JMP ファイルを定期的に更新する必要があります。 今までは「」を使っていましたが、として" コマンドを使用して、データベースのフィールド名を JMP の列の簡略化された名前と照合します。 データを一時 JMP テーブルにインポートした後、スクリプトは同じ短い列名を使用して作業中の JMP ファイルと結合を作成して更新を完了しました。
質問 1: JMP の最新の SQL クエリ ビルダー (バージョン 11 以降で利用可能だと思います) を使用してみました。 しかし、クエリを手動で編集する以外に「AS」コマンドを管理するボタンが見つからないため、新しいコンストラクターの関心が大幅に低下します。 もっと効率的な方法はありますか?
質問 2: 私のニーズに適した方法はありますか? フィールドをそのまま (名前を変更せずに) 一時テーブルにインポートした場合、JMP テーブルのデータを効率的に更新する方法はありますか? たとえば、スクリプト内で何らかの名前マッピング テーブルを使用しますか?
注意: 項目が常に同じ順序であるとは限らず、派生データ用に定期的に新しい列を作成するため、更新されたデータを JMP ファイルに直接インポートしないことを選択しました。 そうしないと、更新時にオフセットが作成されます。
ご清聴ありがとうございました
クロード B.
オプションの 1 つは、クエリ結果内の名前を変更しないままにし、古い名前と新しい名前を持つ保存されたデータ テーブルを使用して更新することです。
Names default to here(1);
//Open a saved jmp file with the old and new names (creating the table here instead of opening it...)
dtNames = New Table( "Names",
Add Rows( 4 ),
New Column( "old", Character, "Nominal",
Set Values( {"Sepal length", "Sepal width", "Petal length", "Petal width"} )
),
New Column( "new", Character, "Nominal",
Set Values( {"sl", "sw", "pl", "pw"} )
)
);
//Run database query using 'default' column names
dtQuery = Open("$Sample_data/iris.jmp");
//Update names in the query results
for each row( dtNames,
Column( dtQuery, :old ) << Set Name( :new )
);