【问题标题】:How to print count table query of bigquery in python?如何在python中打印bigquery的计数表查询?
【发布时间】:2020-02-07 20:12:53
【问题描述】:

我正在尝试在 python 中打印 bigquery 表中可用的行数,我编写了以下代码:

from google.cloud import bigquery def main():
    myquery = "select count(*) from `myproject.mydataset.mytable`"
    client = bigquery.Client()
    job = client.query(myquery)
    result = job.result()
    print("Total rows available: ",result)

当我执行上面的代码时,它给我的输出为

"可用的总行数:google.cloud.bigquery.table.RowIterator 对象 在 0x00000247B65F29E8>".

这意味着我将对象值作为输出。 但我想打印我的表中可用的实际行数(查询结果)。

【问题讨论】:

  • 如果您使用Table 对象这样做可能会更好。请参阅连接表的示例,然后打印table.num_rows;此操作将免费且速度更快。

标签: python google-bigquery selectcommand


【解决方案1】:

RowIterator has an attribute called total_rows.

只需将您的最后一条语句更改为

 print("Total rows available: ", result.total_rows)

【讨论】:

  • 我刚刚尝试过这种方式,但它给了我“可用的总行数:无”作为输出。但实际上我在相应的 BQ 表中有 634700 行(如果我从 BQ 控制台运行相同的查询,则输出)。
  • 在任何情况下,此更改的预期结果应仅为 1。因为计数返回一行。
  • 没有。 result.total_rowsresult.num_results 只报告已经迭代了多少结果并在开始迭代 RowIterator 之前显示 None 或 0
【解决方案2】:

尝试将您的查询更改为

myquery = "select count(*) size from `myproject.mydataset.mytable`"
client = bigquery.Client()
job = client.query(myquery)
result = job.result()
for row in results:
    print("Total rows available: ",row.size)

【讨论】:

    猜你喜欢
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多