Por ejemplo, supongamos que intentas crear una solución para tus ventas organización. La organización de ventas está dividida en varias regiones, donde cada región tiene su propio administrador regional. El conjunto de datos de ventas en BigQuery tiene ventas cantidad por región y fecha.
La solución propuesta tendrá un único panel en el que los gerentes regionales pueden ver los datos de ventas de sus propias regiones.
Requisitos
- Los lectores del panel accederán con una Cuenta de Google.
- Existe una asignación entre el correo electrónico del usuario y los datos o las filas que tiene. a los que tienes acceso.
- Se usará una cuenta de servicio para acceder a los datos de BigQuery. Así, la facturación estará centralizada y administrada por el proveedor del panel.
Limitaciones
- El panel requiere una autorización única de cada lector por primera vez vista.
- Los lectores no pueden editar el panel ni compartirlo con otros usuarios.
- Si eres cliente de Workspace y tu administrador inhabilitó el uso compartido Conduce archivos a “Cualquier persona con un vínculo” y quita el uso compartido o desarrollar la solución en una cuenta de Gmail.com.
Solución
Completa todos los pasos que se indican a continuación para implementar la solución.
Crea un nuevo conector de la comunidad
Revisa el artículo Cómo funcionan los conectores de la comunidad y completa el Conector de la comunidad. Codelab para comenzar. Usa la Herramienta para desarrolladores que permite crear conectores para un un proceso de desarrollo más rápido y fácil.
Escribe el código del conector
getAuthType()
debe mostrarNONE
.getConfig()
debería mostrar una configuración vacía.- Opcional: Si necesitas entradas específicas para configurar el panel, puedes puede solicitar la entrada del usuario aquí.
getSchema()
debería mostrar el esquema para tu consulta.- Opcional: Puedes agregar campos y cálculos personalizados en el SQL una consulta o usar campos calculados como parte del esquema.
getData()
se completará en un paso posterior.
Actualizar manifiesto
Consulta la referencia del manifiesto y complétalo con todos los información que incluye lo siguiente:
- establece
dataStudio.forceViewersCredentials
entrue
. - establece
dataStudio.advancedServices.data
entrue
. - Para
oauthScopes
, agregahttps://www.googleapis.com/auth/userinfo.email
yhttps://www.googleapis.com/auth/script.external_request
Consulta Autorización Alcances de Apps Script para obtener más información.- Condicional: Agrega todos los permisos relevantes para los servicios que se usan en o del conector.
El manifiesto debería verse de la siguiente manera:
{
...
"dataStudio": {
"forceViewersCredentials": true,
"advancedServices": {
"data": true
},
...
}
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
],
...
}
Cómo implementar una cuenta de servicio
- Crea una cuenta de servicio en tu proyecto de Google Cloud. Este será tu proyecto de facturación.
- Asegúrate de que esta cuenta de servicio tenga acceso a BigQuery en el proyecto de la nube.
- Roles de Identity and Access Management (IAM) requeridos:
BigQuery Data Viewer
,BigQuery Job User
- Roles de Identity and Access Management (IAM) requeridos:
- Descarga el archivo JSON para obtener las claves de las cuentas de servicio. Guarda las claves en las propiedades de secuencia de comandos del proyecto de conector.
- Incluye la biblioteca de OAuth2 para Apps Script en tu proyecto de Apps Script.
- Implementa el código de OAuth2 necesario para la cuenta de servicio:
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']); }
Implementa getData()
.
- Elabora tu consulta de BigQuery.
- Con el correo electrónico, busca la asignación entre el correo electrónico y los datos.
- Usa la cláusula JOIN o WHERE para filtrar los datos.
- Obtén el correo electrónico del usuario efectivo (referencia de identidad del usuario).
- Usa los Servicios avanzados de Looker Studio para mostrar la configuración de la consulta
desde getData.
- Pasa la consulta construida, el proyecto de facturación y la cuenta de servicio token de OAuth.
- Condicional: Si recibes la entrada del usuario a través del conector
getConfig
, debes incorporar la entrada como parámetros de BigQuery.
Crea el panel
- Comprende cómo funcionan las implementaciones y versiones para los conectores.
- Crea una implementación de producción para el conector.
- Usa la implementación de producción para crear una fuente de datos y un informe nuevo en en Looker Studio.
- Agrega todas las tablas y gráficos del informe.
- El panel ya está listo para compartirlo con tus usuarios.
Poner el panel a disposición de los usuarios
- Comparte la secuencia de comandos del conector con los usuarios seleccionados o con "Cualquier persona". con un vínculo”.
- Comparte el panel con los usuarios seleccionados o con "Cualquier persona con "enlace".
- Opcional: Usa un servicio de abreviación de URL para crear un vínculo corto para el URL del panel. Comparte la URL abreviada con tus usuarios. Esto ayuda a reemplazar la URL del panel más adelante si es necesario.
- Opcional: Mide el uso del panel configurando Google Analytics para tu informe.