この記事を読むのに必要な時間は約 4 分です。
物言わぬ政治家と同じくらい怖いエラーにならない実行結果
データの上限ありました。
たまにやる超個別記事です。
何でもかんでものりでやっちゃう私ですが、今回e-statからのデータ抜出を当然仕様書なんか読まないでやってみて痛い目にあいましたのでいちおー紹介しておきます。
データを引っこ抜いてみてSQL文を書いてみてどうしても納得がいかない結果になったのですが、結果自体はちゃんとでているので、どこがわるいのかな・・・・って思っていたのですが、源泉情報は正しく、引っこ抜いたときに、エラーにならずに終わっているのが原因でした・・・・・
なんと、一度に取得できるデータの上限は10万件とのことで、私が引っ張っていたデータが200万件ぐらいありました。
こういう時はエラーになってほしいな・・・・
ちゃんと書いてました。
仕様書ですが、以下の通り記載があります。
https://www.e-stat.go.jp/api/sites/default/files/uploads/2016/07/API-specVer2.1.pdf
ちょっとこの書き方は頂けないな・・・
あたかも初期値が10万件でもっとふやしたいときはlimit句で制御すればいい感じ書かれていますが、
limit句で10万件以上は取得できないようです・・・・
なので、このlimit句は上限値をもっと少なくする場合に使うんでしょうね。
試しにlimit句を10ぐらいにしてみて・・・
実行してみた結果がこれです。
4か所に●付けていますが、それぞれが今回の対応で必要な情報ですね。
START_POSITION
この値が毎度毎度の開始位置になります。
LIMIT
今回、データを見るだけでしか使いませんでしたが、上限値がこれで分かります。
TOTAL_NUMBER
取得したいデータの総量です。
このデータが一番大事ですね。
NEXT_KEY
今回使いませんでしたが、データが取得できなかった場合、次から取得する開始位置となります。
つまり、次回のSTART_POSITIONに指定する値ですね。
APIを使ってe-statからデータを取得するなら
綺麗にするならばこんな感じですかね。
1.Limitで上限をまずは確認
2.初めは1から始めて、Next_keyの値を確認し上限値を超えていなかったら次回のSTART_POSITIONに指定
3.上限にたどり着くまで繰り返し
ただ、綺麗さを求めないで良いのであれば・・・・
こんな感じでstartPositionを10万ずつふやして繰り返した方が早いかもしれません。
※データの上限が分かっている場合のみ利用可能な方法なので自動化は無理かな?
同じような事で悩んでいる人がいましたらご参考に♪
(´◉◞౪◟◉)