CSV出力を製品上限ぎりぎりにしなかった――安全率をかけた件数で分割した運用
大量データをCSV形式で出力しようとして、製品上限エラーが発生したことがありました。
私が携わったプロジェクトでは、利用者が画面からCSVを出力していました。出力対象が製品の上限行数を超えると、CSVを作成できませんでした。
そこで、製品上限ぎりぎりまで出力するのではなく、上限件数に安全率をかけた件数を運用上の基準にしました。利用者は画面で対象件数を確認し、基準を超える場合は検索条件や抽出範囲を調整して、複数回に分けてCSVを出力していました。
前回は、繁忙期のバッチ起動時刻と監視時間を年間スケジュールに設定した運用を紹介しました。
今回は、大量データのCSV出力で発生した製品上限エラーに対し、安全率をかけた件数で分割する手順へ変更した経験を紹介します。
大量データのCSV出力で製品上限エラーが発生した
対象データを一度にCSV出力しようとすると、製品上限エラーになることがありました。
エラーの原因は、画面から出力しようとしたデータの行数が、製品の上限を超えていたことです。
製品上限を超えたことは、画面に表示されたエラーから確認できていました。
この問題に対して、利用者が何度も同じ操作を試すだけでは解決しません。出力対象を、製品上限以内に分ける必要がありました。
出力前に対象件数を画面で確認した
利用者は、CSVを出力する前に、画面上で対象件数を確認できました。
まず、検索条件や抽出範囲を指定し、出力対象となるデータの件数を画面で確認します。その件数が運用上の基準以内であれば、CSVを出力します。
基準を超えている場合は、そのまま出力せず、画面操作で検索条件や抽出範囲を調整していました。
件数を確認できる仕組みがあったため、エラーが出てから分けるのではなく、出力前に分割が必要かを判断できました。
製品上限をそのまま運用基準にはしなかった
分割基準には、製品の上限件数をそのまま使用していませんでした。
製品上限に安全率をかけた件数を、運用上の基準として固定していました。
今回の運用では、製品上限そのものではなく、それより低い固定基準を使っていました。
ここでの要点は、利用者がその都度「このくらいなら出力できそうだ」と判断したのではなく、運用手順で共通の分割基準を決めていたことです。

※製品上限よりも低い位置に、安全率を反映した運用基準を設ける考え方を示すイメージです。具体的な数値は使用しません。
画面操作で抽出範囲を分けた
出力対象件数が運用基準を超える場合は、画面上の検索条件や抽出範囲を変更していました。
条件を分けた後、対象件数が基準以内になっていることを画面で確認し、CSVを出力します。残りの範囲についても条件を変更し、同じように件数を確認して出力します。
この操作を、必要な範囲をすべて出力するまで繰り返していました。
システムが自動的に複数のCSVへ分割したわけではありません。運用手順に沿って、利用者が画面上で条件を調整し、複数回に分けて出力していました。

※対象件数の確認、基準との比較、抽出範囲の調整、CSV出力を繰り返す流れを示すイメージです。
出力後のCSVは用途に応じて扱った
複数回に分けて出力したCSVを、その後どう扱うかは利用者の用途によって異なりました。
複数のCSVを結合して使うこともあれば、分割したまま使うこともありました。
そのため、出力後に必ず一つのファイルへ結合する手順ではありませんでした。
今回の運用手順が対象にしたのは、製品上限エラーを避けて、必要なデータをCSVとして出力するところまでです。
分割手順へ変更後、同じ上限エラーは発生しなくなった
画面で対象件数を確認し、運用基準以内に分けて出力する手順へ変更した後、同じ製品上限エラーは発生しなくなりました。
これは、CSV出力に関するすべての問題が解消したという意味ではありません。確認できているのは、製品上限を超えたことによる同じエラーが発生しなくなったことです。
製品上限を利用者の判断だけにしない
製品に上限がある場合、その数値を知っているだけでは運用手順になりません。
今回の運用では、出力前に何を確認するのか、どの件数を分割基準にするのか、基準を超えた場合にどの操作を行うのかまで決めていました。
今回の例では、画面で対象件数を確認し、安全率を反映した固定の運用基準と比較しました。基準を超える場合は、画面上で検索条件や抽出範囲を変更し、複数回に分けてCSVを出力しました。
利用者ごとに異なる判断をさせるのではなく、同じ基準で操作できるように運用手順へ残していました。
まとめ
大量データをCSV出力しようとしたとき、製品の上限行数を超えたことでエラーが発生していました。
対策では、製品上限をそのまま使わず、安全率をかけた件数を運用上の分割基準として固定しました。
利用者は、出力前に画面で対象件数を確認します。基準を超えている場合は、検索条件や抽出範囲を画面上で調整し、複数回に分けてCSVを出力していました。
出力後のCSVは、利用者の用途に応じて結合する場合と、分割したまま使う場合がありました。
この手順へ変更した後、製品上限を超えたことによる同じCSV出力エラーは発生しなくなりました。
製品の上限を運用で補う場合は、上限値を知らせるだけでなく、出力前の確認方法、運用上の基準、基準を超えた場合の操作まで一つの手順として決めることが重要でした。
次の記事:
