Как я могу отслеживать понесенные расходы по выставлению счетов BigQuery (выполненные задания) по таблицам / наборам данных в режиме реального времени? - PullRequest
0 голосов
/ 28 апреля 2020

Самая большая часть моего биллинга BigQuery связана с потреблением запросов. Я пытаюсь оптимизировать это, понимая, какие наборы данных / таблицы потребляют больше всего.

Поэтому я ищу способ отследить мое использование BigQuery, но в идеале что-то большее в реальном времени (чего у меня нет ждать день, прежде чем я получу окончательные результаты). Наилучшим способом было бы, например, сколько потреблено каждой таблицы / набора данных за последний час.

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

Какие существуют другие решения для получения такого рода информации?

1 Ответ

1 голос
/ 28 апреля 2020

Используя журналы Stackdriver, вы можете создать приемник с Pub / Sub topi c в качестве цели для анализа в реальном времени, который фильтрует только журналы BigQuery, например:

resource.type="bigquery_resource" AND
proto_payload.method_name="jobservice.jobcompleted" AND
proto_payload.service_data.job_completed_event.job.job_statistics.total_billed_bytes:*

(см. примеры запросов здесь: https://cloud.google.com/logging/docs/view/query-library?hl=en_US#bigquery -filters )

Вы можете создать приемник для определенного c проекта, папки или даже организации. Это позволит получить все запросы, выполненные в BigQuery в указанном c проекте, папке или организации.

Поле proto_payload.service_data.job_completed_event.job.job_statistics.total_billed_bytes даст вам количество байтов, обработанных запросом.

На основании цены BigQuery по требованию (на данный момент 5 долл. США / ТБ для большинства регионов, но вы можете проверить свой собственный регион), вы можете легко оценить выставление счетов в режиме реального времени. Вы можете создать задание Dataflow, которое агрегирует результаты в BigQuery, или просто использовать целевой Pub / Sub topi c с любым заданием, для которого вы хотите рассчитать цену:

jobPriceInUSD = totalBilledBytes / 1_000_000_000_000 * pricePerTB

потому что 1 ТБ = 1_000_000_000_000 B. Как я уже говорил, pricePerTB зависит от регионов (точную цену см. (https://cloud.google.com/bigquery/pricing#on_demand_pricing). Например, на момент написания:

  • 5 долл. США / ТБ для США-восток1
  • 6 долл. США / ТБ для Азии-северо-восток1
  • $ 9 / ТБ для Юго-Восточной Америки1

Также, за каждый месяц, на данный момент, 1-й туберкулез бесплатный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...