一覧の最後の行が「最新」とは限らない|案件の現在状態を取り出す

記事
IT・テクノロジー
案件の履歴をCSVへ出したら、「完了した案件が作業中に戻った」と見える。末尾の行だけを残している場合、ファイルの並び順と更新日時の順番が違うことが原因かもしれません。

現在の状態を知るには、案件ごとに更新日時を比較します。同じ最新時刻に違う状態がある場合は、どちらかを勝手に採用せず、確認へ回します。

■ 入力順と更新順が違う例

ファイル内に、次の順番で記録があるとします。

K01/10月14日11時/完了
K01/10月14日9時/受付
K01/10月14日10時/作業中
K02/10月14日12時/作業中
K02/10月14日12時/取消

K01は末尾の記録が10時の「作業中」ですが、日時を比べれば11時の「完了」が最新と分かります。K02は最新時刻が同じなのに、状態が2種類あります。末尾の「取消」を選ぶのではなく、要確認とします。

出力例:
K01/最新11時/完了
K02/最新12時/要確認

16_latest_status.png
説明図:日時順で現在状態を選び、同じ最新時刻の異なる状態は保留。

■ 現在状態を出す手順

1.案件を識別できるキーを決める

案件名だけでなく、案件IDなどで同じ案件の履歴を集めます。同じ名前の別案件を混ぜないようにします。

2.更新日時の意味を確認する

業務上の状態が変わった日時なのか、データを取り込んだ日時なのかで意味が違います。過去の記録を今日取り込んだ場合、取込時刻だけで最新状態を決めると誤ることがあります。

3.案件ごとに最も新しい更新日時を探す

表示用の日付文字列を見比べるだけでなく、日付と時刻として比較します。時間帯が異なる記録を混ぜる場合は、その違いもそろえます。

4.同時刻の記録を確認する

最新時刻に複数行ある場合、状態が一致しているかを見ます。元システムに履歴番号や版番号があるなら、その優先規則を確認します。番号がないのに、ファイルの下の行を正解とみなさないでください。

■ 取消や再開にも対応できる形に

「完了を一度見つけたら、ずっと完了」という判定では、後日の再開を反映できません。反対に、取消をすべて削除すると、取り消された案件が一覧に残ることがあります。

どの状態を表示するかと、元の履歴を残すことを分けます。現在状態の表にも、採用した履歴のIDや日時を残しておくと、判断の根拠を追えます。

■ 空欄やおかしな日時は確認へ

更新日時が空欄、不正な日付、予定外に未来の値などの場合は、そのまま最新として扱わず、原因を確かめます。データの修正前に原文を保存します。

■ 検証結果

入力順の異なるK01を更新日時で比較し、11時の「完了」を採用しました。K02は同じ12時に異なる2状態があるため、要確認になることを確認しました。今回は日時がすべて入力され、同じ時間帯である例です。

更新履歴から進捗一覧を作る場合は、「何を最新とするか」と「同時刻ならどうするか」を決めておくと、再取込みの順番に左右されにくい集計になります。

一覧作成・集計の相談先:
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す