ステップ 2: レポートを非同期に実行する
レポートを非同期に実行するというのは、要求を送信してからしばらく後に結果を取得するということです。API を使用したレポートの非同期実行にはいくつかの利点があります。
- 非同期に実行すると、結果は実行後 24 時間いつでも使用できるキャッシュに保持されます。また、キャッシュされた結果を再利用する API コマンドでは、1 時間あたり 1,200 個の要求制限にはカウントされません (ただし、一般的な API 要求の制限ではカウントされます)。
- 非同期レポートでは、タイムアウト期間がより長く設定されています。そのため、レポートが非常に大きなデータセットを対象としていることがわかっていて、タイムアウトのリスクを回避したい場合は、非同期に実行することをお勧めします。
- 1 時間あたり最大 1,200 個の非同期レポートを実行できます。これは、同期レポートの制限の 2 倍以上です。そのため、多数のユーザがアプリケーションを参照することが見込まれる場合は、非同期実行が適切である可能性があります。
-
POST コマンドを https://<instance>//analytics/reports/<reportId>/instances に送信して、非同期レポートを実行します。コマンドは次のようになります。
1curl -s -H 'Authorization: OAuth token ...' https://na1.salesforce.com/services/data/v29.0/analytics/reports/00OD0000001ZbP7MAK/instances -X POST -d '' -
非同期実行の結果を取得するには、GET を使用してレポート実行インスタンスをポーリングします。
レポートの特定の非同期実行はインスタンスと呼ばれます。各インスタンスには ID があります。インスタンスに含まれるデータセットを取得するには、該当するインスタンスをその ID で指定してシステムに要求を送信します。これは、インスタンスのポーリングと呼ばれています。レポートの実行が完了すると、ポーリング要求への応答として、要求したデータセットが返されます。(完了しなかった場合は、「in progress (処理中)」という応答が返されます)。
1curl -s -H 'Authorization: OAuth token ...' https://na1.salesforce.com/services/data/v29.0/analytics/reports/00OD0000001ZbP7MAK/instances/instance_id
これで、レポートの同期実行および非同期実行を行うことができました。次に、得られた結果を絞りこむことで、データをさらに活用できるようにします。