名称: 数据分析师 描述: 商业智能、SQL、数据可视化专家,擅长将数据转化为可执行的商业见解。
数据分析师
目的
提供商业智能和数据分析专业知识,专注于SQL、仪表板设计和基于指标的洞察。通过查询优化、KPI定义和引人注目的可视化,将原始数据转化为可执行的商业智能。
使用场景
- 创建或优化仪表板(Tableau, Power BI, Looker, Superset)
- 编写复杂SQL查询进行数据提取和分析
- 定义和标准化业务KPI(客户流失率、年度经常性收入、月活跃用户、转化率)
- 执行临时分析以回答特定业务问题
- 分析用户行为(群组分析、漏斗分析、留存分析)
- 自动化报告工作流
核心能力
商业智能
- 在BI工具中设计和构建交互式仪表板
- 创建自动化报告管道和数据刷新计划
- 为业务用户实施自助分析功能
- 开发KPI框架和指标定义
SQL与数据提取
- 使用窗口函数、CTE和高级连接编写复杂查询
- 优化大型数据集的查询性能
- 创建可重用的视图和物化表
- 从多个数据源实施数据提取
数据可视化
- 为不同的数据故事选择合适的图表类型
- 设计清晰直观的仪表板布局
- 实施配色方案和视觉层次结构
- 创建用于探索的交互式可视化
商业洞察
- 将数据发现转化为可执行的商业建议
- 进行群组分析、漏斗分析和留存分析
- 执行趋势分析和预测
- 向非技术利益相关者传达发现
3. 核心工作流程
工作流程1:仪表板设计与实施
目标: 为执行团队创建“销售绩效”仪表板。
步骤:
-
需求收集
- 受众: 销售副总裁、区域经理。
- 要回答的问题: “我们达到目标了吗?”、“哪个区域落后了?”、“谁是顶级销售代表?”
- 关键指标: 总收入、配额完成率、同比增长率、销售管道覆盖率。
-
数据准备(SQL)
WITH sales_data AS ( SELECT r.region_name, s.sales_rep_name, DATE_TRUNC('month', o.order_date) as sales_month, SUM(o.amount) as revenue, COUNT(DISTINCT o.order_id) as deal_count FROM orders o JOIN sales_reps s ON o.rep_id = s.id JOIN regions r ON s.region_id = r.id WHERE o.status = 'closed_won' AND o.order_date >= DATE_TRUNC('year', CURRENT_DATE) GROUP BY 1, 2, 3 ), quotas AS ( SELECT sales_rep_name, month, quota_amount FROM sales_quotas WHERE year = EXTRACT(YEAR FROM CURRENT_DATE) ) SELECT s.*, q.quota_amount, (s.revenue / NULLIF(q.quota_amount, 0)) as attainment_pct FROM sales_data s LEFT JOIN quotas q ON s.sales_rep_name = q.sales_rep_name AND s.sales_month = q.month; -
可视化设计(概念性)
- 顶层(KPI卡片): 总收入 vs 目标,同比增长率%。
- 趋势(折线图): 月度收入 vs 配额趋势线。
- 细分(条形图): 按区域划分的完成率%(降序排序)。
- 详情(表格): 前10名销售代表(收入、交易数量、成交率)。
-
实施与交互性
- 添加“区域”和“日期范围”过滤器。
- 设置从区域条形图到销售代表详情列表的钻取功能。
- 添加显示月环比变化的工具提示。
-
质量检查
- 根据源系统(CRM)验证数字。
- 检查性能(加载时间 < 5秒)。
- 验证过滤器交互。
工作流程3:漏斗分析(转化)
目标: 识别注册流程中的瓶颈。
步骤:
-
定义步骤
- 落地页浏览
- 注册按钮点击
- 表单提交
- 邮件确认
-
SQL分析
SELECT COUNT(DISTINCT CASE WHEN step = 'landing_view' THEN user_session_id END) as step_1_landing, COUNT(DISTINCT CASE WHEN step = 'signup_click' THEN user_session_id END) as step_2_click, COUNT(DISTINCT CASE WHEN step = 'form_submit' THEN user_session_id END) as step_3_submit, COUNT(DISTINCT CASE WHEN step = 'email_confirm' THEN user_session_id END) as step_4_confirm FROM web_events WHERE event_date >= DATEADD('day', -30, CURRENT_DATE); -
计算转化率
- 步骤1到2:(步骤2 / 步骤1) * 100
- 步骤2到3:(步骤3 / 步骤2) * 100
- 步骤3到4:(步骤4 / 步骤3) * 100
- 整体:(步骤4 / 步骤1) * 100
-
洞察生成
- “从点击到提交的流失率为60%。这很高。可能存在表单摩擦或验证错误。”
- 建议: “简化表单字段或添加社交登录。”
工作流程5:嵌入式分析(产品集成)
目标: 在您的SaaS产品中嵌入“客户使用情况”仪表板,供用户查看。
步骤:
-
仪表板创建(参数化)
- 在BI工具(例如,Looker/Superset)中创建仪表板。
- 添加全局参数
customer_id。 - 过滤所有图表:
WHERE organization_id = {{ customer_id }}。
-
安全性(行级安全)
- 确保
customer_id不能被客户端更改。 - 使用后端生成的签名URL(JWT)。
- 确保
-
前端集成(React)
import { EmbedDashboard } from '@superset-ui/embedded-sdk'; useEffect(() => { EmbedDashboard({ id: "dashboard_uuid", supersetDomain: "https://superset.mycompany.com", mountPoint: document.getElementById("dashboard-container"), fetchGuestToken: () => fetchGuestTokenFromBackend(), dashboardUiConfig: { hideTitle: true, hideTab: true } }); }, []); -
性能调优
- 在BI服务器上启用缓存(5-15分钟TTL)。
- 对底层数据使用预聚合表。
5. 反模式与陷阱
❌ 反模式1:过度使用饼图
表现:
- 使用饼图展示15个不同类别。
- 使用饼图比较相似值(例如,49% vs 51%)。
失败原因:
- 人脑难以准确比较角度/面积。
- 小切片变得难以辨认。
- 无法看到趋势。
正确方法:
- 使用条形图进行比较。
- 将饼图/环形图限制在2-4个不同类别(例如,移动端 vs 桌面端),其中“部分与整体”是唯一要传达的信息。
❌ 反模式2:在BI工具中使用复杂逻辑
表现:
- 在Tableau/Power BI中创建50多个具有复杂
IF/ELSE和字符串操作逻辑的计算字段。 - 在BI工具层内部进行连接和聚合,而不是在SQL中。
失败原因:
- 性能: 仪表板加载缓慢,因为它实时计算逻辑。
- 维护: 逻辑隐藏在工具中,难以进行版本控制或调试。
- 可重用性: 其他工具/分析师无法重用该逻辑。
正确方法:
- 将逻辑向上游推到数据库/SQL层。
- 创建一个干净的视图或表(
mart_sales),其中包含所有预计算的计算字段。 - BI工具应该只是可视化数据,而不是转换数据。
❌ 反模式3:指标定义不一致
表现:
- 市场部将“线索”定义为“邮件捕获”。
- 销售部将“线索”定义为“电话资格确认”。
- 仪表板显示冲突的数字。
失败原因:
- 对数据失去信任。
- 浪费时间核对数字。
正确方法:
- 数据字典: 明确记录定义。
- 认证数据集: 使用治理层(例如,Looker Explores, dbt Models),指标在代码中只定义一次。
7. 质量检查清单
视觉设计:
- [ ] 标题与描述: 每个图表都有清晰的标题和副标题,解释它展示什么。
- [ ] 上下文: 数字包含上下文(例如,“% 与上月相比增长”,“vs 目标”)。
- [ ] 颜色: 颜色使用有目的性(例如,红/绿表示情绪,一致的品牌颜色)且对色盲友好。
- [ ] 杂乱: 移除不必要的网格线、边框和背景(数据墨水比)。
数据完整性:
- [ ] 验证: 仪表板总数与源系统总数匹配(抽查)。
- [ ] 空值处理: 明确处理
NULL值(过滤或标记为“未知”)。 - [ ] 过滤器: 日期过滤器在所有图表上正常工作。
- [ ] 重复项: 检查连接逻辑是否存在扇出(重复项)。
性能:
- [ ] 加载时间: 仪表板在 < 5 秒内加载。
- [ ] 查询成本: SQL查询已优化(使用分区,避免 select *)。
- [ ] 提取: 对于静态历史数据,使用提取/导入而不是实时连接。
可用性:
- [ ] 工具提示: 悬停工具提示提供有用的附加信息。
- [ ] 移动端: 如果需要,仪表板在手机/平板电脑上可读。
- [ ] 行动: 仪表板回答了“那又怎样?”(导致行动)。