Google bigquery 如何使用bq ls命令行工具按持续时间排序

Google bigquery 如何使用bq ls命令行工具按持续时间排序,google-bigquery,Google Bigquery,如何使用bq ls命令获得运行时间最长的bq作业 我找不到如何对结果进行排序的示例 编辑:根据注释,如何使用bigquery日志查看正在运行的作业对我来说非常混乱。以stackdriver日志查询为例: resource.type="bigquery_resource" logName="projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.resourceName="projects/my-

如何使用
bq ls
命令获得运行时间最长的bq作业

我找不到如何对结果进行排序的示例

编辑:根据注释,如何使用bigquery日志查看正在运行的作业对我来说非常混乱。以stackdriver日志查询为例:

resource.type="bigquery_resource"
logName="projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload.resourceName="projects/my-project/jobs/job_abc123"
这应该会返回job_abc123的所有日志,对吗?我只得到一个带有
protoPayload.methodName=“jobservice.jobscompleted”
protoPayload.status
为空的条目

那么我应该搜索哪些日志来查看job_abc123的运行历史?如何使用BQ SD日志查看机上查询及其当前运行时间?谷歌的文档令人困惑,在这方面对我没有帮助


bq ls命令本身不会按持续时间排序或显示运行时间最长的作业。这将需要您端的一些额外处理

以下是一些可能有用的注意事项:

  • 作业持续时间仅在作业完成或失败时更新,因此, 对于运行作业,此字段将为空。另一种选择是 从当前日期时间中减去开始时间
  • 使用BigQueryAPI可能会更容易 方法,因为输出是JSON格式的,所以应该是 解析起来更简单
  • Stackdriver日志仅显示以下类型的记录: 作业:插入作业(创建作业时)、作业已完成、获取查询 结果(当调用get方法检查作业状态时)
  • 您可以打开bq命令的功能请求以启用排序 按持续时间或开始时间使用此选项。但要考虑到 功能请求需要进行分类,并且可能不会在 近期的发布计划

最简单的方法是将所有BigQuery日志导出回BigQuery本身,然后编写一些SQL。如果你想要一个黑客/快速的解决方案,你可以使用一些bash魔法。有没有一种方法可以创建一个自动完成的接收器?或者每次都必须手动执行吗?不,您需要创建接收器,然后编写一些SQL。您可以将SQL另存为视图,因此只需执行一次。请参阅此链接,了解如何自动导出日志。它工作得非常好,您可以使用调度器或任何其他自动化工具来获得最长的时间query@TamirKlein但审核日志是否显示当前正在运行的查询?这是怎么回事?SD是否为每分钟或作业正在运行的内容编写日志?