BQ PY客户端库:API Explorer和Stackdriver记录差异

时间:2018-06-29 06:47:36

标签: python google-bigquery

(首先感谢您阅读我冗长的查询)

我正在使用PY客户端库学习BQ API。

创建客户端 >>插入查询作业请求bigquery.Client()之后,我正在发出以下命令来检查作业是否已完成:

client.query(sql)

当我检查API资源管理器时:

  1. 我可以看到正在进行方法调用job.done() -到目前为止,一切都很好。.我相信这是刷新作业状态的API调用! enter image description here

  2. ,但是当我切换 Traffic 下拉列表>> 通过凭据时,它会通过某些未指定凭据报告其他API请求。

  

有人可以澄清此凭证是什么,以及该凭证正在生成的附加API方法是什么,以及是否包含在项目中   API配额?

(令人惊讶的是,仅在通过通过响应代码通过凭据对流量进行细分时才报告此附加调用,而在通过API方法进行细分时却没有报告或通过API版本enter image description here

  1. 我期望有其他方法调用bigquery.jobs.get,因为当我查看GH代码时,调用bigquery.jobs.getQueryResults会调用self._client._get_query_results,这似乎使此additional API call
  

有人可以澄清为什么我没有看到报告在API Explorer中的此方法调用吗?

我也查看了Stackdriver Logging ...

  1.   

    有人可以澄清为什么它不显示#1 **的日志(我期望job.done() = protoPayload.methodName或类似于API方法jobservice.get的东西),而是仅显示我登录#3(bigquery.jobs.get = protoPayload.methodName

enter image description here

更新:我注意到它始终是对jobservice.getqueryresults的调用(在bigquery.tabledata.list期间被调用!!),API Explorer在 Unspecified 客户端名称下报告。 job.result()(在bigquery.jobs.get期间被调用?!)未记录到StackDriver

1 个答案:

答案 0 :(得分:1)

  1. bigquery.jobs.get“返回有关特定作业的信息” [1]

  2. 最近有一个公开问题,涉及未指定的凭据,您可以遵循[2]。如果此未指定的凭据使用任何引号为[3]的资源,则可能会影响项目的配额。

  3. 因为它可能取决于您用于进行API调用的客户端ID。如果您未指定服务帐户或自定义客户端ID,则您提到的“其他API调用”可能不会出现在项目的API仪表板中。

  4. 这可能是因为bigquery.jobs.get的执行可能发生在您的项目之外,这与#3有关。

我建议您访问Stackdriver的网页[4],并访问Metrics Explorer。选择“已使用的API”作为资源类型,并选择“请求”作为指标;您将看到方法调用的另一种表示形式。