一括抽出

Marketoには、一括抽出と呼ばれる、顧客および顧客関連の大きなデータセットを取得するためのインターフェイスが用意されています。 現在、インターフェイスは次の 3 つのオブジェクトタイプで提供されています。

  • リード (顧客)
  • アクティビティ
  • プログラムメンバー
  • カスタムオブジェクト

一括抽出を実行するには、ジョブを作成し、取得するデータのセットを定義し、ジョブをキューに入れ、ジョブがファイルの書き込みを完了するのを待ってから、HTTP 経由でファイルを取得します。 これらのジョブは非同期で実行され、ポーリングによって書き出しのステータスを取得できます。

Note: 他のエンドポイントとは異なり、 Bulk API エンドポイントの先頭には「/rest」は付いていません。

認証

Bulk extract API では、他のMarketo REST API と同じ OAuth 2.0 認証方式を使用します。 これには、有効なアクセストークンを HTTP ヘッダー Authorization: Bearer {_AccessToken_} として送信する必要があります。

IMPORTANT
access_token クエリパラメーターを使用した認証のサポートは、2025 年 6 月 30 日(PT)に削除されます。 プロジェクトでクエリパラメーターを使用してアクセストークンを渡す場合は、できるだけ早く Authorization ヘッダーを使用するように更新する必要があります。 新しい開発では、Authorization ヘッダーのみを使用する必要があります。

制限

  • 最大の同時書き出しジョブ数:2
  • 最大キュー内エクスポートジョブ数(現在エクスポートされているジョブを含む) : 10
  • ファイル保存期間:7 日
  • 1日当たりのエクスポート可能なデータ数上限値:500 MB (CST時間の午前0時にリセットされます)。追加購入(有償プラン)により上限値の引き上げが可能です。
  • 日付範囲フィルター(createdAt または updatedAt)の最大期間:31 日

UpdatedAt およびスマートリスト用の一括リード抽出フィルターは、一部の購読タイプでは使用できません。 使用できない場合、エクスポートリードジョブを作成エンドポイントの呼び出しで、「1035、ターゲット購読でサポートされていないフィルタータイプ」というエラーが返されます。 お客様は、Marketo サポートに連絡して、この機能をサブスクリプションで有効にすることができます。

キュー

一括抽出 API は、ジョブキュー(リード、アクティビティ、プログラムメンバー、カスタムオブジェクトの間で共有)を使用します。 抽出ジョブを最初に作成する必要があります。次に、「エクスポートリード/アクティビティ/プログラムメンバージョブを作成」および「エクスポートリード/アクティビティ/プログラムメンバージョブをエンキュー」エンドポイントを呼び出して、キューに入れます。 キューに入ると、ジョブはキューから取り出され、計算リソースが使用可能になったときに開始されます。

キュー内のジョブの最大数は 10 です。 キューがいっぱいになったときにジョブをエンキューしようとすると、エンキュー書き出しジョブ エンドポイントで「1029, キュー内のジョブが多すぎます」というエラーが返されます。 最大 2 つのジョブを同時に実行できます(ステータスは「処理中」)。

ファイルサイズ

一括抽出 API は、一括抽出ジョブで取得したデータのディスク上のサイズに基づいて計測されます。 エクスポートジョブの完了ステータス応答から fileSize 属性を読み取ることで、ジョブの明示的なサイズ(バイト単位)を決定できます。

