导出的数据
使用账户任意密钥提交的任务,以及 Playground 和监测器创建的任务都会包含在内。一个窗口恰好包含时间落在
[windowStart, windowEnd) 内的行。
送达时间。 窗口关闭 10 分钟后到期,因此在边界结算的费用也会包含在内。到期的窗口由每 15 分钟运行一次的
作业取走,因此通常在窗口关闭后 10 到 25 分钟开始发送。
设置导出
1
查看导出身份
accountKey 是你的文件夹和表的名称。我们写入的每个路径和表都带有它,因此多个 querying.ai 账户
可以共用一个存储桶或数据集,各自只写入自己的文件。请授权响应中显示的身份,而不是上面的示例。2
授予权限
为该身份授予目标位置的访问权限。S3、Cloud Storage 和 BigQuery 的做法见授予权限。
3
创建导出
POST /v1/exports 会检查授权并保存导出。见创建导出。4
查看首次发送
GET /v1/exports/{id}/runs 列出每个窗口及其状态。见发送记录。授予权限
Amazon S3
在你的 AWS 账户中创建一个可由我们的 Google 身份代入的 IAM 角色,并将身份响应中的trustPolicy 用作该
角色的信任策略。它只接受我们的导出身份,并且只接受你账户的会话名称:
kms:GenerateDataKey。
Google Cloud Storage
在存储桶上为导出服务账户授予 Storage Object User(roles/storage.objectUser)。它用于创建文件,
并在重新发送窗口时替换文件。
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 会读取数据集并记录其位置。检查失败时
不保存任何内容。每个账户最多 10 个导出。
响应为 201,包含该导出:
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并列发布。- 一个窗口按时间顺序拆分为每份最多 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
发送记录
每个数据集的每个窗口就是一个 run。按时间倒序列出:
可用
status、data(tasks 或 monitor_results)和 limit(1–200,默认 50)筛选;把 nextCursor 作为
cursor 传回即可获取下一页。
- 自动重试。 失败的尝试会在 15 分钟后重试,之后间隔逐次翻倍,最长 12 小时,共八次。
error中是存储服务 给出的原因,因此缺少权限会首先在这里显示。 - 重新发送窗口。
POST /v1/exports/{id}/runs/{runId}/retry立即发送一个窗口:修好授权后发送失败的窗口, 或重写已送达的窗口。它会重置attempts,并以pending返回该 run。正在发送的 run 会返回409 EXPORT_RUN_RUNNING。 - 导出健康状况。
GET /v1/exports和GET /v1/exports/{id}会附带deliveredThrough(最近送达窗口的 结束时间)、failedRuns和retryingRuns(至少失败过一次、仍在等待的 run)。
暂停、恢复和删除
- 用
{"enabled": false}调用PATCH /v1/exports/{id}可暂停导出。{"enabled": true}恢复导出,并补发 遗漏的窗口,最多回溯 30 天。 DELETE /v1/exports/{id}停止导出。已送达的文件和分区保留在你的存储中。- 目标位置、周期和数据集无法更改。请创建新的导出并删除旧的导出。
端点
访问不属于你的导出会返回
404 NOT_FOUND。