Можно ли получить полную историю запросов и сопоставить ее стоимость в Google BigQuery? - PullRequest
0 голосов
/ 06 марта 2020

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

Поэтому мой вопрос заключается в том, можно ли каким-то образом увидеть запросы, выполненные другими пользователями (а также стоимость запрос) в проекте из истории запросов?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Вы можете использовать Информационная схема работы :

SELECT query, total_bytes_processed FROM INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE project_id = 'you_project_id' AND user_email = 'my@eamil.com'
0 голосов
/ 09 марта 2020

Согласно документации, прямого метода получения затрат по работе и пользователю не существует. Тем не менее, есть способ сделать это.

Для подробного анализа счетов я бы посоветовал вам экспортировать журналы в BigQuery с пользовательским фильтром и оттуда анализировать счета для каждого пользователя и задания запроса.

Таким образом, вы можете создать экспорт, используя Logs Viewer или API . При создании приемника используйте следующий настраиваемый фильтр:

resource.type="bigquery_resource"
logName="projects/<your_project>/logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload.methodName="jobservice.jobcompleted"

Приведенный выше фильтр будет извлекать завершенные задания запросов, в то время как журналы доступа к данным представляют собой всеобъемлющий аудит каждого запроса, выполняемого в BigQuery, наряду с общее количество отсканированных байтов. Я хотел бы отметить, что вы должны убедиться, что data_access журналы включены, ссылка .

Из записей журнала вы получите поля:

  • protoPayload.authenticationInfo.principalEmail
  • protoPayload.serviceData.jobCompletedEvent.job.jobName.jobId
  • protoPayload.serviceData.jobCompletedEjConfiguration. query.query
  • protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.totalBilledBytes

В BigQuery вы можете использовать запрос следующим образом:

    SELECT
      protopayload_auditlog.authenticationInfo.principalEmail AS email,
      protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalBilledBytes AS total_billed_bytes,
      protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobConfiguration.query.query AS query,
      protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobName.jobId as job_id
    FROM
      `<myproject>.<mydataset>.cloudaudit_googleapis_com_data_access`
    WHERE
      protopayload_auditlog.methodName = 'jobservice.jobcompleted';

Впоследствии , чтобы получить оценку цены за каждый запрос, вы можете использовать totalBilledBytes и Сводка цен , чтобы добавить новый столбец с оценкой цены для каждый запрос. Таким образом, у вас есть окончательная таблица с адресом электронной почты пользователя, кодом запроса, общим счетом в байтах, идентификатором задания и оценочной ценой .

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