BigQuery проверяет, существует ли таблица или нет


Я использую C# для динамического построения запроса на основе ответа из конечной точки bigquery API tables. Я пытаюсь вычислить активных пользователей, которые работают, но только если я выбираю каждую таблицу с .*. Мой вопрос довольно прост, есть ли способ проверить, существует ли таблица в BigQuery SQL?

2 5

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: Общий размер таблицы в байтах.
#standardSQL
SELECT COUNT(1) AS cnt
FROM `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'mytable'