looker-studio-bigquery
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLooker Studio BigQuery Integration
Looker Studio 与 BigQuery 集成
When to use this skill
何时使用此技能
- 분석 대시보드 생성: BigQuery 데이터를 시각화하여 비즈니스 인사이트 도출
- 실시간 리포팅: 자동 새로고침되는 대시보드 구축
- 성능 최적화: 대용량 데이터셋의 쿼리 비용 및 로딩 시간 최적화
- 데이터 파이프라인: 스케줄된 쿼리로 ETL 프로세스 자동화
- 팀 협업: 공유 가능한 인터랙티브 대시보드 구축
- 创建分析仪表板:将BigQuery数据可视化以获取业务洞察
- 实时报告:构建可自动刷新的仪表板
- 性能优化:优化大规模数据集的查询成本与加载时间
- 数据管道:通过计划查询实现ETL流程自动化
- 团队协作:构建可共享的交互式仪表板
Instructions
操作步骤
Step 1: GCP BigQuery 환경 준비
步骤1:准备GCP BigQuery环境
프로젝트 생성 및 활성화
Google Cloud Console에서 새 프로젝트를 생성하고 BigQuery API를 활성화합니다.
bash
undefined创建并激活项目
在Google Cloud Console中创建新项目并启用BigQuery API。
bash
undefinedgcloud CLI를 사용한 프로젝트 생성
使用gcloud CLI创建项目
gcloud projects create my-analytics-project
gcloud config set project my-analytics-project
gcloud services enable bigquery.googleapis.com
**데이터셋 및 테이블 생성**
```sql
-- 데이터셋 생성
CREATE SCHEMA `my-project.analytics_dataset`
OPTIONS(
description="분석용 데이터셋",
location="US"
);
-- 예제 테이블 생성 (GA4 데이터)
CREATE TABLE `my-project.analytics_dataset.events` (
event_date DATE,
event_name STRING,
user_id INT64,
event_value FLOAT64,
event_timestamp TIMESTAMP,
geo_country STRING,
device_category STRING
);IAM 권한 설정
Looker Studio에서 BigQuery에 접근할 수 있도록 IAM 권한을 부여합니다:
| 역할 | 설명 |
|---|---|
| 테이블 조회 권한 |
| 쿼리 실행 권한 |
| 작업 실행 권한 |
gcloud projects create my-analytics-project
gcloud config set project my-analytics-project
gcloud services enable bigquery.googleapis.com
**创建数据集和表**
```sql
-- 创建数据集
CREATE SCHEMA `my-project.analytics_dataset`
OPTIONS(
description="分析用数据集",
location="US"
);
-- 创建示例表(GA4数据)
CREATE TABLE `my-project.analytics_dataset.events` (
event_date DATE,
event_name STRING,
user_id INT64,
event_value FLOAT64,
event_timestamp TIMESTAMP,
geo_country STRING,
device_category STRING
);设置IAM权限
为Looker Studio设置可访问BigQuery的IAM权限:
| 角色 | 说明 |
|---|---|
| 表格查询权限 |
| 查询执行权限 |
| 任务执行权限 |
Step 2: Looker Studio에서 BigQuery 연결하기
步骤2:在Looker Studio中连接BigQuery
네이티브 BigQuery 커넥터 사용 (권장)
- Looker Studio 홈페이지에서 + 만들기 → 데이터 소스 클릭
- "BigQuery"로 검색하여 Google BigQuery 커넥터 선택
- Google 계정으로 인증
- 프로젝트, 데이터셋, 테이블 선택
- 연결을 클릭하여 데이터 소스 생성
맞춤 SQL 쿼리 방식
복잡한 데이터 변환이 필요할 때 SQL을 직접 작성합니다:
sql
SELECT
event_date,
event_name,
COUNT(DISTINCT user_id) as unique_users,
SUM(event_value) as total_revenue,
AVG(event_value) as avg_revenue_per_event
FROM `my-project.analytics_dataset.events`
WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY event_date, event_name
ORDER BY event_date DESC장점:
- 복잡한 데이터 변환을 SQL에서 처리
- BigQuery에서 데이터를 미리 집계하여 쿼리 비용 절감
- 매번 모든 데이터를 로드하지 않아 성능 향상
여러 테이블 조인 방식
sql
SELECT
e.event_date,
e.event_name,
u.user_country,
u.user_tier,
COUNT(DISTINCT e.user_id) as unique_users,
SUM(e.event_value) as revenue
FROM `my-project.analytics_dataset.events` e
LEFT JOIN `my-project.analytics_dataset.users` u
ON e.user_id = u.user_id
WHERE e.event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY e.event_date, e.event_name, u.user_country, u.user_tier使用原生BigQuery连接器(推荐)
- 在Looker Studio首页点击 + 创建 → 数据源
- 搜索“BigQuery”并选择Google BigQuery连接器
- 使用Google账号完成认证
- 选择项目、数据集和表
- 点击 连接 创建数据源
自定义SQL查询方式
当需要复杂数据转换时,可直接编写SQL:
sql
SELECT
event_date,
event_name,
COUNT(DISTINCT user_id) as unique_users,
SUM(event_value) as total_revenue,
AVG(event_value) as avg_revenue_per_event
FROM `my-project.analytics_dataset.events`
WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY event_date, event_name
ORDER BY event_date DESC优势:
- 在SQL中处理复杂数据转换
- 在BigQuery中预先聚合数据以降低查询成本
- 无需每次加载全部数据,提升性能
多表关联方式
sql
SELECT
e.event_date,
e.event_name,
u.user_country,
u.user_tier,
COUNT(DISTINCT e.user_id) as unique_users,
SUM(e.event_value) as revenue
FROM `my-project.analytics_dataset.events` e
LEFT JOIN `my-project.analytics_dataset.users` u
ON e.user_id = u.user_id
WHERE e.event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY e.event_date, e.event_name, u.user_country, u.user_tierStep 3: 스케줄된 쿼리로 성능 최적화
步骤3:通过计划查询优化性能
라이브 쿼리 대신 스케줄된 쿼리를 사용하여 주기적으로 데이터를 미리 계산합니다:
sql
-- BigQuery에서 매일 집계 데이터를 계산하여 저장
CREATE OR REPLACE TABLE `my-project.analytics_dataset.daily_summary` AS
SELECT
CURRENT_DATE() as report_date,
event_name,
user_country,
COUNT(DISTINCT user_id) as daily_users,
SUM(event_value) as daily_revenue,
AVG(event_value) as avg_event_value,
MAX(event_timestamp) as last_event_time
FROM `my-project.analytics_dataset.events`
WHERE event_date = CURRENT_DATE() - 1
GROUP BY event_name, user_countryBigQuery UI에서 스케줄된 쿼리로 설정:
- 매일 자동 실행
- 결과를 새로운 테이블에 저장
- Looker Studio는 미리 계산된 테이블에 연결
장점:
- Looker Studio 로딩 시간 단축 (50-80%)
- BigQuery 비용 절감 (스캔 데이터 감소)
- 대시보드 새로고침 속도 향상
替代实时查询,使用计划查询定期预先计算数据:
sql
-- 在BigQuery中每日计算聚合数据并存储
CREATE OR REPLACE TABLE `my-project.analytics_dataset.daily_summary` AS
SELECT
CURRENT_DATE() as report_date,
event_name,
user_country,
COUNT(DISTINCT user_id) as daily_users,
SUM(event_value) as daily_revenue,
AVG(event_value) as avg_event_value,
MAX(event_timestamp) as last_event_time
FROM `my-project.analytics_dataset.events`
WHERE event_date = CURRENT_DATE() - 1
GROUP BY event_name, user_country在BigQuery UI中设置为计划查询:
- 每日自动执行
- 将结果存储到新表中
- Looker Studio连接到预先计算好的表
优势:
- 缩短Looker Studio加载时间(50-80%)
- 降低BigQuery成本(减少扫描数据量)
- 提升仪表板刷新速度
Step 4: 대시보드 레이아웃 설계
步骤4:设计仪表板布局
F-패턴 레이아웃
사용자의 자연스러운 읽기 흐름을 따르는 F-패턴을 사용합니다:
┌─────────────────────────────────────┐
│ 헤더: 로고 | 필터/날짜선택기 │ ← 사용자가 먼저 본다
├─────────────────────────────────────┤
│ KPI 1 │ KPI 2 │ KPI 3 │ KPI 4 │ ← 핵심 지표 (3-4개)
├─────────────────────────────────────┤
│ │
│ 주요 차트 (시계열 또는 비교) │ ← 깊이 있는 인사이트
│ │
├─────────────────────────────────────┤
│ 구체적 데이터 테이블 │ ← 상세 분석
│ (드릴다운 가능) │
├─────────────────────────────────────┤
│ 추가 인사이트 / 맵 / 히트맵 │
└─────────────────────────────────────┘대시보드 구성 요소
| 요소 | 목적 | 예시 |
|---|---|---|
| 헤더 | 대시보드 제목, 로고, 필터 배치 | "2026년 Q1 판매 분석" |
| KPI 타일 | 주요 지표 한눈에 표시 | 총 매출, 전월 대비 성장률, 활성 사용자 |
| 추세 차트 | 시간 경과에 따른 변화 | 라인 차트로 일일/주간 매출 추이 |
| 비교 차트 | 카테고리 간 비교 | 막대 차트로 지역/상품별 판매량 비교 |
| 분포 차트 | 데이터 분포 시각화 | 히트맵, 산점도, 버블 차트 |
| 상세 테이블 | 정확한 수치 제공 | 조건부 서식으로 임계값 강조 |
| 맵 | 지리적 데이터 | 국가/지역별 매출 분포 |
실제 예시: 전자상거래 대시보드
┌──────────────────────────────────────────────────┐
│ 📊 2026년 1월 판매 분석 | 🔽 국가 선택 | 📅 날짜 │
├──────────────────────────────────────────────────┤
│ 총 매출: $125,000 │ 주문수: 3,200 │ 전환율: 3.5% │
├──────────────────────────────────────────────────┤
│ 일일 매출 추이 (라인 차트) │
│ ↗ 상승 추세: +15% vs 지난달 │
├──────────────────────────────────────────────────┤
│ 카테고리별 판매 │ 상위 제품 Top 10 │
│ (막대 차트) │ (테이블, 정렬 가능) │
├──────────────────────────────────────────────────┤
│ 지역별 매출 분포 (맵) │
└──────────────────────────────────────────────────┘F型布局
遵循用户自然阅读流的F型布局:
┌─────────────────────────────────────┐
│ 头部:Logo | 筛选器/日期选择器 │ ← 用户首先关注
├─────────────────────────────────────┤
│ KPI指标1 │ KPI指标2 │ KPI指标3 │ KPI指标4 │ ← 核心指标(3-4个)
├─────────────────────────────────────┤
│ │
│ 主要图表(时间序列或对比) │ ← 深度洞察
│ │
├─────────────────────────────────────┤
│ 详细数据表格 │ ← 精细化分析
│ (支持钻取) │
├─────────────────────────────────────┤
│ 补充洞察 / 地图 / 热力图 │
└─────────────────────────────────────┘仪表板组成元素
| 元素 | 用途 | 示例 |
|---|---|---|
| 头部 | 放置仪表板标题、Logo、筛选器 | "2026年Q1销售分析" |
| KPI卡片 | 直观展示核心指标 | 总销售额、同比增长率、活跃用户数 |
| 趋势图表 | 展示数据随时间的变化 | 折线图呈现日/周销售额趋势 |
| 对比图表 | 对比不同分类的数据 | 柱状图对比地区/产品销量 |
| 分布图表 | 可视化数据分布 | 热力图、散点图、气泡图 |
| 详细表格 | 提供精确数值 | 用条件格式突出阈值 |
| 地图 | 展示地理数据 | 国家/地区销售额分布 |
实际示例:电商仪表板
┌──────────────────────────────────────────────────┐
│ 📊 2026年1月销售分析 | 🔽 国家选择 | 📅 日期 │
├──────────────────────────────────────────────────┤
│ 总销售额: $125,000 │ 订单数: 3,200 │ 转化率: 3.5% │
├──────────────────────────────────────────────────┤
│ 日销售额趋势(折线图) │
│ ↗ 上升趋势:较上月增长15% │
├──────────────────────────────────────────────────┤
│ 分类销量 │ 热销产品Top 10 │
│ (柱状图) │ (可排序表格) │
├──────────────────────────────────────────────────┤
│ 地区销售额分布(地图) │
└──────────────────────────────────────────────────┘Step 5: 인터랙티브 필터 및 컨트롤
步骤5:添加交互式筛选器与控件
필터 종류
1. 날짜 범위 필터 (필수)
- 캘린더로 특정 기간 선택
- "지난 7일", "이번 달" 같은 사전 정의 옵션
- 데이터셋과 연결하여 모든 차트에 자동 반영
2. 드롭다운 필터
예: 국가 선택 필터
- 모든 국가
- 한국
- 일본
- 미국
선택하면 해당 국가 데이터만 표시3. 고급 필터 (SQL 기반)
sql
-- 매출액이 $10,000 이상인 고객만 표시
WHERE customer_revenue >= 10000필터 구현 예시
sql
-- 1. 날짜 필터
event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL @date_range_days DAY)
-- 2. 드롭다운 필터 (사용자 입력)
WHERE country = @selected_country
-- 3. 복합 필터
WHERE event_date >= @start_date
AND event_date <= @end_date
AND country IN (@country_list)
AND revenue >= @min_revenue筛选器类型
1. 日期范围筛选器(必填)
- 通过日历选择特定时间段
- 支持“过去7天”、“本月”等预设选项
- 与数据集关联,自动应用到所有图表
2. 下拉筛选器
示例:国家选择筛选器
- 所有国家
- 韩国
- 日本
- 美国
选择后仅展示对应国家的数据3. 高级筛选器(基于SQL)
sql
-- 仅展示销售额≥$10,000的客户
WHERE customer_revenue >= 10000筛选器实现示例
sql
-- 1. 日期筛选器
event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL @date_range_days DAY)
-- 2. 下拉筛选器(用户输入)
WHERE country = @selected_country
-- 3. 复合筛选器
WHERE event_date >= @start_date
AND event_date <= @end_date
AND country IN (@country_list)
AND revenue >= @min_revenueStep 6: 쿼리 성능 최적화
步骤6:优化查询性能
1. 파티션 키 사용
sql
-- ❌ 비효율적인 쿼리
SELECT * FROM events
WHERE DATE(event_timestamp) >= '2026-01-01'
-- ✅ 최적화된 쿼리 (파티션 사용)
SELECT * FROM events
WHERE event_date >= '2026-01-01' -- 파티션 키 직접 사용2. 데이터 추출 (Extract and Load)
매일 밤 Looker Studio 전용 테이블에 데이터를 추출합니다:
sql
-- 매일 자정에 실행되는 스케줄 쿼리
CREATE OR REPLACE TABLE `my-project.looker_studio_data.dashboard_snapshot` AS
SELECT
event_date,
event_name,
country,
device_category,
COUNT(DISTINCT user_id) as users,
SUM(event_value) as revenue,
COUNT(*) as events
FROM `my-project.analytics_dataset.events`
WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY event_date, event_name, country, device_category;3. 캐싱 전략
- Looker Studio 기본 캐싱: 자동으로 3시간 동안 캐시
- BigQuery 캐싱: 동일한 쿼리는 이전 결과 재사용 (6시간)
- 스케줄된 쿼리 활용: 야간에 미리 계산
4. 대시보드 복잡도 관리
- 한 대시보드에 최대 20-25개 차트만 사용
- 차트가 많으면 여러 탭(페이지)으로 분산
- 상관없는 메트릭끼리 그룹화하지 않기
1. 使用分区键
sql
-- ❌ 低效查询
SELECT * FROM events
WHERE DATE(event_timestamp) >= '2026-01-01'
-- ✅ 优化查询(使用分区)
SELECT * FROM events
WHERE event_date >= '2026-01-01' -- 直接使用分区键2. 数据抽取(Extract and Load)
每日夜间将数据抽取到Looker Studio专用表:
sql
-- 每日零点执行的计划查询
CREATE OR REPLACE TABLE `my-project.looker_studio_data.dashboard_snapshot` AS
SELECT
event_date,
event_name,
country,
device_category,
COUNT(DISTINCT user_id) as users,
SUM(event_value) as revenue,
COUNT(*) as events
FROM `my-project.analytics_dataset.events`
WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY event_date, event_name, country, device_category;3. 缓存策略
- Looker Studio默认缓存:自动缓存3小时
- BigQuery缓存:相同查询复用之前的结果(6小时)
- 利用计划查询:夜间预先计算数据
4. 管理仪表板复杂度
- 单个仪表板最多使用20-25个图表
- 图表过多时拆分到多个标签页(页面)
- 避免将无关指标分组展示
Step 7: Community Connector 개발 (고급)
步骤7:开发Community Connector(高级)
더 복잡한 요구사항이 있다면 Community Connector를 개발합니다:
javascript
// Community Connector 예시 (Apps Script)
function getConfig() {
return {
configParams: [
{
name: 'project_id',
displayName: 'BigQuery Project ID',
helpText: 'Your GCP Project ID',
placeholder: 'my-project-id'
},
{
name: 'dataset_id',
displayName: 'Dataset ID'
}
]
};
}
function getData(request) {
const projectId = request.configParams.project_id;
const datasetId = request.configParams.dataset_id;
// BigQuery에서 데이터 로드
const bq = BigQuery.newDataset(projectId, datasetId);
// ... 데이터 처리 로직
return { rows: data };
}Community Connector의 장점:
- 중앙 집중식 청구 (서비스 계정 사용)
- 커스텀 캐싱 로직
- 사전 정의된 쿼리 템플릿
- 사용자 설정 파라미터화
若有更复杂的需求,可开发Community Connector:
javascript
// Community Connector示例(Apps Script)
function getConfig() {
return {
configParams: [
{
name: 'project_id',
displayName: 'BigQuery Project ID',
helpText: 'Your GCP Project ID',
placeholder: 'my-project-id'
},
{
name: 'dataset_id',
displayName: 'Dataset ID'
}
]
};
}
function getData(request) {
const projectId = request.configParams.project_id;
const datasetId = request.configParams.dataset_id;
// 从BigQuery加载数据
const bq = BigQuery.newDataset(projectId, datasetId);
// ... 数据处理逻辑
return { rows: data };
}Community Connector优势:
- 集中计费(使用服务账号)
- 自定义缓存逻辑
- 预设查询模板
- 支持用户配置参数
Step 8: 보안 및 접근 제어
步骤8:安全与访问控制
BigQuery 수준의 보안
sql
-- 특정 사용자에게만 테이블 접근 권한 부여
GRANT `roles/bigquery.dataViewer`
ON TABLE `my-project.analytics_dataset.events`
TO "user@example.com";
-- 행 수준 보안 (Row-Level Security)
CREATE OR REPLACE ROW ACCESS POLICY rls_by_country
ON `my-project.analytics_dataset.events`
GRANT ('editor@company.com') TO ('KR'),
('viewer@company.com') TO ('US', 'JP');Looker Studio 수준의 보안
- 대시보드 공유 시 뷰어 권한 설정 (Viewer/Editor)
- 특정 사용자/그룹에만 공유
- 데이터 소스별 권한 관리
BigQuery层面的安全
sql
-- 仅授予特定用户表格访问权限
GRANT `roles/bigquery.dataViewer`
ON TABLE `my-project.analytics_dataset.events`
TO "user@example.com";
-- 行级安全(Row-Level Security)
CREATE OR REPLACE ROW ACCESS POLICY rls_by_country
ON `my-project.analytics_dataset.events`
GRANT ('editor@company.com') TO ('KR'),
('viewer@company.com') TO ('US', 'JP');Looker Studio层面的安全
- 共享仪表板时设置查看者权限(Viewer/Editor)
- 仅共享给特定用户/组
- 按数据源管理访问权限
Output format
输出格式
대시보드 설정 체크리스트
仪表板设置检查表
markdown
undefinedmarkdown
undefinedDashboard Setup Checklist
Dashboard Setup Checklist
데이터 소스 설정
数据源设置
- BigQuery 프로젝트/데이터셋 준비
- IAM 권한 설정 완료
- 스케줄된 쿼리 구성 (성능 최적화)
- 데이터 소스 연결 테스트
- 准备好BigQuery项目/数据集
- 完成IAM权限设置
- 配置计划查询(性能优化)
- 测试数据源连接
대시보드 설계
仪表板设计
- F-패턴 레이아웃 적용
- KPI 타일 배치 (3-4개)
- 주요 차트 추가 (추세/비교)
- 상세 테이블 포함
- 인터랙티브 필터 추가
- 应用F型布局
- 放置KPI卡片(3-4个)
- 添加主要图表(趋势/对比)
- 包含详细表格
- 添加交互式筛选器
성능 최적화
性能优化
- 파티션 키 활용 확인
- 쿼리 비용 최적화
- 캐싱 전략 적용
- 차트 수 20-25개 이하 확인
- 确认使用分区键
- 优化查询成本
- 应用缓存策略
- 确认图表数量在20-25个以内
공유 및 보안
共享与安全
- 접근 권한 설정
- 데이터 보안 검토
- 공유 링크 생성
undefined- 设置访问权限
- 审查数据安全
- 创建共享链接
undefinedConstraints
约束条件
필수 규칙 (MUST)
必须遵循的规则(MUST)
- 날짜 필터 필수: 모든 대시보드에 날짜 범위 필터 포함
- 파티션 사용: BigQuery 쿼리에서 파티션 키 직접 사용
- 권한 분리: 데이터 소스별 접근 권한 명확히 설정
- 必填日期筛选器:所有仪表板必须包含日期范围筛选器
- 使用分区:在BigQuery查询中直接使用分区键
- 权限分离:明确设置各数据源的访问权限
금지 사항 (MUST NOT)
禁止操作(MUST NOT)
- 과도한 차트: 한 대시보드에 25개 초과 차트 배치 금지
- **SELECT ***: 전체 컬럼 조회 대신 필요한 컬럼만 선택
- 라이브 쿼리 남용: 대용량 테이블에 직접 연결 지양
- 图表过多:单个仪表板禁止放置超过25个图表
- **SELECT ***:避免查询全量列,仅选择需要的列
- 滥用实时查询:避免直接连接大规模表格
Best practices
最佳实践
| 항목 | 권장사항 |
|---|---|
| 데이터 새로고침 | 스케줄된 쿼리 사용, 야간에 실행 |
| 대시보드 크기 | 최대 25개 차트, 필요시 여러 페이지로 분산 |
| 필터 구성 | 날짜 필터 필수, 3-5개 추가 필터로 제한 |
| 색상 팔레트 | 회사 브랜드 3-4가지 색상만 사용 |
| 타이틀/레이블 | 명확한 설명으로 직관성 확보 |
| 차트 선택 | KPI → 추세 → 비교 → 상세 순서로 배치 |
| 응답 속도 | 평균 2-3초 이내 로딩 목표 |
| 비용 관리 | 월 BigQuery 스캔량 5TB 이내 |
| 项目 | 推荐方案 |
|---|---|
| 数据刷新 | 使用计划查询,在夜间执行 |
| 仪表板规模 | 最多25个图表,必要时分拆为多页面 |
| 筛选器配置 | 必须包含日期筛选器,额外筛选器限制在3-5个 |
| 配色方案 | 仅使用3-4种符合企业品牌的颜色 |
| 标题/标签 | 使用清晰描述提升直观性 |
| 图表顺序 | 按KPI→趋势→对比→详细的顺序排列 |
| 响应速度 | 目标平均加载时间在2-3秒以内 |
| 成本管理 | 每月BigQuery扫描数据量控制在5TB以内 |
References
参考资料
Metadata
元数据
버전
版本
- 현재 버전: 1.0.0
- 최종 업데이트: 2026-01-14
- 호환 플랫폼: Claude, ChatGPT, Gemini
- 当前版本:1.0.0
- 最后更新:2026-01-14
- 兼容平台:Claude, ChatGPT, Gemini
관련 스킬
相关技能
- monitoring-observability: 데이터 수집 및 모니터링
- database-schema-design: 데이터 모델링
- monitoring-observability:数据采集与监控
- database-schema-design:数据建模
태그
标签
#Looker-Studio#BigQuery#dashboard#analytics#visualization#GCP#Looker-Studio#BigQuery#dashboard#analytics#visualization#GCPExamples
示例
Example 1: 기본 대시보드 생성
示例1:创建基础仪表板
sql
-- 1. 일일 요약 테이블 생성
CREATE OR REPLACE TABLE `my-project.looker_data.daily_metrics` AS
SELECT
event_date,
COUNT(DISTINCT user_id) as dau,
SUM(revenue) as total_revenue,
COUNT(*) as total_events
FROM `my-project.analytics.events`
WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY event_date;
-- 2. Looker Studio에서 이 테이블에 연결
-- 3. KPI 스코어카드 추가: DAU, 총 매출
-- 4. 라인 차트로 일일 추세 시각화sql
-- 1. 创建每日汇总表
CREATE OR REPLACE TABLE `my-project.looker_data.daily_metrics` AS
SELECT
event_date,
COUNT(DISTINCT user_id) as dau,
SUM(revenue) as total_revenue,
COUNT(*) as total_events
FROM `my-project.analytics.events`
WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY event_date;
-- 2. 在Looker Studio中连接此表
-- 3. 添加KPI计分卡:DAU、总销售额
-- 4. 用折线图可视化每日趋势Example 2: 고급 분석 대시보드
示例2:创建高级分析仪表板
sql
-- 코호트 분석을 위한 데이터 준비
CREATE OR REPLACE TABLE `my-project.looker_data.cohort_analysis` AS
WITH user_cohort AS (
SELECT
user_id,
DATE_TRUNC(MIN(event_date), WEEK) as cohort_week
FROM `my-project.analytics.events`
GROUP BY user_id
)
SELECT
uc.cohort_week,
DATE_DIFF(e.event_date, uc.cohort_week, WEEK) as week_number,
COUNT(DISTINCT e.user_id) as active_users
FROM `my-project.analytics.events` e
JOIN user_cohort uc ON e.user_id = uc.user_id
GROUP BY cohort_week, week_number
ORDER BY cohort_week, week_number;sql
-- 为群组分析准备数据
CREATE OR REPLACE TABLE `my-project.looker_data.cohort_analysis` AS
WITH user_cohort AS (
SELECT
user_id,
DATE_TRUNC(MIN(event_date), WEEK) as cohort_week
FROM `my-project.analytics.events`
GROUP BY user_id
)
SELECT
uc.cohort_week,
DATE_DIFF(e.event_date, uc.cohort_week, WEEK) as week_number,
COUNT(DISTINCT e.user_id) as active_users
FROM `my-project.analytics.events` e
JOIN user_cohort uc ON e.user_id = uc.user_id
GROUP BY cohort_week, week_number
ORDER BY cohort_week, week_number;