function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
マスターキートン!マスターキートン! 

大量データの取り扱いについて

salesforceにあるデータを外部javaからoAuth等で取得する際についてですが、20万件程度を取得するとことは可能でしょうか。
 
Best Answer chosen by マスターキートン!
Taiki YoshikawaTaiki Yoshikawa
以前、JavaScriptからSalesforce APIを実行して大量件数を取得する処理を試したことがあります。

SFDC:【大量データ処理】JSforceとqueryMoreでレコードの一括表示
http://tyoshikawa1106.hatenablog.com/entry/2015/03/30/024849

JavaScriptからSalesforce APIを実行するのにはJSforceというライブラリを利用していますが、おそらくREST APIでも処理の書き方が少し違うだけで同じことができるはずです。

このとき、12万件までは取得して表示できることを確認しました。ですが、全件表示するのに時間がかかり画面の操作も重くなった記憶があります。(検証時は発生しませんでしたがタイムアウトする可能性も考えられます。)


検証時の動画もありました。

Force.com Demo #54 - JSforce AutoFetch Search 
https://www.youtube.com/watch?v=1jgzigM3a2g


無条件に大量データを取得する画面の場合、API消費数の問題も考えられます。基本的には検索条件で絞り込んで必要なレコードのみ取得する仕様にするのが良いと思います。SELECT()でレコード件数を取得するだけなら特に問題なく習得できると思います。

All Answers

Taiki YoshikawaTaiki Yoshikawa
Bulk APIを利用する方法で取得することができると思います。開発者ガイドにも「Bulk API は、千から百万単位のレコードのデータを簡単に読み込めるように設計されています。」と記載がありました。実際にやってみたときにうまくいかない部分や考慮しないといけないことなど発生するかもしれませんが、検討してみてください。

Bulk API の概要
https://developer.salesforce.com/docs/atlas.ja-jp.202.0.api_asynch.meta/api_asynch/asynch_api_intro.htm
マスターキートン!マスターキートン!
いつもお世話になっております。
ご回答誠にありがとうございます。

bulkですが非同期というところが、実装時にいろいろ検討する必要がでてくるため、
bulkもよいですが、できますならば、すでに実装してあるRestApiで済ませたいです。

以下URLで、
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm

"nextRecordsUrl" : "/services/data/v20.0/query/01gD0000002HU6KIAW-2000"

上記nextRecordUrlの記載がありますが、
ここの末尾で指定している-2000の2000は、取得件数(limit)になるのでしょうか。
また、2000以上の指定が可能なのかについても不明なのですが、
もしご存知でしたら教えていただければ幸いです。

1リクエストで基本的に25リクエストまで許可される仕様のようですので、
2000件の場合、25*2000で50000件までは取得できるとなります。
もし5000件と指定できるのであれば、25*5000で12万件は取得でき、
それならば、良しとできる状況です。

ご回答いただければ幸いです。
ありがとうございます。




 
Taiki YoshikawaTaiki Yoshikawa
以前、JavaScriptからSalesforce APIを実行して大量件数を取得する処理を試したことがあります。

SFDC:【大量データ処理】JSforceとqueryMoreでレコードの一括表示
http://tyoshikawa1106.hatenablog.com/entry/2015/03/30/024849

JavaScriptからSalesforce APIを実行するのにはJSforceというライブラリを利用していますが、おそらくREST APIでも処理の書き方が少し違うだけで同じことができるはずです。

このとき、12万件までは取得して表示できることを確認しました。ですが、全件表示するのに時間がかかり画面の操作も重くなった記憶があります。(検証時は発生しませんでしたがタイムアウトする可能性も考えられます。)


検証時の動画もありました。

Force.com Demo #54 - JSforce AutoFetch Search 
https://www.youtube.com/watch?v=1jgzigM3a2g


無条件に大量データを取得する画面の場合、API消費数の問題も考えられます。基本的には検索条件で絞り込んで必要なレコードのみ取得する仕様にするのが良いと思います。SELECT()でレコード件数を取得するだけなら特に問題なく習得できると思います。
This was selected as the best answer