예를 들어 영업 조직을 위한 솔루션을 만들려고 한다고 가정해 보겠습니다. 영업 조직은 여러 리전으로 나뉘며, 각 리전에는 자체 리전 관리자가 있습니다. BigQuery의 판매 데이터 세트에는 지역별 및 날짜별 판매 금액이 있습니다
제안된 솔루션에는 지역 관리자가 해당 지역의 판매 데이터만 볼 수 있는 단일 대시보드가 있습니다.
요구사항
- 대시보드 뷰어는 Google 계정으로 로그인하게 됩니다.
- 사용자의 이메일과 사용자가 액세스할 수 있는 데이터/행 간에 매핑을 사용할 수 있습니다.
- 서비스 계정은 BigQuery 데이터에 액세스하는 데 사용됩니다. 따라서 청구는 중앙 집중화되고 대시보드 제공업체가 관리합니다.
제한사항
- 대시보드를 처음 볼 때 각 뷰어의 일회성 승인이 필요합니다.
- 뷰어는 대시보드를 수정하거나 다른 사용자와 공유할 수 없습니다.
- Workspace 고객이고 관리자가 '링크가 있는 모든 사용자'와의 Drive 파일 공유를 사용 중지한 경우 공유 제한을 삭제하거나 Gmail.com 계정에서 솔루션을 개발하세요.
해결 방법
솔루션을 구현하려면 다음 단계를 모두 완료하세요.
새 커뮤니티 커넥터 만들기
커뮤니티 커넥터 작동 방식을 검토하고 커뮤니티 커넥터 Codelab을 완료하여 시작하세요. 커넥터 생성을 위한 개발자 도구를 사용하면 개발 프로세스를 더 빠르고 쉽게 수행할 수 있습니다.
커넥터 코드 작성
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
를 추가합니다. 자세한 내용은 Apps Script의 승인 범위를 참조하세요.- 조건부: 커넥터에서 사용되는 서비스의 모든 관련 범위를 추가합니다.
매니페스트는 다음과 같이 표시됩니다.
{
...
"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 액세스 권한이 있는지 확인하세요.
- 필요한 Identity and Access Management (IAM) 역할:
BigQuery Data Viewer
,BigQuery Job User
- 필요한 Identity and Access Management (IAM) 역할:
- JSON 파일을 다운로드하여 서비스 계정 키를 가져옵니다. 커넥터 프로젝트의 스크립트 속성에 키를 저장하세요.
- Apps Script 프로젝트에 Apps Script용 OAuth2 라이브러리를 포함합니다.
- 서비스 계정에 필요한 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 절을 사용하여 데이터를 필터링합니다.
- 유효 사용자의 이메일을 가져옵니다 (사용자 ID 참조).
- Looker Studio 고급 서비스를 사용하여 getData에서 쿼리 구성을 반환합니다.
- 구성된 쿼리, 결제 프로젝트, 서비스 계정 OAuth 토큰을 전달합니다.
- 조건부:
getConfig
커넥터를 통해 사용자 입력을 받는 경우 입력을 BigQuery 매개변수로 통합해야 합니다.
대시보드 만들기
- 커넥터의 배포 및 버전 작동 방식을 이해합니다.
- 커넥터의 프로덕션 배포를 만듭니다.
- 프로덕션 배포를 사용하여 Looker Studio에서 데이터 소스와 새 보고서를 만듭니다.
- 보고서에 표와 차트를 모두 추가합니다.
- 이제 대시보드를 사용자와 공유할 준비가 되었습니다.
사용자가 대시보드를 사용할 수 있도록 설정
- 선택한 사용자 또는 '링크가 있는 모든 사용자'와 커넥터 스크립트를 공유합니다.
- 선택한 사용자 또는 '링크가 있는 모든 사용자'와 대시보드를 공유합니다.
- 선택사항: URL 단축기 서비스를 사용하여 대시보드 URL의 단축 링크를 만듭니다. 단축 URL을 사용자와 공유합니다. 이렇게 하면 필요한 경우 나중에 대시보드 URL을 바꾸는 데 도움이 됩니다.
- 선택사항: 보고서에 Google 애널리틱스를 설정하여 대시보드 사용량을 측정합니다.