BigQuery проверяет, существует ли таблица или нет
Я использую C# для динамического построения запроса на основе ответа из конечной точки bigquery API tables. Я пытаюсь вычислить активных пользователей, которые работают, но только если я выбираю каждую таблицу с .*
. Мой вопрос довольно прост, есть ли способ проверить, существует ли таблица в BigQuery SQL?
2 ответа:
Существуют метатабли, называемые
__TABLES__
и__TABLES_SUMMARY__
Можно выполнить запрос типа:
SELECT size_bytes FROM <dataset>.__TABLES__ WHERE table_id='mytablename'
Часть этого запроса может выглядеть незнакомой.
__TABLES_SUMMARY__
- это мета-таблица, содержащая информацию о таблицах в наборе данных. Вы можете использовать эту метатаблицу самостоятельно. Например, запросSELECT * FROM publicdata:samples.__TABLES_SUMMARY__
возвращает метаданные о таблицах в наборе данныхpublicdata:samples
. Вы также можете сделатьSELECT * FROM publicdata:samples.__TABLES__
Доступные Поля:
Поля метатаблицы
__TABLES_SUMMARY__
(это все доступный в запросеTABLE_QUERY
) включает:
table_id
: название таблицы.creation_time
: время, в миллисекундах с 1/1/1970 UTC, когда была создана таблица. Это то же самое, что и полеcreation_time
в таблице.type
: является ли это представлением (2) или обычной таблицей (1).Следующие поляне доступны в
TABLE_QUERY()
, поскольку они являются членами__TABLES__
, но не__TABLES_SUMMARY__
. Они хранятся здесь для исторического интереса и частично документировать__TABLES__
метатаблиц:
last_modified_time
: время, в миллисекундах с 1/1/1970 UTC, когда таблица была обновлена (либо метаданные, либо содержимое таблицы). Обратите внимание, что если вы используетеtabledata.insertAll()
для потоковой передачи записей в таблицу, это может быть на несколько минут устаревшим.row_count
: количество строк в таблице.size_bytes
: Общий размер таблицы в байтах.