1

Bigquery 查询作业提供了在实际运行查询之前预运行查询的选择。它有助于了解计费以及 BigQuery 将处理多少数据。以下是 QueryRequest 的片段:

{
  "kind": string,
  "query": string,
  "maxResults": integer,
  "defaultDataset": {
    object (DatasetReference)
  },
  "timeoutMs": integer,
  "dryRun": boolean,
  "preserveNulls": boolean,
   ...

我试图在 google-cloud-composer 中的 BigQueryHook 的帮助下使用 dry-run 参数,但没有任何运气。下面是我的代码片段:

def execute_sql(**kwargs):

    bq_hook = BigQueryHook(bigquery_conn_id='bigquery_default')
    bq_conn = bq_hook.get_conn()
    bq_cursor = bq_conn.cursor()

    #bq_cursor = BigQueryConnection(**kwargs).cursor()
    dryrun_sql = "select * from `{project}.{dataset}.{table}` where utcdate_='2021-01-01'"

    output = bq_cursor.run_with_configuration({'query':{"query": dryrun_sql,'useQueryCache':False,'useLegacySql':False,'dryRun':True}})

    utils.format_logging("job info: {}, Bytes processed: ".format(output))

    return None

输出返回一个 bigquery job_id。我正在使用 job_id 来访问 BigQuery jobs.get api 来分析查询结果。在那里我可以看到我为查询付费,所以我可以推断出空运行参数实际上并没有运行。

任何人都可以帮助如何使用 big_query 挂钩中的 dry-run 参数或提供替代解决方案吗?

4

0 回答 0