1 日の割り当て量は最大 500 MB/日で、リード、アクティビティ、プログラムメンバー、カスタムオブジェクトで共有されます。 クォータを超えた場合、毎日のクォータが午前 0 時( 中央時間にリセットされるまで、別のジョブを作成またはキューに入れることができせん。 その時点まで、「1029、書き出し日の割り当て量を超過」というエラーが返されます。 毎日の割り当て量を除き、ファイルの最大サイズはありません。

ジョブがキューに入れられるか処理されると、完了まで実行されます(エラーまたはジョブのキャンセルが許可されません)。 ジョブが何らかの理由で失敗した場合は、再作成する必要があります。 ジョブが完了状態に達した場合にのみ、ファイルが完全に書き込まれます(部分的なファイルは書き込まれません)。 ファイルが完全に書き込まれたことを確認するには、ファイルの SHA-256 ハッシュを計算し、ジョブステータスエンドポイントから返されるチェックサムと比較します。

「Get Export Lead/Activity/Program Member Jobs」を呼び出すことで、現在の日付に使用されているディスクの合計容量を判断できます。 これらのエンドポイントは、過去 7 日間のすべてのジョブのリストを返します。 このリストは、status 属性と finishedAt 属性を使用して、当日に完了したジョブのみにフィルタリングできます。 次に、これらのジョブのファイルサイズを合計して、使用される合計量を算出します。 ディスク領域を再利用するためにファイルを削除する方法はありません。

権限

一括抽出では、Marketo REST API と同じ権限モデルを使用し、使用するために特別な権限は必要ありませんが、エンドポイントのセットごとに専用の権限が必要になります。

一括抽出ジョブは、ジョブを作成した API ユーザーからのみアクセスできます(ステータスのポーリングやファイル内容の取得など)。

Bulk Extract エンドポイントは、Marketo ワークスペースを認識しません。 抽出リクエストには、カスタムサービスの API のみのユーザーを定義する方法に関係なく、常にすべてのワークスペースにわたるデータが含まれます。

ジョブの作成

Marketoの一括抽出 API は、データ抽出を開始および実行するためのジョブの概念を使用します。 簡単なリードエクスポートジョブの作成を見てみましょう。

POST /bulk/v1/leads/export/create.json
{
   "fields": [
      "firstName",
      "lastName"
   ],
   "format": "CSV",
   "columnHeaderNames": {
      "firstName": "First Name",
      "lastName": "Last Name"
   },
   "filter": {
      "createdAt": {
         "startAt": "2023-01-01T00:00:00Z",
         "endAt": "2023-01-31T00:00:00Z"
      }
   }
}

この単純なリクエストでは、2023 年 1 月 1 日(PT)から 2023 年 1 月 31 日(PT)の間に作成された各リードを含む、「firstName」フィールドと「lastName」フィールドに含まれる値を返すジョブを作成し、列ヘッダー「First Name」と「Last Name」を CSV ファイルとして含めます。

{
   "requestId": "e42b#14272d07d78",
   "success": true,
   "result": [
      {
         "exportId": "ce45a7a1-f19d-4ce2-882c-a3c795940a7d",
         "status": "Created",
         "createdAt": "2023-01-21T11:47:30-08:00",
         "queuedAt": "2023-01-21T11:48:30-08:00",
         "format": "CSV",
      }
   ]
}

ジョブを作成すると、exportId 属性のジョブ ID が返されます。 その後、このジョブ ID を使用して、ジョブをキューに入れたり、キャンセルしたり、ステータスを確認したり、完了したファイルを取得したりできます。

共通パラメーター

各ジョブ作成エンドポイントは、一括抽出ジョブのファイル形式、フィールド名、フィルターを設定するための一般的なパラメーターをいくつか共有しています。 抽出ジョブの各サブタイプには、追加のパラメーターを指定できます。

パラメーター
データタイプ
注意
format
文字列
抽出されたデータのファイル形式を、コンマ区切り値、タブ区切り値、およびセミコロン区切り値のオプションと共に決定します。 CSV、SSV、TSV のいずれかを使用できます。 形式のデフォルトは CSV です。
columnHeaderNames
オブジェクト
返されるファイルの列ヘッダーの名前を設定できるようにします。 各メンバーキーは、名前を変更する列ヘッダーの名前であり、値は列ヘッダーの新しい名前です。 例:"columnHeaderNames": { "firstName": "First Name", "lastName": "Last Name" },
filter
オブジェクト
抽出ジョブに適用するフィルター。 タイプとオプションは、ジョブタイプによって異なります。

ジョブを取得中

最近のジョブを取得する必要が生じる場合があります。 これは、対応するオブジェクトタイプの「書き出しジョブを取得」を使用すると簡単に実行できます。 各 Get 書き出しジョブ エンドポイントは、status のフィルターフィールド、  返されるジョブの数を制限し、大きな結果セットをページングする nextPageTokenbatchSize 定します。 ステータスフィルターでは、エクスポートジョブの有効な各ステータス(作成済み、待機中、処理中、キャンセル済み、完了および失敗)がサポートされます。 batchSize の最大値とデフォルトは 300 です。 リードエクスポートジョブのリストを取得しましょう。

GET /bulk/v1/leads/export.json?status=Completed,Failed
{
   "requestId": "e42b#14272d07d78",
   "success": true,
   "result": [
      {
         "exportId": "ce45a7a1-f19d-4ce2-882c-a3c795940a7d",
         "status": "Completed",
         "createdAt": "2017-01-21T11:47:30-08:00",
         "queuedAt": "2017-01-21T11:48:30-08:00",
         "startedAt": "2017-01-21T11:51:30-08:00",
         "finishedAt": "2017-01-21T12:59:30-08:00",
         "format": "CSV",
         "numberOfRecords": 122323,
         "fileSize": 123424,
         "fileChecksum": "sha256:c16514c7e80fcac5ea055dacae9617fc3c29aff5365e3743071313ce0ed2a815"
      }
      ...
   ]
}

エンドポイントは status 結果の配列のそのオブジェクトタイプに対して過去 7 日間に作成された各ジョブの応答で応答します。 応答には、呼び出しを行う API ユーザーが所有するジョブの結果のみが含まれます。

ジョブの開始

ジョブ ID を手にして、ジョブを開始しましょう。

POST /bulk/v1/leads/export/{exportId}/enqueue.json

これにより、ジョブの実行が開始され、ステータス応答が返されます。 エクスポートは常に非同期で行われるので、ジョブのステータスをポーリングして、完了したかどうかを確認する必要があります。 特定のジョブのステータスは、60 秒に 1 回以上更新されないので、それ以上の頻度でポーリングしないでください。 ただし、ほとんどのユースケースでは、5 分に 1 回を超える頻度でポーリングを行う必要はありません。 正常に書き出された各データは 10 日間保持されます。

ジョブステータスのポーリング

ジョブのステータスは簡単に判断できます。

ステータスは、作成した API ユーザーと同じ API ユーザーによって作成されたジョブに対してのみポーリングできます。

GET /bulk/v1/leads/export/{exportId}/status.json
{
   "requestId": "e42b#14272d07d78",
   "success": true,
   "result": [
      {
         "exportId": "ce45a7a1-f19d-4ce2-882c-a3c795940a7d",
         "status": "Completed",
         "createdAt": "2017-01-21T11:47:30-08:00",
         "queuedAt": "2017-01-21T11:48:30-08:00",
         "startedAt": "2017-01-21T11:51:30-08:00",
         "finishedAt": "2017-01-21T12:59:30-08:00",
         "format": "CSV",
         "numberOfRecords": 122323,
         "fileSize": 123424,
         "fileChecksum": "sha256:d9c73f0b6960c71623c8bafe29603b3e8e20fd0e4eeaefd119c0227506ea9be4"
      }
   ]
}

内部の status メンバーは、ジョブの進行状況を示します。Created、Queued、Processing、Cancelled、Completed、Failed のいずれかの値になります。 この場合、ジョブが完了したので、ポーリングを停止して、ファイルを取得し続けることができます。 完了すると、fileSize メンバーはファイルの全長をバイト単位で示し、fileChecksum メンバーにはファイルの SHA-256 ハッシュが含まれます。 ジョブのステータスは、完了または失敗ステータスに達してから 30 日間利用できます。

データの取得

ジョブが完了したら、ファイルを簡単に取得できます。

GET /bulk/v1/leads/export/{exportId}/file.json

応答には、ジョブの設定方法に従ってフォーマットされたファイルが含まれています。 エンドポイントは、ファイルのコンテンツを使用して応答します。 ジョブが完了していない場合や、無効なジョブ ID が渡された場合は、他の多くのMarketo REST エンドポイントとは異なり、ファイルエンドポイントは 404 Not Found のステータスで応答し、ペイロードとしてプレーンテキストのエラーメッセージが表示されます。

抽出されたデータの部分的で再開に適した取得をサポートするために、ファイルエンドポイントはオプションで bytes タイプの HTTP ヘッダー Range をサポートします(RFC 7233 準拠)。 ヘッダーが設定されていない場合は、コンテンツ全体が返されます。 ファイルの最初の 10,000 バイトを取得するには、GETリクエストの一部として、バイト 0 から始まる次のヘッダーをエンドポイントに渡します。

Range: bytes=0-9999

部分ファイルを取得する場合、エンドポイントは応答としてステータスコード 206 を返し、Accept-ranges、Content-Length および Content-Range ヘッダーを返します。

Accept-Ranges: bytes
Content-Length: 1000
Content-Range: bytes 0-9999/123424

部分的な取得と再開

ファイルは、一部を取得することも、Range ヘッダーを使用して後で再開することもできます。 ファイルの範囲は、バイト 0 から始まり、fileSize から 1 を引いた値で終わります。 また、ファイルの長さは、Get Export File エンドポイントを呼び出す際に、Content-Range 応答ヘッダーの値の分母としてレポートされます。 部分的に検索が失敗した場合は、後で再開できます。 例えば、1000 バイトの長さのファイルを取得しようとしたときに、最初の 725 バイトしか受け取っていない場合、エンドポイントを再度呼び出し、新しい範囲を渡すことにより、失敗した時点から取得を再試行できます。

Range: bytes 724-999

これは、ファイルの残りの 275 バイトを返します。

ファイルの整合性の検証

ジョブステータスエンドポイントは、「完了」の場合、fileChecksum 属性のチェックサム status 返します。 チェックサムは、書き出されたファイルの SHA-256 ハッシュです。 チェックサムを取得したファイルの SHA-256 ハッシュと比較して、ファイルが完全であることを確認できます。

チェックサムを含む応答の例を次に示します。

{
    "exportId": "45547609-6732-418a-bb7b-17b0160b2317",
    "format": "CSV",
    "status": "Completed",
    "createdAt": "2019-06-04T23:13:12Z",
    "queuedAt": "2019-06-04T23:14:02Z",
    "startedAt": "2019-06-04T23:15:19Z",
    "finishedAt": "2019-06-04T23:36:40Z",
    "numberOfRecords": 1776,
    "fileSize": 400785,
    "fileChecksum": "sha256:83aca1351c9398d2770330e21a9e278880fd2f1eeaf8c8238bf7676d5c21d1c6"
}

次に、sha256sum コマンドラインユーティリティを使用して「bulk_lead_export.csv」という名前の取得したファイルの SHA-256 ハッシュを作成する例を示します。

$ sha256sum bulk_lead_export.csv
83aca1351c9398d2770330e21a9e278880fd2f1eeaf8c8238bf7676d5c21d1c6 *bulk_lead_export.csv

ジョブのキャンセル

ジョブが誤って設定されていた場合や不要になった場合は、簡単にキャンセルできます。

POST /bulk/v1/leads/export/{exportId}/cancel.json
{
   "requestId": "e42b#14272d07d78",
   "success": true,
   "result": [
      {
         "exportId": "ce45a7a1-f19d-4ce2-882c-a3c795940a7d",
         "status": "Cancelled",
         "createdAt": "2017-01-21T11:47:30-08:00",
         "format": "CSV",
      }
   ]
}

ジョブがキャンセルされたことを示すステータスで応答します。

recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59