図1に示すような製造ライン(最高生産速度2個/秒)があります。
ロールを巻き出してプロセスA~Cで加工を加えて、最後に自動検査機で検査します。
プロセス状態モニタリングとして、各プロセスの状態を1秒毎にテーブルに保存してます。
検査結果は検査毎に別のテーブルに記録されてます(DBはPostgreSQL)。
やりたいことは製品の検査結果とプロセス状態を一つのレコードにまとめることです。
つまり、図2の左テーブルの該当レコードのデータを参照して右側のようなテーブルを生成して検査結果のテーブルと結合させることです。
これにより、検査NGのときのプロセス状態を知ることができます。
データ突き合わせ手順(検査結果テーブルに設備・プロセスデータをJOINする場合)
0. 検査結果、最初の行の時刻「17:22:45.1」に近い時刻を設備信号テーブルから探すと「17:22:45」が見つかり、そのカウント値(shot counter)は21。
0. dt_aの値は10ピッチ前なので、カウント11のレコードのdt_aの値を参照し、1.6を得る。
0. dt_bの値は8ピッチ前なので、カウント13のレコードのdt_bの値を参照し、30を得る。
0. dt_cの値は4ピッチ前なので、カウント17のレコードのdt_cの値を参照し、55を得る。
0. チョコ停や生産速度変更が想定されるので、検査結果2行目以降も1-4と同様の処理の繰り返し。
尚、設備信号のスキャン周期の関係で、カウント値は歯抜けになるので、該当するカウント値のレコードをサーチする場合は条件を「一致」でなく、「最も近い」とします。
教えて頂きたいのはこの処理をSQLで書くことは適当か、です。
SQL初心者の自分はどう考えてもループでSQLクエリを何度も発行するような処理になりそうです。図2に相当するデータ抽出のみをSQLで行い、生成処理はPythonなどのプログラミング言語を使用して書いた方が良いでしょうか。
それともSQLで良いやり方がありますでしょうか。
よろしくお願いします。
あなたの回答
tips
プレビュー