テーブルの最後までシーケンスを継続するには創造性が必要ですこんにちは、
私の特定の問題に対する優れた解決策があるかどうかはわかりませんが、専門家の意見を聞きたいです...
JMP 17 を利用する際、既存のファイルに新しいデータを追加することがよくあります。各行には、独自の「バッチ番号」が割り当てられます。新しいデータセットを取得すると、既存のファイルに追加する必要がある新しいバッチ番号があります。これまでのところ、これを行う最も簡単な方法は、新しいバッチ番号をマスター ファイルにコピーし、テーブル更新機能を実行して必要なデータをすべて取り込むことですが、これをより自動化された方法で実行して「データ処理」時間を短縮するオプションを探しています。
要するに、以下のいずれかの方法を使用するしかないのか、それとも JSL を通じてこのタスクを達成できるもっと創造的な方法があるのでしょうか?
私が試したこと:
- 行を追加し、最後のバッチ番号をいくつかハイライト表示して、「Fill -> Continue Sequence to End of Table」を選択します。
- 行の追加は JSL で実行できますが、テーブルの最後まで自動的に入力する方法を見つけるのに苦労しました...
- データインポートからバッチ番号をコピーしてデータマスターに貼り付け、テーブル更新機能を実行して残りのデータをプルします。
- 毎回うまく機能する実証済みの方法ですが、これよりも少し自動化する必要があります。
- データテーブルを連結し、重複を削除する
- これは非常にうまく機能しましたが、マスター内の最後の数行のデータが不完全であっても、データの更新によって完全になる場合があります。この方法を使用すると、新しい重複を保持する方が理想的な場合に、古い重複が削除されます。新しい重複を保持できれば、この方法は非常にうまく機能します。
- 隣接する列またはバッチ番号列自体に Row() 数式を使用します。
- バッチ #1 から開始することはほとんどありませんが、Row()+(数値) を追加することで簡単に対応できます。つまり、最初のバッチが 6543 の場合、数式は [Row() + 6542] となり、正しいカウントが計算されます。
- これもうまく機能しますが、バッチ番号がスキップされることがあります。これにより、データにギャップが時々ある場合を除き、計算された列がバッチ番号の列と一致しなくなります。
自動化とスクリプトRe: テーブルの最後までシーケンスを継続するには創造性が必要ですルールと例外を定義できれば、JSL を記述して問題を解決できます。あなたが述べたことをすべて理解するのは困難ですが、最初のバッチ番号を取得する場所、不規則性に対する対処方法、スキップされたバッチ番号がある場合の検出方法と処理方法を定義できれば、これらすべてを JSL で処理できるようです。
Re: テーブルの最後までシーケンスを継続するには創造性が必要ですこれは本当に簡単な練習です。たとえば、バッチ 19257 から 19640 を含む 1 つの「マスター」データ セットがあるとします。バッチ 19620 から 19665 を含む新しいデータ セットを受け取ったので、これを「マスター」データ セットに追加して、すべてを 1 つのファイルにまとめる必要があります。通常の方法は、これらの新しいバッチ番号をマスターにコピーし、Tables -> Update を実行して、2 つのテーブルを Batch = Batch に一致させ、更新によって新しいデータをすべて取り込みます。
私の最大の難関は、JSL を利用してバッチ番号を新しいデータからマスター データに渡すこと、またはバッチ番号をテーブルの最後まで自動的に埋めることです。行の追加、テーブル更新の実行、未使用の行の削除は簡単な部分です。
Re: テーブルの最後までシーケンスを継続するには創造性が必要です使用できます
テーブル=>結合
これにより、元のテーブルのすべてのデータと、新しく入力されたテーブルの新しい行を含む新しいテーブルが作成されます。その後、元のテーブルを削除し、結合された新しいテーブルの名前を変更するだけです。
Re: テーブルの最後までシーケンスを継続するには創造性が必要ですこれはうまく機能しますが、新しいテーブルでは最初のデータ テーブルに適用された行の状態が失われます。行の状態列を使用できることはわかっていますが、すべてのアクションをログに記録する必要がありますが、何らかの理由で「行の状態からコピー」はログに記録されません。アイデアは、これらすべてをログに記録して、同僚がそこからコピーして、その背後にあるコーディングを学習することなく、このデータ更新スクリプトを作成できるようにすることです。
最終的に私が求めているのは連結オプションかもしれませんが、2 番目の重複を保持しながら重複を削除する方法が必要です。数十の列にわたる情報のほとんどは同一ですが、最初の重複には列リストの末尾に向かっていくつかのデータが欠落しています。したがって、2 番目の重複はより完全なデータ セットを提供します。つまり、次のようになります。
バッチ番号
1
2
3 (複製、削除)
4 (重複、削除)
5 (重複、削除)
[以下は重複したバッチを含む連結データです]
3 (複製、保存)
4 (複製、保存)
5 (複製、保存)
6
7
8
Re: テーブルの最後までシーケンスを継続するには創造性が必要です「このすべてをログに記録して、同僚がそこからコピーして、背後にあるコーディングを学習することなく、このデータ更新スクリプトを作成できるようにするのが目的です」とおっしゃっていますが、何を説明しているのか想像できません。ユーザーがコピーして使用しているログで提供されている内容を正確に確認する方法はありますか?
重複バッチに関しては、スクリプト インデックスで重複行の選択を確認することをお勧めします。これにより、以前に表示されたすべての行が検索されます。次に、見つかった重複をループし、そこから重複した以前の行を見つけて、その行を削除できます。
Re: テーブルの最後までシーケンスを継続するには創造性が必要です私がこのように述べるとき、既存のデータ セットに新しいデータを取り込む際に必要な一連の手順について言及しています。これには次のような手順が含まれます。
- 特定の場所に特定のファイル名で保存された新しい Excel データ セットを開いてインポートします。
- 既存のデータセットにそのデータを追加して、より完全なものにします。
- データを「クリーンアップ」する (つまり、新しいデータ セットによって追加されたが不要な列を削除し、他の列を再フォーマットするなど、必要な操作を行う)
これらのアクションはすべてログに追加され、ログが生成した JSL はデータ テーブル上の新しいスクリプトにコピーできます。同僚の中には JSL に精通している人は多くないため、チーム全体でこのプロジェクトを誰もが繰り返し実行できるようにするには、このシンプルさが必要です。ログがキャプチャしない JSL コードをスクリプトに手動で追加する必要がある場合、チームにとって最終製品の実装がはるかに難しくなります。
あなたの提案の「見つかった重複をループし、そこから重複している前の行を見つけて、その行を削除する」という部分をどのように実行しますか? これが、これをすべてまとめる上で最後に欠けている部分になると思います。