Python 获取BigQuery表中的行数(流式缓冲区)

Python 获取BigQuery表中的行数(流式缓冲区),python,google-bigquery,Python,Google Bigquery,我正在通过流媒体进行插入。在UI中,我可以看到以下行计数: 有没有办法通过API获得这些信息?当我这样做时: from google.cloud import bigquery client = bigquery.Client() dataset = client.dataset("bqtesting") table = client.get_table(dataset.table('table_streaming')) table.num_rows 0 显然,0不是我想要的数字。从API文档

我正在通过流媒体进行插入。在UI中,我可以看到以下行计数:

有没有办法通过API获得这些信息?当我这样做时:

from google.cloud import bigquery
client = bigquery.Client()
dataset = client.dataset("bqtesting")
table = client.get_table(dataset.table('table_streaming'))
table.num_rows
0
显然,0不是我想要的数字。从API文档中可以看出:

numRows unsigned long[仅输出]此表中的数据行数,不包括流式缓冲区中的任何数据

那么,我的问题是:如何获得表中的确切行数?目前我正在做:

count=[item[0] for item in client.query('SELECT COUNT(*) FROM `bqtesting.table_streaming`').result()][0]    
但是,仅获取计数就需要大约5秒,我需要频繁执行此查询,以查看是否所有流式插入都已“完成”。

您可以使用_表_元数据表来获取所需的信息。查询表不会产生任何费用

您需要的查询是:

SELECT table_id, row_count, size_bytes
FROM `your-project-name.bqtesting.__TABLES__`
WHERE STARTS_WITH(table_id, "table_streaming")
ORDER BY table_id DESC
您可以使用_表_元数据表来获取所需的信息。查询表不会产生任何费用

您需要的查询是:

SELECT table_id, row_count, size_bytes
FROM `your-project-name.bqtesting.__TABLES__`
WHERE STARTS_WITH(table_id, "table_streaming")
ORDER BY table_id DESC
选择count1并选择count*etc有0个已扫描和已计费的字节。在运行作业元数据后或在干运行时,您可以在作业元数据中看到这些字节,因此您应该能够随时运行这些字节 如果我阅读的文档是正确的,那么这里的数字不能保证为您提供缓冲区中尚未刷新到大查询存储的行

您也可以使用此处提到的API,即检查表中的streamingBuffer.oldesentrytime字段。获取结果

选择count1并选择count*等有0个扫描和计费字节。您可以在运行作业元数据后或在干运行中看到这一点,因此您应该能够随时运行这些数据 如果我阅读的文档是正确的,那么这里的数字不能保证为您提供缓冲区中尚未刷新到大查询存储的行


您也可以使用此处提到的API,即检查表中的streamingBuffer.oldesentrytime字段。获取结果

这不适用于流式处理,因为它会给出所有零。这不适用于流式处理,因为它给出了全部零。在我的经验中,行计数元数据需要一段时间才能更新到30分钟。在我的经验中,行计数元数据需要一段时间才能更新到30分钟