Получить количество строк в таблице BigQuery (потоковый буфер) - PullRequest
0 голосов
/ 10 февраля 2019

Я делаю вставки через потоковую передачу.В пользовательском интерфейсе я вижу следующие строки:

enter image description here

Есть ли способ получить это через 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 секунд, чтобы получить счетчик (и мне нужно выполнять этот запрос довольно часто, чтобы увидеть, все ли потоковые вставки имеют «готово»).

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

select count(1) и select count(*) и т. Д. Имеют 0 отсканированных и выставленных счетов (вы можете увидеть это в метаданных задания после его запуска или пробного запуска), так что вы сможете запускать их столько раз, сколько захотите, еслия правильно читаю документацию, числа там не гарантируют, что вы получите строки в буфере, которые еще не были сброшены в хранилище больших запросов

, вы также можете использовать API, упомянутый здесь https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataavailability т.е. проверьте поле streamingBuffer.oldestEntryTime из результата tables.get

0 голосов
/ 10 февраля 2019

Вы можете использовать таблицу метаданных __TABLES__ для получения необходимой информации.За запрос __TABLES__ плата не взимается.

Вам нужен следующий запрос:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...