データを取り込んだり集計したりするときは、元の数値が正しく引き継がれているか、必要な範囲が揃っているかを確かめます。そのための作業の一つが、対応するデータ同士を比べる「照合」です。
たとえば、売上CSVをExcelに取り込んだ後、取引番号を手がかりに元データと金額を比べます。「不一致0件」と出れば、比較できた取引の金額に違いは見つかりませんでした。ただ、元データが見つからない取引や、式を入れていない行が残っていれば、その金額はまだ確かめられていません。
確認を終えるには、結果の数字に加えて、対象範囲と作業の進み具合を見る必要があります。ここではExcelやCSVの確認を例に、照合結果の読み方と、作業を終えてよいか判断するための確認方法を整理します。
照合の目的と確認範囲
「不一致0件」を読む前に、今回の確認を一文で説明してみます。たとえば、「今月の売上CSVについて、同じ取引番号の元データと金額を比べた」という形です。
この一文には、比べる項目が「金額」、対応を探す手がかりが「取引番号」、対象範囲が「今月」と示されています。同じ取引番号が複数行に分かれるデータなら、行ごとに比べるのか、取引ごとに合計して比べるのかも決める必要があります。
また、月の合計額が一致していても、個々の取引の金額まで一致したとは限りません。ある行が多く、別の行が同じ分だけ少なければ、合計は同じになります。日付、単位、端数の扱いなども含め、確かめたいことに合う比べ方だったかを先に確認します。
照合結果が示せるのは、その対象と方法で確かめた範囲です。「0件」という数字だけを切り離すと、この範囲が見えなくなります。
照合結果の読み方
結果を見るときは、比較できた件数だけでなく、比較できなかったものや未実行のものも確かめます。まず、100件のCSVを使った例で、確認がどこまで進んでいるかを見てみましょう。
比較できた件数を確かめる
対応する値を比べられたときは、「一致」か「不一致」かを判断できます。図1では今月の90件が確認対象ですが、金額を比較できたのは70件です。
説明用の架空例です。取引1件につき、金額を1回照合する想定です。
CSVに含まれる取引:100件
対象外:10件
前月の取引。事前に決めた「今月分の金額確認」には含めません。
今回の確認対象:今月の90件
- 比較できた:70件 → 一致70件・不一致0件
対応する元データと金額を比較できました。 - 比較できない:15件
確認を試みましたが、対応する元データが見つかりませんでした。 - 未実行:5件
確認用の式を入れておらず、まだ比較を試みていません。
分かるのは「比較できた70件に不一致がない」こと。
確認対象90件すべての金額が一致した、とは言えません。
この例では、不一致0件という結果は、比較できた70件について意味を持ちます。しかし、確認対象90件のうち20件は、一致か不一致かをまだ判断できていません。
対象外は、今回の確認範囲に入れていないもの
図の前月分10件は、「今月分の確認」という目的に沿って外しています。これらを確認済みと数えることはできませんが、今回の確認漏れとも限りません。対象外にした理由が目的に合っているかを確かめます。誤った絞り込みで今月分まで外れていたなら、確認対象を直す必要があります。
比較できないものは、理由を確かめる
図の15件は、確認を試みたものの、比較に必要な元データが見つからなかったものです。この時点では、金額が一致するかどうかを判断できません。必要な元データをまだ受け取っていないのか、取引番号の表記違いで見つからないのかを調べ、理由に応じて対応します。
未実行は、確認処理をまだ行っていないもの
図の5件は、確認用の式を入れていないため、比較を試みていません。この5件は、まず式の適用範囲を直して実行し、その結果を見ます。CSVの一部だけを読み込んだ場合や、処理が途中で止まった場合にも、予定した範囲を処理し終えたかを確認します。
対象外にした理由を見直す、式を適用する、元データを探す。それぞれ必要な対応があるため、件数と理由を分けて残しておくと、次の作業につながります。
確認を終えるための判断基準
確認を終えてよいかは、不一致の件数だけでは決まりません。何に使うデータか、そのためにどの確認を必須とするかを決め、その条件を満たしたかで判断します。対象と方法が適切で、必要な確認を実行し、事前の条件を満たしていれば、不一致0件を確認完了の根拠にできます。
図1の作業で「今月の90件すべてについて、元データと金額が一致すること」が条件なら、現時点では完了にできません。未実行の5件を確認し、比較できない15件の理由を調べる必要があります。
一方、過去データが必要な確認を含む場合は、準備段階から「この期間は比較に必要なデータがない」と分かっていることもあります。こうした想定内の比較不能も、理由と対象を記録しておきます。想定していなかった比較不能なら、データの不足や処理の問題がないか追加で調べます。
想定内だから無条件に合格にするわけではありません。その確認が用途上必須なら保留にします。別の用途について判断する場合も、その用途に必要な確認を満たしたかを確かめ、完了と言える範囲を明示します。結果を見てから、都合の悪い対象を黙って外すこととは区別が必要です。
不一致があるときも、件数だけで判断しない
不一致が見つかったら、元の値、対応するデータの選び方、計算方法などを調べます。値の誤りなのか、比較方法の違いなのかによって対応が異なります。理由が分かった場合も、どの対象に何が起き、利用時にどう扱うのかを残します。
見つかった相違が用途に影響するかも調べます。必要な確認が終わったか、何が残り、利用時にどう扱うかを踏まえて、完了・保留・追加確認を判断します。
実務で見る「不一致0件」
アナリティクス沖縄の人口データでも、不一致の件数を読むには、比較できた範囲と、残ったものの扱いを確かめる必要があります。まず、必要な過去データが足りない例を見てみます。
不一致0件でも、年間の増減を確かめられない対象が残る
沖縄県の推計人口データを取り込む際、公表された年間の人口増減を、12か月分の月々の増減の合計と照合しています。2026年10月20日の作業記録では、この年間照合は一致288件、不一致0件、照合不能72件でした。不一致はありませんが、72件は一致かどうか判断できていません。これは当時の記録であり、現在のDB全体を再集計した件数ではありません。
照合不能になる具体例を、2026年10月24日にDBで確認しました。2021年10月1日を終点とする沖縄県計の年間人口増減です。
| 確認する期間 | 2020年10月1日〜2021年10月1日(終点の日を含まない) |
|---|---|
| 公表された年間人口増減 | +1,046人 |
| DBで確認できた月次データ | 12か月のうち1か月分のみ 2021年9月1日〜10月1日:+51人 |
| 年間照合の結果 | 照合不能(比較できない) |
2026年10月24日のDB取得結果を、記事用の表に整理。沖縄県計・男女計・国籍計、2015年国勢調査を基準とするデータです。
+51人は、DBにある1か月分の値です。年間の+1,046人と差し引いて「995人の不一致」と数えることはできません。年間の増減を確かめるには、残り11か月分も必要だからです。ここで記録すべきなのは、年間の照合を終えられていない対象と、その理由です。
表1と同じ対象を確認した実行SQLと、そのCSV出力を以下に掲載します。
実行SQL(年間照合部分を抜粋)
-- A05: 県計・年間人口増減の実データ確認。SELECT のみ。
-- 必要月数12は照合条件として明示した定数。観測値ではない。
-- 月次小計はDBに存在する月だけの合計。12か月合計とは呼ばない。
WITH f AS MATERIALIZED (
SELECT x.* FROM population.v_flow_latest x JOIN ref.region r USING(region_id)
WHERE r.code='47' AND x.measure_code='total_change'
AND x.sex='total' AND x.nationality='total'
AND x.period_start>=DATE '2020-10-01' AND x.period_end<=DATE '2021-10-01'
), a AS (
SELECT * FROM f WHERE reported_as='annual' AND period_end=DATE '2021-10-01'
)
SELECT r.name_ja AS "地域", a.period_end AS "期間終点",
k.expected AS "公表年間増減_人", 12 AS "必要月数_照合条件",
m.available_months AS "存在月数",k.actual AS "月次小計_人",k.status AS "判定"
FROM a JOIN ref.region r USING(region_id)
JOIN population.v_check_annual k ON k.ref_date=a.period_end AND k.region_id=a.region_id
AND k.measure_code=a.measure_code AND k.sex=a.sex
AND k.nationality=a.nationality AND k.basis=a.basis
CROSS JOIN LATERAL (
SELECT count(*) AS available_months FROM f
WHERE reported_as='monthly' AND basis=a.basis
) m;実行結果(CSV出力、対応部分を抜粋)
地域,期間終点,公表年間増減_人,必要月数_照合条件,存在月数,月次小計_人,判定
沖縄県,2021-10-01,1046,12,1,51,uncheckable出力のuncheckableは、比較に必要な月次データが揃わず、照合できないことを表します。
手元のCSVでも、「必要な月が揃っているか」を確かめずに合計だけを比較すると、確認できていない範囲が見えにくくなります。不一致の件数とあわせて、比較に使えた期間や件数を確認します。
不一致を0件にするために、公表値を書き換えない
もう一つ、「0件」を目標にしてしまうと判断を誤りやすい例があります。公表された率と、元の世帯数から計算した率の相違です。
| 前年同月の世帯数 | 653,466世帯(2025年1月1日) |
|---|---|
| 当月の世帯数 | 662,199世帯(2026年1月1日) |
| 公表された増減率 | 1.42% |
| 世帯数から計算した増減率 | 約1.336412% |
| 率の照合結果 | 不一致 |
2026年10月24日のDB取得結果を記事用に整理。世帯数は2020年国勢調査を基準とするデータです。計算率は表示用に小数第6位まで丸めています。
計算は「(662,199−653,466)÷653,466×100」です。公表率はそのまま保存し、計算率は保存された世帯数から求めて表示しています。計算率に合わせて公表率を上書きすれば、不一致を見かけ上なくせても、元の資料にどの数字が載っていたかを追えなくなります。
このファイルには、比較に使われた月がずれているという注記も記録されています。ただし、今回確認したのはDBに保存された注記であり、公表原本を開き直して原因を検証したわけではありません。利用時には、公表率を示すのか、世帯数から計算した率を使うのかを明らかにし、相違の説明を添えます。
大切なのは、不一致を0件に見せることではなく、必要な確認を終え、残った相違を読者や利用者が追えるようにすることです。
手元の作業で確認する4項目
次に「不一致0件」という結果を見たら、次の順に確認してみてください。
- 対象範囲:何と何を、どの期間・項目・単位で比べたか。対象外にしたものと理由は、目的に合っているか。
- 実行状況:必要な確認を予定した範囲に実行したか。式の未入力、読み込み漏れ、途中停止が残っていないか。
- 結果の内訳:比較できて一致したもの、不一致だったもの、比較できなかったものを把握できるか。
- 残った例外:不一致や比較不能の対象・理由・扱いを説明できるか。理由が分からないものについて、次の確認を決めているか。
結果を残すときも、「不一致0件」だけでなく、確認した範囲と残っている作業を添えます。図1なら、「今月の90件中、比較できた70件は一致。15件は比較相手を調査中、5件は未実行」と書けば、次に何をすべきかが伝わります。
確認を終える根拠は、0件という数字の見た目ではなく、決めた目的に対して、必要な確認と残ったものの扱いを説明できることです。
この記事の分析について
使用資料
アナリティクス沖縄の沖縄県推計人口データベース(2026年10月24日確認)、2026年10月20日の年間照合作業記録、人口データの取り込み・照合に関する振り返り資料。表1の年間公表値は「pop202110r.xls」、表2の世帯数・公表率は「pop202501.xls」「pop202601.xlsx」に由来するDB内の値。
手法
照合の対象範囲・実行状況・結果・残る例外の整理。図1はCSVを想定した架空例。表1・表2は読み取り専用で取得したDBの値・判定を記事用に整理し、世帯数の増減率を計算式でも確認。
確認範囲と限界
2026年10月24日のDB確認は、掲載した具体例とその比較に必要なデータを対象としています。2026年10月20日の全体件数を再監査したものではなく、現在のDB全体が「不一致0件」だと示すものでもありません。公表原本の再照合は行っておらず、原因に関する注記は保存された説明として紹介しています。図1の件数は実測値ではありません。ここで挙げた確認だけで、あらゆるデータの正しさを保証するものではありません。
