我正在使用 Google Python API 来处理 BigQuery。
我正在尝试使用jobs().list()
和jobs().list_next()
分页我项目中的所有工作。我正在使用带有以下代码的生成器:
request = service.jobs().list(projectId=project_id,
allUsers=True,
stateFilter="done",
)
# or maxResults=500)
# or maxResults=1000)
# or maxResults=64000)
while request is not None:
response = request.execute()
for x in response["jobs"]:
yield x
request = service.jobs().list_next(request, response)
问题是,根据我的使用方式maxResults
,我会得到不同的工作清单。
- 不使用任何
maxResults
参数,我看到了 9986 个工作。 - 使用
maxResults=500
我看到 8596 个工作。 - 使用
maxResults=1000
我看到 6743 个工作。 - 使用
maxResults=64000
我看到 6743 个工作。
我希望每次的作业数量都相同,所以我不确定我是否正确使用了 API。
循环遍历项目中所有作业的正确方法是什么?
(2013 年 8 月 14 日星期三 15:30:29 CDT 更新)
仍在试图弄清楚这一点。我使用不同的maxResults
. 关于每次报告的工作数量以及它们之间的关系的各种信息如下:
s1 -> no maxResults
s2 -> maxResults=500
s3 -> maxResults=1000
|s1| -> 10112
|s2| -> 8579
|s3| -> 6556
|s1 intersection s2| -> 8578
|s2 difference s1| -> 1
|s1 difference s2| -> 1534
|s1 intersection s3| -> 6556
|s3 difference s1| -> 0
|s1 difference s3| -> 3556
|s3 intersection s2| -> 6398
|s2 difference s3| -> 2181
|s3 difference s2| -> 158
我仍然无法理解为什么无论maxResults
使用什么,我都没有看到一致的工作总数。