Например, предположим, что вы пытаетесь создать решение для своей торговой организации. Организация продаж разделена на несколько регионов, в каждом регионе есть свой региональный менеджер. Набор данных о продажах в BigQuery содержит объем продаж по регионам и датам.
Предлагаемое решение будет иметь единую панель управления, где региональные менеджеры смогут просматривать данные о продажах только для своих регионов.
Требования
- Зрители информационной панели войдут в систему с помощью учетной записи Google.
- Доступно сопоставление между электронной почтой пользователя и данными/строками, к которым у него есть доступ.
- Сервисный аккаунт будет использоваться для доступа к данным BigQuery. Таким образом, выставление счетов будет централизованным и управляться поставщиком информационной панели.
Ограничения
- Панель управления требует однократной авторизации от каждого зрителя при первом просмотре.
- Зрители не могут редактировать панель мониторинга или делиться ею с другими.
- Если вы являетесь клиентом Workspace и ваш администратор отключил общий доступ к файлам Диска для всех, у кого есть ссылка, либо снимите ограничение на общий доступ, либо разработайте решение для учетной записи Gmail.com.
Решение
Выполните все следующие шаги, чтобы реализовать решение.
Создайте новый соединитель сообщества
Чтобы приступить к работе, ознакомьтесь с тем, как работают соединители сообщества , и завершите кодовую лабораторную работу по соединителям сообщества . Используйте инструмент разработчика для создания соединителей для более быстрого и простого процесса разработки.
Напишите код разъема
-
getAuthType()
должен возвращатьNONE
. -
getConfig()
должен возвращать пустую конфигурацию.- Необязательно: если вам нужны конкретные данные для настройки панели мониторинга, вы можете запросить ввод данных пользователем здесь.
-
getSchema()
должен вернуть схему для вашего запроса.- Необязательно: вы можете добавлять настраиваемые поля и вычисления либо в запрос SQL, либо используя вычисляемые поля как часть схемы.
-
getData()
будет завершено на более позднем этапе .
Обновить манифест
Просмотрите ссылку на манифест и заполните манифест всей необходимой информацией, включая следующую:
- установите
dataStudio.forceViewersCredentials
значениеtrue
. - установите
dataStudio.advancedServices.data
значениеtrue
. - Для
oauthScopes
добавьтеhttps://www.googleapis.com/auth/userinfo.email
иhttps://www.googleapis.com/auth/script.external_request
. Дополнительные сведения см. в разделе «Области авторизации для сценария приложений» .- Условно: добавьте все соответствующие области для служб, используемых в соединителе.
Манифест должен выглядеть так:
{
...
"dataStudio": {
"forceViewersCredentials": true,
"advancedServices": {
"data": true
},
...
}
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
],
...
}
Реализация сервисного аккаунта
- Создайте сервисную учетную запись в своем проекте Google Cloud. Это будет ваш платежный проект.
- Убедитесь, что у этого сервисного аккаунта есть доступ к BigQuery в облачном проекте.
- Требуемые роли в управлении идентификацией и доступом (IAM):
BigQuery Data Viewer
,BigQuery Job User
- Требуемые роли в управлении идентификацией и доступом (IAM):
- Загрузите файл JSON, чтобы получить ключи сервисных учетных записей . Сохраните ключи в свойствах сценария проекта соединителя.
- Включите библиотеку OAuth2 for Apps Script в свой проект Apps Script.
- Внедрите необходимый код OAuth2 для учетной записи службы:
var SERVICE_ACCOUNT_CREDS = 'SERVICE_ACCOUNT_CREDS'; var SERVICE_ACCOUNT_KEY = 'private_key'; var SERVICE_ACCOUNT_EMAIL = 'client_email'; var BILLING_PROJECT_ID = 'project_id'; /** * Copy the entire credentials JSON file from creating a service account in GCP. */ function getServiceAccountCreds() { return JSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS)); } function getOauthService() { var serviceAccountCreds = getServiceAccountCreds(); var serviceAccountKey = serviceAccountCreds[SERVICE_ACCOUNT_KEY]; var serviceAccountEmail = serviceAccountCreds[SERVICE_ACCOUNT_EMAIL]; return OAuth2.createService('RowLevelSecurity') .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth') .setTokenUrl('https://accounts.google.com/o/oauth2/token') .setPrivateKey(serviceAccountKey) .setIssuer(serviceAccountEmail) .setPropertyStore(scriptProperties) .setCache(CacheService.getScriptCache()) .setScope(['https://www.googleapis.com/auth/bigquery.readonly']); }
Реализуйте getData()
- Создайте запрос BigQuery.
- Используя электронную почту, найдите соответствие между электронной почтой и данными.
- Используйте предложение JOIN и/или WHERE для фильтрации данных.
- Получите адрес электронной почты действующего пользователя ( ссылка на идентификатор пользователя ).
- Используйте дополнительные службы Looker Studio, чтобы вернуть конфигурацию запроса из getData.
- Передайте созданный запрос, проект выставления счетов и токен OAuth сервисного аккаунта.
- Условно: если вы получаете пользовательский ввод через коннектор
getConfig
, вам следует включить этот ввод в качестве параметров BigQuery .
Создайте панель мониторинга
- Узнайте, как развертывания и версии работают для соединителей.
- Создайте производственное развертывание для соединителя.
- Используйте производственное развертывание, чтобы создать источник данных и новый отчет в Looker Studio.
- Добавьте все таблицы и диаграммы в отчет.
- Теперь панель мониторинга готова к совместному использованию с вашими пользователями.
Сделайте панель управления доступной для пользователей
- Поделитесь сценарием соединителя с выбранными пользователями или с «Всем, у кого есть ссылка».
- Поделитесь панелью управления с выбранными пользователями или с «Всем, у кого есть ссылка».
- Необязательно: используйте службу сокращения URL-адресов, чтобы создать короткую ссылку для URL-адреса панели мониторинга. Поделитесь сокращенным URL-адресом со своими пользователями. Это поможет позже заменить URL-адрес панели мониторинга, если это необходимо.
- Необязательно: Измерьте использование информационной панели , настроив Google Analytics для своего отчета.