表・データを整える

CSV比較で重複キーが出る理由|品番だけで行を決めない確認方法

同じ品番が複数行にあるCSVを比べると、なぜ判定不能になるのか。架空の倉庫別一覧と配布CSVを使い、品番と倉庫を組み合わせる手順、差異の読み方、元データへ戻る判断を説明します。

新旧CSVに同じ品番が2行あるとき、どちらをどちらに結び付けるかは品番だけでは決まりません。重複行を先に消すのではなく、1行を区別できる列がほかにあるか確認します。 この例では、同じ品番でも倉庫が違うため、「品番+倉庫」を使います。

品番だけをキーにすると、なぜ判定不能になる?

架空の在庫一覧です。旧一覧では品番 A-01 が東倉庫と西倉庫に1行ずつあります。新一覧では西倉庫の数量だけが変わっています。

旧一覧の品番倉庫数量新一覧の品番倉庫数量
A-01東10A-01東10
A-01西5A-01西7

品番だけを指定してCSV突合を実行すると、A-01 に複数候補があるため自動で行を決めません。結果の「判定不能」はツールの故障ではなく、選んだキーだけでは対応を一意に決められないという知らせです。行の順番や数量が近いことを根拠に、東と西を勝手に対応付けてはいけません。

架空CSVで「品番+倉庫」を試す

旧一覧CSVをダウンロードし、ツールの左側へ。新一覧CSVを右側へ入れます。ファイルを選んだ後は見出しと先頭行を確認してください。文字列を貼る場合は、区切りを「カンマ(CSV)」にします。

品番,倉庫,数量
A-01,東,10
A-01,西,5
B-02,東,8

まずキーを左右とも1列目の品番、比較列を3列目の数量にして実行します。A-01 の関係する行が判定不能になります。次に左右のキー列へ2列目の倉庫を追加し、同じ比較列で再実行します。期待結果は次のとおりです。

品番・倉庫期待結果元データで見ること
A-01・東一致数量10のまま
A-01・西差異数量5から7へ
B-02・東一致数量8のまま

期待結果の確認表も保存できます。結果の行番号は見出しを除くデータ行の番号です。

CSV突合・差異確認

左右のCSVでキー列を追加し、判定不能と差異の変化を確認します。

架空CSVで突合を試す(別タブで開く)

品番と倉庫が同じなら、ロットもキーにする?

同じ倉庫で同じ品番をロット別に管理しているなら、「品番+倉庫」でも行を決められません。まず、元の一覧の1行が何を表しているか確認します。ロット別の数量を比べる一覧なら、左右とも「品番+倉庫+ロット」で同じ在庫を探します。

次の架空例は、どちらも同じ対象時点・数量単位の一覧です。空欄は値が記録されていない状態、0 は数量ゼロとして書かれた値で、区別して比較します。

品番,倉庫,ロット,数量
A-01,東,L01,10
A-01,東,L02,5
B-02,東,L03,0
C-03,西,L04,2

ロット別の旧一覧CSVを左へ、新一覧CSVを右へ入れます。新一覧は行順も変えています。

品番,倉庫,ロット,数量
A-01,東,L02,7
B-02,東,L03,
A-01,東,L01,10
D-04,西,L05,3
  1. キー列を左右とも1列目の品番と2列目の倉庫、比較列を4列目の数量にして「差異を確認する」を押します。A-01・東 は左右に2行ずつあり、関係する4行が判定不能になります。
  2. 「キー列を追加」を押し、追加した左右の列番号を3にします。品番・倉庫・ロットの3列をキーにして、同じ数量列を比較します。
  3. 結果を下の表と照らし合わせます。行番号は見出しを除くデータ行の番号です。
品番・倉庫・ロット旧数量新数量期待結果
A-01・東・L011010一致
A-01・東・L0257差異
B-02・東・L030空欄差異
C-03・西・L042行なし左のみ
D-04・西・L05行なし3右のみ

3列キーでは一致1件・差異2件・左のみ1件・右のみ1件・判定不能0件です。確認用の期待結果CSVは、この架空例を照合する資料です。ツールから保存した結果ファイルとは別です。「左のみ」「右のみ」は、在庫の消滅や新規発生を確定する結果ではありません。抽出条件と元資料へ戻って確認します。

ロットが空欄、または3列でも重複する場合

キーを3列に増やしても、空欄や同じ組合せの重複が残れば対応を決められません。未解決例の旧CSVと新CSVでは、A-01・東・L01 の重複と、B-02・東 の空ロットを入れています。同じ3列キーと4列目の数量で実行すると、関係する5行すべてが判定不能になります。

この場合は先頭の行を採用したり、数量を合算して重複を隠したりせず、明細番号や抽出範囲を元データで確認します。片方が倉庫単位、もう片方がロット単位の一覧なら、キーの追加だけで揃えることはできません。

倉庫列もない場合はどうする?

まず元システムの明細番号、ロット番号、登録日など、仕事上その行を区別する値を探します。値がないまま重複を削除すると、別の在庫を失うかもしれません。CSVチェックで重複キーの行を特定し、元システムの担当者へ確認する方法もあります。001 と 1、前後の空白は自動的に同じ値にはならないため、正規化の可否も業務のルールで判断します。

重複箇所だけを調べるならCSVチェックも使えます。こちらは指定したキー列の重複を報告し、入力を自動で修正しません。

この例は行の対応を見つける方法です。数量の合算、分納の判断、在庫の正しさは自動判定しません。まず原本を残し、対象行と抽出条件を確認してください。

仕入先と自社で品番そのものが違う場合は、キー列を追加する前に品番対応表の未登録・重複を確認する方法を参照してください。

参考資料

あわせて読みたい

同じテーマの記事を見る