🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install supercent-io/skills-template/looker-studio-bigquery
💡 提示:需要 Node.js 和 NPM
何时使用此技能
- 创建分析仪表板:可视化 BigQuery 数据以获取业务洞察
- 实时报告:构建自动刷新的仪表板
- 性能优化:优化查询成本和大数据集的加载时间
- 数据管道:使用定时查询自动化 ETL 流程
- 团队协作:构建可共享的交互式仪表板
操作指南
步骤 1:准备 GCP BigQuery 环境
项目创建与启用
在 Google Cloud Console 中创建新项目并启用 BigQuery API。
# 使用 gcloud CLI 创建项目
gcloud projects create my-analytics-project
gcloud config set project my-analytics-project
gcloud services enable bigquery.googleapis.com
创建数据集和数据表
-- 创建数据集
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 权限配置
授予 IAM 权限以便 Looker Studio 能够访问 BigQuery:
| 角色 | 描述 |
|---|---|
BigQuery Data Viewer |
数据表读取权限 |
BigQuery User |
查询执行权限 |
BigQuery Job User |
作业执行权限 |
步骤 2:在 Looker Studio 中连接 BigQuery
使用原生 BigQuery 连接器(推荐)
- 在 Looker Studio 首页,点击 + 创建 → 数据源
- 搜索 “BigQuery”,选择 Google BigQuery 连接器
- 使用 Google 账号进行身份验证
- 选择项目、数据集和表
- 点击 连接 创建数据源
自定义 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 中预先聚合数据以降低查询成本
- 避免每次加载全部数据,提升性能
多表连接方式
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
步骤 3:使用定时查询优化性能
使用定时查询替代实时查询,定期预计算数据:
-- 每日在 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 界面中将其配置为定时查询:
- 每日自动运行
- 将结果保存到新表
- Looker Studio 连接到预计算的表
优点:
- 减少 Looker Studio 加载时间 (50-80%)
- 降低 BigQuery 成本(扫描数据量减少)
- 提升仪表板刷新速度
步骤 4:仪表板布局设计
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% │
├──────────────────────────────────────────────────┤
│ 按品类销售额 │ 前10名产品 │
│ (条形图) │ (表格,可排序) │
├──────────────────────────────────────────────────┤
│ 区域收入分布(地图) │
└──────────────────────────────────────────────────┘
步骤 5:交互式筛选器和控件
筛选器类型
1. 日期范围筛选器(必需)
- 通过日历选择特定时间段
- 预定义选项如”过去7天”、”本月”
- 连接到数据集,自动应用于所有图表
2. 下拉筛选器
示例:国家选择筛选器
- 所有国家
- 韩国
- 日本
- 美国
仅显示所选国家的数据
3. 高级筛选器(基于 SQL)
-- 仅显示收入 ≥ $10,000 的客户
WHERE customer_revenue >= 10000
筛选器实现示例
-- 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
步骤 6:查询性能优化
1. 使用分区键
-- ❌ 低效查询
SELECT * FROM events
WHERE DATE(event_timestamp) >= '2026-01-01'
-- ✅ 优化查询(使用分区)
SELECT * FROM events
WHERE event_date >= '2026-01-01' -- 直接使用分区键
2. 数据提取
每晚将数据提取到 Looker Studio 专用表:
-- 每天午夜运行的定时查询
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 个图表
- 如果图表较多,可以分布在多个标签页(页面)上
- 不要将不相关的指标放在一起
步骤 7:社区连接器开发(高级)
为满足更复杂的需求,可以开发社区连接器:
// 社区连接器示例 (Apps Script)
function getConfig() {
return {
configParams: [
{
name: 'project_id',
displayName: 'BigQuery 项目 ID',
helpText: '您的 GCP 项目 ID',
placeholder: 'my-project-id'
},
{
name: 'dataset_id',
displayName: '数据集 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 };
}
社区连接器的优势:
- 集中计费(使用服务账号)
- 自定义缓存逻辑
- 预定义的查询模板
- 参数化的用户设置
步骤 8:安全与访问控制
BigQuery 级别的安全
-- 仅授予特定用户表访问权限
GRANT `roles/bigquery.dataViewer`
ON TABLE `my-project.analytics_dataset.events`
TO "user@example.com";
-- 行级安全策略
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 级别的安全
- 共享仪表板时设置查看者权限(查看者/编辑者)
- 仅与特定用户/群组共享
- 每个数据源单独管理权限
输出格式
仪表板设置检查清单
## 仪表板设置检查清单
### 数据源配置
- [ ] BigQuery 项目/数据集已准备好
- [ ] IAM 权限已配置
- [ ] 定时查询已配置(性能优化)
- [ ] 数据源连接测试通过
### 仪表板设计
- [ ] 应用 F 型布局
- [ ] 放置 KPI 卡片 (3-4个)
- [ ] 添加主图表(趋势/对比)
- [ ] 包含详细数据表
- [ ] 添加交互式筛选器
### 性能优化
- [ ] 验证是否使用了分区键
- [ ] 查询成本已优化
- [ ] 应用了缓存策略
- [ ] 图表数量已确认(不超过 20-25 个)
### 共享与安全
- [ ] 访问权限已配置
- [ ] 数据安全已审查
- [ ] 共享链接已创建
约束条件
强制性规则 (必须遵守)
- 日期筛选器必需:所有仪表板必须包含日期范围筛选器
- 使用分区:在 BigQuery 查询中直接使用分区键
- 权限分离:每个数据源必须清晰配置访问权限
禁止事项 (绝不能做)
- 图表过多:单个仪表板上不要放置超过 25 个图表
- **SELECT ***:只选择必要的列,而不是所有列
- 过度使用实时查询:避免直接连接到大表进行实时查询
最佳实践
| 项目 | 推荐做法 |
|---|---|
| 数据刷新 | 使用定时查询,在夜间运行 |
| 仪表板大小 | 最多 25 个图表,必要时分到多个页面 |
| 筛选器配置 | 日期筛选器必需,额外筛选器限制在 3-5 个 |
| 颜色搭配 | 仅使用 3-4 种公司品牌颜色 |
| 标题/标签 | 使用清晰描述,确保直观易懂 |
| 图表选择 | 按顺序:KPI → 趋势 → 对比 → 明细 |
| 响应速度 | 目标平均加载时间在 2-3 秒内 |
| 成本管理 | 保持每月 BigQuery 扫描数据量在 5TB 以内 |
参考链接
元数据
版本信息
- 当前版本:1.0.0
- 最后更新:2026-01-14
- 兼容平台:Claude, ChatGPT, Gemini
相关技能
标签
#Looker-Studio #BigQuery #仪表板 #数据分析 #数据可视化 #GCP
使用示例
示例 1:创建基础仪表板
-- 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. 用折线图可视化每日趋势
示例 2:高级分析仪表板
-- 为同期群分析准备数据
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;

评论(0)