当前位置: 首页 > 知识库问答 >
问题:

Google BigQuery-python客户端-创建/管理作业

逑翰翮
2023-03-14

我对BigQuery世界还不熟悉。。。我使用的是python google。云包和我只需要在BigQuery表上运行Python查询并打印结果。这是创建查询作业的查询函数的一部分。

function test():
    query = "SELECT *  FROM " + dataset_name + '.' + table_name
    job = bigquery_client.run_async_query('test-job', query)
    job.begin()
    retry_count = 100
    while retry_count > 0 and job.state != 'DONE':
        retry_count -= 1
        sleep(10)
        job.reload()  # API call
    print(job.state)
    print(job.ended)

如果我多次运行test()函数,我会得到错误:

    google.api.core.exceptions.Conflict: 409 POST https://www.googleapis.com/bigquery/v2/projects/myprocject/jobs:
    Already Exists: Job myprocject:test-job

由于我必须多次运行test()函数,我是否每次都必须删除名为“test job”的作业,还是每次都必须分配一个新作业名称(例如,随机名称或基于日期时间的名称)?

共有2个答案

翟承志
2023-03-14

作为附带建议,我们通常这样做:

import uuid
job_name = str(uuid.uuid4())

job = bigquery_client.run_async_query(job_name, query)

请注意,如果运行同步查询,这已经是自动的。

此外,您不必管理作业完整性的验证(截至版本0.27.0),如果您愿意,您可以使用它:

job = bigquery_client.run_async_query(job_name, query)
job_result = job.result()
query_result = job_result.query_results()
data = list(query_result.fetch_data())
冯沛
2023-03-14

每次都必须删除名为“测试作业”的作业吗

无法删除作业。作业集合存储项目的完整作业历史,但仅保证在过去六个月中创建的作业的可用性。最好的办法是请求自动删除已存在超过50天的作业,您应该联系支持部门。

或者每次我都必须分配一个新的工作名称(例如,随机名称或基于日期时间的名称)?

对这就是路

 类似资料:
  • 创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。 第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。 使用特化的构造器函数创建客户端 特化的构造器函数有下面几个: func NewHTTPClient(uri ...string) (client *HTTPClient) func NewTCPClient(uri ...string

  • 我需要研发用于管理WebSphere Application Server v7.0.0.11的App。我探索了一下,发现我们可以使用Mbean。实际上,我需要创建类似于Web-phere的Web控制台的东西。 我的问题是应用程序应该用C#。那么有没有连接器/适配器来调用web-sphere的管理API呢?请给我指出正确的方向。 我是一个C#. net开发人员,完全是java/webphere的新

  • The AdminClient API supports managing and inspecting topics, brokers, acls, and other Kafka objects. To use the AdminClient API, add the following Maven dependency: <dependency>     <groupId>org.apac

  • 我试图将Spring Boot应用程序配置为管理客户端,但在设置以下依赖项后无法构建: 我不知道为什么它有两个相同的RestTemplateBuilder... 如何解决这个问题?

  • 怎么了 我试图使用kubernetes python客户机在kubernetes中创建自定义资源定义,但我无法这样做,如果有人能解释我在这里做错了什么,那将会很有帮助 null

  • 使用keycloak rest API创建以下内容。 试图为使用KeyCloak的应用程序编写完全自动化的CI解决方案。我在测试期间自动重新创建k8s中的keycloak服务器,以100%确保所有内容都是相同的。 目前使用KeyCloak5。 但是我无法将我的新用户分配给客户机-角色领域-管理中的所有角色。我试图阅读api文档,但我找不到如何执行该命令。