メインコンテンツへスキップ
エクスポートは 1 時間ごと、または UTC の 1 日ごとに、その期間の結果を gzip 圧縮の JSON Lines として Amazon S3 や Google Cloud Storage のバケットに書き込むか、BigQuery テーブルのパーティションに読み込みます。データウェアハウスは他のソースと同じ方法で読み込めるため、ポーリングのループは不要です。 バケットまたはデータセットに、当社のエクスポート用 ID への書き込み権限を付与するだけで、キーやパスワードを共有する必要はありません。このページのキー、バケット、アカウント ID、ロールはすべて例です。

エクスポートされるデータ

アカウントのどのキーで送信したタスクも、Playground とモニターが作成したタスクもすべて含まれます。1 つの期間には、時刻が [windowStart, windowEnd) に入る行だけが正確に入ります。 配信のタイミング。 期間は閉じてから 10 分後に配信対象になるため、境界で確定した課金も含まれます。配信対象の期間は 15 分ごとに実行されるジョブが取り上げるので、通常は期間が閉じてから 10〜25 分後に配信が始まります。

エクスポートを設定する

1

エクスポート用 ID を確認する

accountKey はお客様のフォルダーとテーブルの名前です。当社が書き込むすべてのパスとテーブルにこの値が入るため、複数の querying.ai アカウントが 1 つのバケットやデータセットを共有しても、それぞれ自分のファイルだけを書き込みます。権限は上の例ではなく、実際のレスポンスに表示された ID に付与してください。
2

権限を付与する

配信先へのアクセス権を ID に付与します。S3、Cloud Storage、BigQuery については権限を付与するを参照してください。
3

エクスポートを作成する

POST /v1/exports が権限を確認し、エクスポートを保存します。エクスポートを作成するを参照してください。
4

最初の配信を確認する

GET /v1/exports/{id}/runs が各期間とそのステータスを一覧表示します。配信履歴を参照してください。

権限を付与する

Amazon S3

当社の Google ID が引き受けられる IAM ロールを AWS アカウントに作成します。ID のレスポンスにある trustPolicy をロールの信頼ポリシーとして使います。このポリシーは、当社のエクスポート用 ID がお客様アカウントのセッション名で要求した場合だけを受け入れます。
ロールがプレフィックス配下に書き込めるよう、権限ポリシーをアタッチします。
バケットがカスタマー管理の KMS キーで暗号化している場合は、そのキーに kms:GenerateDataKey も許可します。

Google Cloud Storage

バケットでエクスポート用サービスアカウントに Storage Object User(roles/storage.objectUser)を付与します。ファイルを作成し、期間を再送したときにファイルを置き換えます。
付与をお客様のフォルダーに限定するには、IAM 条件 resource.name.startsWith("projects/_/buckets/acme-geo/objects/querying/acct_3f9a1c2b7d4e/") を追加します。

BigQuery

データセットでエクスポート用サービスアカウントに BigQuery Data Editor(roles/bigquery.dataEditor)を付与します。読み込みジョブは当社のプロジェクトで実行するため読み込み費用はかからず、お支払いはストレージと実行するクエリの分だけです。

エクスポートを作成する

エンジンのスコープがない API キーを使ってください。エクスポートはアカウントのすべての結果を送るため、一部のエンジンに限定されたキーでは 403 KEY_SCOPE になります。
保存する前に、エクスポートは権限を確認します。S3 と Cloud Storage では <prefix><accountKey>/_querying/connection-check.json を書き込み、BigQuery ではデータセットを読み取ってそのロケーションを記録します。確認に失敗した場合は何も保存されません。1 アカウントあたり最大 10 件のエクスポートを作成できます。 レスポンスは 201 で、エクスポートを返します。
S3 と Cloud Storage では、destination はバケットの設定をそのまま返し、ファイルが届くフォルダー path(例: s3://acme-geo/querying/acct_3f9a1c2b7d4e/、gs://acme-geo/querying/acct_3f9a1c2b7d4e/)を加えます。nextWindowStart は次に計画される期間の開始時刻です。

エラー

ファイルとテーブル

S3 と Cloud Storage のファイル

  • ディレクトリは Hive パーティション(dt=、時間別エクスポートなら hour=)に従うため、Athena、BigQuery 外部テーブル、Spark が列として読み取ります。
  • v1 はスキーマのバージョン(エクスポートの schemaVersion)です。列を壊す変更は v2 として並べて提供します。
  • 1 つの期間は、時刻順に最大 100,000 行ずつの part ファイルに分かれます。
  • _manifest.json は最後に書き込みます。マニフェストが存在する期間を読み込み、part の一覧はマニフェストから読んでください。
マニフェストの rows は part ファイルの行数と一致し、配信履歴の run の rows とも一致します。ファイル名は期間だけで決まるため、再送した期間は同じオブジェクトを置き換えます。

BigQuery テーブル

BigQuery エクスポートは querying_tasks_v1_<accountKey> と querying_monitor_results_v1_<accountKey> に読み込みます。テーブルは最初の読み込みで作成され、completedAt または ranAt でパーティション分割されます(日別、時間別エクスポートは時間別)。期間ごとに自分のパーティションを置き換えるため、再送した期間が二重になることはありません。payload、response、sources、scoringContext は JSON 列です。

行スキーマ (v1)

tasks

monitor_results

配信履歴

データセットごとの 1 期間が 1 つの run です。新しい順に一覧表示します。
status、data(tasks または monitor_results)、limit(1〜200、既定値 50)で絞り込めます。次のページは nextCursor を cursor として渡してください。
  • 自動再試行。 失敗した試行は 15 分後に再試行され、その後は間隔を倍にしながら最大 12 時間間隔で、合計 8 回まで試行します。error にはストレージ側の理由が入るため、権限の不足はまずここに表示されます。
  • 期間を再送する。 POST /v1/exports/{id}/runs/{runId}/retry は期間を今すぐ送ります。権限を直した後の失敗した期間や、書き直したい配信済みの期間に使います。attempts をリセットし、run を pending として返します。配信中の run には 409 EXPORT_RUN_RUNNING を返します。
  • エクスポートの健全性。 GET /v1/exports と GET /v1/exports/{id} は deliveredThrough(最後に配信された期間の終わり)、failedRuns、retryingRuns(少なくとも 1 回失敗した pending の run)を加えて返します。

一時停止、再開、削除

  • PATCH /v1/exports/{id} に {"enabled": false} を送るとエクスポートを一時停止します。{"enabled": true} で再開し、抜けた期間を最大 30 日前まで追って送ります。
  • DELETE /v1/exports/{id} はエクスポートを停止します。配信済みのファイルとパーティションはお客様のストレージに残ります。
  • 配信先、間隔、データセットは変更できません。新しいエクスポートを作成し、古いものを削除してください。

エンドポイント

所有していないエクスポートには 404 NOT_FOUND を返します。