Получайте данные о таблицах, заданиях и многом другом

Распространенным способом определения метаданных является «данные о данных». В Big Query метаданные могут быть чрезвычайно полезными и удобными, поскольку они организованы в ряд представлений, называемых INFORMATION_SCHEMA.

Вот четыре примера того, как вы можете использовать метаданные Big Query.

1. Воссоздайте таблицы

Вы когда-нибудь создавали 10 таблиц подряд, а потом понимали, что неправильно назвали столбец в каждой из них? К счастью, вам могут помочь представления метаданных TABLES.

SELECT table_name, ddl 
FROM the_look.INFORMATION_SCHEMA.TABLES

Этот запрос предоставит вам запрос DDL (Data Definition Language), используемый для создания таблицы. Затем вы можете скопировать и вставить оператор DDL и отредактировать его, чтобы воссоздать свою таблицу.

2. История доступа

Вкладка «История» дает вам доступ только к заданиям, которые были выполнены за последнюю неделю. К счастью, вы можете обойти эти ограничения, используя представления JOBS.

SELECT job_type, query
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE DATE(creation_time) = "2022-04-26"

3. Динамически выбирать столбцы

Допустим, вы хотите выбрать из таблицы только строковые столбцы. К сожалению, стандартный SQL не позволяет динамически выбирать столбцы. Вот где представление COLUMNS пригодится.

Мы можем получить обзор нужных нам столбцов, запросив представление:

SELECT *
FROM the_look.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = "orders_analysed_table" AND data_type = "STRING"

Затем мы можем использовать надписи скрипта для сохранения имен столбцов в переменной и отображения результата нашего динамического запроса:

DECLARE select_query STRING;
EXECUTE IMMEDIATE
"""SELECT STRING_AGG(column_name, ",")
FROM the_look.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = "orders_analysed_table" AND data_type = "STRING"
"""
INTO select_query;
EXECUTE IMMEDIATE FORMAT("""
SELECT %s
FROM the_look.orders_analysed_table
""", select_query)

Что делает этот запрос:

  • Объявить переменную типа string
  • Выполните запрос, чтобы получить строковые столбцы таблицы и сохранить их в предыдущей переменной.
  • Отформатируйте запрос выбора с помощью переменной и выполните его.

4. Контролируйте свои расходы

Метаданные также могут пригодиться при попытке отслеживать ваши расходы. Вы можете использовать представление JOBS_TIMELINE, чтобы проверить эволюцию ваших расходов.

SELECT DATE(job_creation_time) AS date, SUM(total_bytes_billed) AS total_bytes_billed
FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT
WHERE DATE(job_creation_time) >= "2022-04-01"
GROUP BY 1
ORDER BY 1

Хотите пойти дальше? Почему бы не использовать одну из моделей временных рядов больших запросов, чтобы спрогнозировать байты, которые будут выставлены в счет в следующем месяце?

Если вы хотите узнать больше о метаданных BQ, вы можете проверить документацию INFORMATION_SCHEMA для получения дополнительной информации.