예를 들어 영업을 위한 솔루션을 만든다고 가정해 보겠습니다. 되었습니다. 영업 조직은 여러 지역으로 나뉘며 각 지역이 에는 자체 지역 관리자가 있습니다. BigQuery의 영업 데이터 세트에는 판매가 있습니다. 확인할 수 있습니다.
제안된 솔루션에는 단일 대시보드가 있으며, 여기에서 지역 관리자가 은(는) 해당 지역의 판매 데이터만 볼 수 있습니다.
요구사항
- 대시보드 뷰어는 Google 계정으로 로그인됩니다.
- 사용자의 이메일과 보유한 데이터/행 간에 매핑을 사용할 수 있음 액세스할 수 있습니다
- BigQuery 데이터에 액세스하는 데 서비스 계정이 사용됩니다. 따라서 결제는 대시보드 제공업체가 중앙 집중화하고 관리합니다
제한사항
- 대시보드에서는 처음에는 각 뷰어의 일회성 승인이 필요합니다. 합니다.
- 뷰어는 대시보드를 수정하거나 다른 사용자와 공유할 수 없습니다.
- Workspace 고객이며 관리자가 공유를 사용 중지한 경우 Drive 파일을 '링크가 있는 모든 사용자'에 추가하려면 공유를 중지하세요. Gmail.com 계정에서 솔루션을 개발할 수 있습니다.
솔루션
다음 단계를 모두 완료하여 솔루션을 구현합니다.
새 커뮤니티 커넥터 만들기
커뮤니티 커넥터 작동 방식을 검토하고 커뮤니티 커넥터 Codelab을 참고하세요. 개발자 도구를 사용하여 커넥터 생성 개발 프로세스가 더 빠르고 간편해집니다.
커넥터 코드 작성
getAuthType()
는NONE
를 반환해야 합니다.getConfig()
는 빈 구성을 반환해야 합니다.- 선택사항: 대시보드 구성을 위해 특정 입력이 필요한 경우 사용자 입력을 요청할 수 있습니다
getSchema()
는 쿼리의 스키마를 반환해야 합니다.- 선택사항: SQL 또는 BigQuery API 중 하나에서 맞춤 필드와 계산을 추가할 수 있습니다. 계산된 필드를 스키마의 일부로 사용할 수 있습니다.
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 범위를 참조하세요. <ph type="x-smartling-placeholder">- </ph>
- 조건부: 커넥터가 있습니다.
매니페스트는 다음과 같이 표시됩니다.
{
...
"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 고급 서비스를 사용하여 쿼리 구성을 반환합니다.
할 수 있습니다.
- 구성된 쿼리, 결제 프로젝트, 서비스 계정 전달 OAuth 토큰입니다.
- 조건부:
getConfig
커넥터를 통해 사용자 입력을 받는 경우 입력을 BigQuery 매개변수로 통합해야 합니다.
대시보드 만들기
- 커넥터의 배포 및 버전 작동 방식을 이해합니다.
- 커넥터의 프로덕션 배포를 만듭니다.
- 프로덕션 배포를 사용하여 Looker Studio로 이동합니다.
- 보고서에 모든 표와 차트를 추가합니다.
- 이제 대시보드를 사용자와 공유할 준비가 되었습니다.
사용자에게 대시보드 제공
- 선택한 사용자 또는 '모든 사용자'와 커넥터 스크립트 공유 링크가 표시됩니다.
- 선택한 사용자 또는 '다음이 있는 모든 사용자'와 대시보드 공유 링크'를 클릭하세요.
- 선택사항: URL Shortener 서비스를 사용하여 대시보드 URL을 클릭합니다. 단축된 URL을 사용자와 공유합니다. 이렇게 하면 필요한 경우 나중에 대시보드 URL을 변경할 수 있습니다.
- 선택사항: 다음에 대해 Google 애널리틱스를 설정하여 대시보드 사용을 측정합니다. 확인할 수 있습니다