私は現在、大量のシミュレーションデータ(〜2Gb相当)を処理しようとしています。データがどのように見えるテーブルである:RUN_ID 1の場合((RUN_IDによって識別される)各ラン対応するデータとの時間ステップの数があるためそうMySQLでは、別のテーブルの場所からデータの範囲を選択するクエリを作成するにはどうすればよいですか?
Table: Simulation Data
+-------+--------+----------+-------+
| id | run_id | timestep | value |
+-------+--------+----------+-------+
| 1 | 1 | 1 | 0.00 |
| 2 | 1 | 2 | 0.003 |
| : | : | : | : |
| 9543 | 1 | 9543 | 0.23 |
| 9544 | 2 | 1 | 0.00 |
| : | : | : | : |
+-------+--------+----------+-------+
、9543時間ステップがありました)。
シミュレーションの実行中に発生するイベントがあります。これらのイベントの時間ステップは、別のテーブルに記録されています
Table: Simulation Events
+-------+--------+----------+
| id | run_id | timestep |
+-------+--------+----------+
| 1 | 1 | 152 |
| 2 | 1 | 193 |
| 3 | 1 | 382 |
| : | : | : |
| 143 | 1 | 9382 |
| 144 | 2 | 137 |
| : | : | : |
+-------+--------+----------+
だからこのデータセットに対して、RUN_ID 1で、時間ステップ152でのイベント、193、382は、ありました... 9382. RUN_ID 2は、その最初のを持っています時間ステップ137でのイベントなどがあります。私は、前の3タイムステップ、時間ステップ、および各イベント後の3タイムステップで、それぞれのrun_idについて何が起こるかに興味があります。 、
delta_ts =で最初の行は、-3 -2、タイムステップ149からの値になりタイムステップ150からなり+--------+----------------+----------+-------+
| run_id | event_timestep | delta_ts | value |
+--------+----------------+----------+-------+
| 1 | 152 | -3 | 0.053 |
| 1 | 152 | -2 | 0.042 |
| 1 | 152 | -1 | 0.031 |
| 1 | 152 | 0 | 0.003 |
| 1 | 152 | 1 | 0.532 |
| 1 | 152 | 2 | 0.736 |
| 1 | 152 | 3 | 1.138 |
| 1 | 193 | -3 | 0.049 |
| : | : | : | : |
| 1 | 9382 | -3 | 0.068 |
| : | : | : | : |
| 1 | 9382 | 3 | 1.523 |
+--------+----------------+----------+-------+
-1:私は一緒にのように見える何かを返すクエリを入れたいですtimestep 151などから、これを行うクエリをまとめることについてのあらゆる考えがありますか?
@ Blindy-ストアドプロシージャでカーソルを使用すると言います。 run_id = xのイベントテーブルからタイムステップを選択する行に沿って何かを意味し、それらの値を繰り返し、シミュレーションデータテーブルから範囲を選択しますか?または、あなたは何か他のことを覚えていましたか? – MarkD
カーソルを作成したら、各ステップごとに追加のクエリを実行するか、以前の(少数の)行を変数セット(または一時テーブル)に格納してその場で集計することができます。私は本当にあなたがこのルートに行くべきではないと思う! – Blindy
私はそれが遅く聞こえることに同意します。私は最初の例でこれらの結合を行う方法を理解しようとしていましたが、どこにもいません。私は空白の結合について読んで、私が思いつくものを見ていきます。提案していただきありがとうございます! – MarkD