BigQuery и студия данных — Извлечение значения @DS_USER_EMAIL в запросе

# #google-bigquery #google-data-studio

Вопрос:

Таким образом, в консоли BigQuery вы можете видеть запросы, выполненные вашими пользователями. Студия данных предоставляет вызываемый параметр @DS_USER_EMAIL , содержащий адрес электронной почты пользователя, отправившего запрос.

Нам нужно это электронное письмо для выставления счетов: нам нужно выставлять счета/уведомлять людей в зависимости от их использования.

Пример этого запроса, зарегистрированный в BQ:

 select @DS_USER_EMAIL as user_email from test_table;
 

Поэтому я могу видеть только переменную, а не разрешенное значение. Надеялся, что зарегистрированный запрос будет фактическим запросом, выполняемым так:

 select 'test@test.com' as user_email from test_table;
 

Есть какой-нибудь способ обойти это? Если нет, то каковы наши варианты получения электронного письма?

Комментарии:

1. Я не в состоянии понять этот вариант использования. Как вы передаете этот параметр из DS в BQ? Каким должен быть результат представленных заявлений?

2. Вы создаете соединитель DS для BQ. В этом соединителе вы можете использовать @DS_USER_EMAIL в качестве переменной, которая берется у пользователя, использующего DS. Делает ли это все более ясным? Если нет, дайте мне знать, и я постараюсь объяснить это лучше выше.

Ответ №1:

Насколько я понимаю, @DS_USER_EMAIL может использоваться для создания динамических отчетов, поэтому определенные пользователи получают доступ к определенным данным (Ссылка)

Если вы ищете способ проверить общее количество обработанных байтов на основе электронной почты пользователя, вы можете попробовать использовать INFORMATION_SCHEMA таблицы и JOBS_BY_ORGANIZATION (Ссылка на документацию)

Пример:

 SELECT
 job_id,
 creation_time,
 user_email, 
 total_bytes_billed
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
WHERE state == "DONE"
 

Комментарии:

1. Спасибо за ваш ответ. Однако я продолжаю получать сообщение об ошибке, что таблица не найдена при выполнении выбора: SELECT * FROM region-eu.INFORMATION_SCHEMA. JOBS_BY_ORGANIZATION; если я изменю регион region-us , ошибка исчезнет, но все наши данные находятся в ЕС.

2. JOBS_BY_ORGANIZATION в коде, которым вы поделились, есть пробел, может быть, это? если нет, не могли бы вы поделиться полным сообщением об ошибке?

3. Это странно. Запуск оператора SELECT creation_time, user_email, job_id, query FROM region-us .INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION order by creation_time desc limit 5; приводит к Not found: Table tillty-pos:region-us.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION тому , что при запуске вашего оператора: Access Denied: Table tillty-pos:region-us.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION: User does not have permission to query table tillty-pos:region-us.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION. . Мои роли: роли/биллинг.Менеджер проектов, роли/хранилище данных.владелец, роли/владелец

4. Я сообщил об этой проблеме на их трекере проблем. К сожалению, я не могу проверить, работает ли ваш ответ.

5. Это странно. Я читал больше об этой проблеме и хотел бы предложить вам попробовать использовать классификатор конкретного региона вашего проекта вместо нескольких местоположений ЕС/США. cloud.google.com/bigquery/docs/. … И никаких проблем, если вы поймете, что происходит, я хотел бы знать 🙂