1. 快速上手(10 分钟)
- 连接数据:打开 Tableau → 连接 Excel/CSV/数据库 → 选中
Orders
表。 模型选择:
- Relationships(关系):默认、宽松耦合,保留各表粒度。
- Joins(联接):行级拼接(内/左/右/全),易产生重复行。
- Blend(混合):历史产物,尽量少用。
- 画出第一张图:把
Sales
拖到列,Sub-Category
拖到行 → 条形图。 - 上色与排序:把
Profit
放到颜色;点工具栏排序。 - 快速仪表板:新建仪表板 → 拖入工作表 → 添加筛选器(Region、Order Date)。
2. 基础概念(一口气弄明白)
- 维度 / 度量:切片维度、计算度量。
- 离散 / 连续:蓝色=离散(分类/刻度),绿色=连续(轴)。
- 标记卡(Marks):颜色、大小、标签、细节、形状。
- Show Me:图表建议器,别迷信,学会手搓。
3. 常用图表与场景
- 条形图:排行、占比、Top-N。
- 折线图:时间序列、季节性。
- 散点图:相关性(
Sales
vsProfit
)。 - 箱线图:异常值。
- 地图:地区对比、密度热力。
- 甘特/瀑布:进度与构成变化。
经验:图表越简单,洞察越清晰。避免一次性放太多维度。
4. 实战:高层业绩总览仪表板(Superstore)
目标:面向管理层,1 屏回答:卖得如何、利润如何、哪里好/差、应该做什么。
步骤:
- KPI 卡:
SUM(Sales)
、SUM(Profit)
、COUNTD(Order ID)
、Profit Ratio = SUM([Profit])/SUM([Sales])
。 - 趋势:
MONTH(Order Date)
→ 列,Sales
→ 行,添加移动平均(表计算→移动平均→窗口=3)。 - 类别排行:
Sales
vsSub-Category
条形图,颜色映射Profit
。 - 地图:
State
→ 视图,Sales
→ 颜色;双轴叠加Profit
圆点强调亏损州。 交互:
- 筛选器:时间、地区、类别。
- 筛选动作:点击地图筛下方表。
- 高亮动作:鼠标悬停突出目标州。
工具提示(Tooltip):
- 添加
Profit Ratio
,并插入一个Sub-Category
的小型条形 Viz in Tooltip。
- 添加
- 导航:添加按钮在仪表板间跳转(概览 ↔ 明细深钻)。
5. 计算字段(Calcs)
基础:
IF [Profit] < 0 THEN "亏损" ELSE "盈利" END
日期:
DATEDIFF('day',[Order Date],[Ship Date]) // 运输天数
字符串:
UPPER([Region])
聚合 vs 非聚合:
// 正确(聚合对聚合)
SUM([Profit]) / SUM([Sales])
6. 参数(Parameters)
- 用途:动态阈值、Top-N、指标切换、场景模拟。
示例:Top N 选择器
- 建参数
p.TopN
(整数)。 - 集合/计算:
- 建参数
INDEX() <= [p.TopN]
- 排序后在过滤器/颜色中使用。
- 示例:指标切换
CASE [p.Metric]
WHEN 'Sales' THEN SUM([Sales])
WHEN 'Profit' THEN SUM([Profit])
ELSE SUM([Quantity])
END
7. 表计算(Table Calculations)
- 本质:对结果表做二次计算。注意 寻址/分区(Addressing/Partitioning)。
- 常用配方:
// 累计
RUNNING_SUM(SUM([Sales]))
// 同比 YoY
(SUM([Sales]) - LOOKUP(SUM([Sales]), -12)) / LOOKUP(SUM([Sales]), -12)
// 环比 MoM\ n(SUM([Sales]) - LOOKUP(SUM([Sales]), -1)) / LOOKUP(SUM([Sales]), -1)
// 排名
RANK_DENSE(SUM([Sales]))
技巧:右键表计算 → 编辑 → 指定维度,搞清“按什么顺序滚动”。
8. LOD 表达式(Level of Detail)
用来在不同粒度上先聚合再回到当前视图,绕过维度过滤器的影响。
- FIXED:与视图无关,按指定维度聚合。
// 每个客户的总销售额(与视图无关)
{ FIXED [Customer ID] : SUM([Sales]) }
- INCLUDE:在当前视图粒度上增加维度再聚合。
// 先到 产品级,再回到视图
{ INCLUDE [Product Name] : SUM([Sales]) }
- EXCLUDE:从视图粒度移除维度再聚合。
// 忽略子类,计算类别层级的总销售
{ EXCLUDE [Sub-Category] : SUM([Sales]) }
- 经典题:首单日期
{ FIXED [Customer ID] : MIN([Order Date]) }
- 与过滤器关系:维度过滤器在 LOD 之后生效;上下文过滤器在 LOD 之前生效。
9. 地图与空间
- 字段设为地理角色(国家/省/州/邮编/经纬度)。
- 双轴地图:底层填色州界 + 顶层利润气泡;同步轴。
- 密度图:高频点位更亮。
10. 动作与可用性
- 筛选动作:主从联动深钻。
- 高亮动作:点亮同类。
- URL 动作:跳业务系统。
- 集合动作:拖拽即分群,做“选中 vs 其他”。
- 按钮导航:多页故事化表达。
11. 性能与工程实践
- 优先 Extract(提取),必要时增量刷新;减少字段与行数。
- 降低 标记数(Marks),尽量聚合到可读粒度。
- 少用嵌套表计算与过度 LOD;能在源头算就别在前端算。
- 大筛选器设置为上下文过滤器,避免每次全表扫描。
- 使用 Describe、Performance Recording 排查慢点。
12. 发布与协作
- 发布 数据源 与 工作簿 到 Server/Online。
- 设定权限、数据刷新计划、订阅与警报。
- 版本化命名:
proj_dashboard_YYYYMMDD_vX
。
13. 常见坑
- 维度过多导致重复计算与“爆表”的行数。
- 混合数据源的度量默认 聚合方式不同(SUM vs AVG)。
- 时间维度“连续/离散”切换导致轴/粒度变化。
- 地理角色不对 → 地图打不出来。
14. 练习路线(30 天×20 分钟)
- 第 1 周:基本图表 + 仪表板;重做官方示例。
- 第 2 周:表计算 + 参数;做同比/环比 + Top-N 控制。
- 第 3 周:LOD + 地图;实现首单/复购、利润预警地图。
- 第 4 周:性能优化 + 发布;做一次从数据到上线的闭环。
15. 速查表(Cheat Sheet)
- 时间序列同比:
LOOKUP(SUM([Sales]), -12)
- 利润率:
SUM([Profit]) / SUM([Sales])
- 前 N:
INDEX() <= [p.TopN]
- 客单价:
SUM([Sales]) / COUNTD([Order ID])
- 客户 LTV(粗略):
{FIXED [Customer ID]: SUM([Profit])}
16. 实战练习题
- 亏损产品清单:找出
Profit < 0
的Product Name
,按亏损额排序,并给出 Top-10。 - 州别拉力图:各州
Sales
-Profit
双轴图,筛选Category
。 - 复购漏斗:计算每客户首单到二单的平均间隔,按州比较。
完成上述 3 题,你已经具备 80% 的日常 Tableau 战斗力。剩下的 20%,来自具体业务与审美。
实战题 · 详细解法
1) 亏损产品清单(Top-10)
目标:找出 全年总利润 < 0 的产品,并按亏损额从大到小排序取前 10。
计算字段
Profit per Product (LOD)
{ FIXED [Product Name] : SUM([Profit]) }
Is Loss Product
[Profit per Product (LOD)] < 0
Loss Amount
IF [Profit per Product (LOD)] < 0 THEN -[Profit per Product (LOD)] END
做图步骤
- 把
Product Name
放到行,Loss Amount
放到列。 - 添加过滤器:
Is Loss Product = True
。 - 排序:按
Loss Amount
降序。 取 Top-10:
- 方式 A:在
Product Name
维度 → 筛选器 → Top → By Field 选择Loss Amount
的 Top 10。 - 方式 B:保留排序,直接在标记数上显示前 10(或用集合/参数控制)。
- 方式 A:在
- 标记卡:
颜色
使用Loss Amount
连续上色;标签
显示Loss Amount
,格式为货币/千分位。
注意:不要用行级 Profit < 0
当过滤器,那样会把同一产品的盈利订单排掉,导致总利润被误算。用 FIXED LOD 才能锁定“产品总利润”的真实亏损。
2) 州别拉力图(Sales–Profit 双轴 + Category 筛选)
目标:各州展示销售额与利润的拉力对比,便于识别“高销售但低利润/亏损”的州;支持按 Category
过滤。
做图步骤(组合双轴)
State
→ 行。SUM(Sales)
→ 列(标记类型:条形)。- 将
SUM(Profit)
拖到右侧轴,形成 双轴(Dual Axis),右键 同步轴(Synchronize Axis)。 - 把右侧轴的标记类型改为 圆形或折线+圆点,并在
颜色
上用分段/发散色强调亏损(或Profit < 0
的颜色单独指定)。 - 在筛选器加入
Category
(分类),设置为多选并在仪表板上显示。 - 排序:按
SUM(Sales)
或SUM(Profit)
排序,帮助识别头尾州。 - 工具提示(Tooltip):显示
Sales
、Profit
、Profit Ratio = SUM([Profit])/SUM([Sales])
;可加阈值图标(如利润率 < 5% 标红)。
可选美化
- 在
State
的标签上显示Profit
,对负值加“▼”前缀:
IF SUM([Profit]) < 0 THEN "▼ " + STR(ROUND(SUM([Profit]),0)) ELSE STR(ROUND(SUM([Profit]),0)) END
- 加一个“只看亏损州”的布尔参数,控制筛选:
IF [p.OnlyLoss] THEN SUM([Profit]) < 0 ELSE TRUE END
3) 复购漏斗:首单→二单平均间隔(按州)
目标:计算每位客户从首单到第二单的天数,统计到州(State
)层级取平均,用于评估复购速度地域差异。
核心思路(纯 LOD,避免表计算寻址复杂度)
First Order Date(每客户)
{ FIXED [Customer ID] : MIN([Order Date]) }
Second Order Date(每客户)
先找出大于首单日期的最早订单日期:
{ FIXED [Customer ID] :
MIN( IF [Order Date] > { FIXED [Customer ID] : MIN([Order Date]) } THEN [Order Date] END )
}
Days: First→Second
IF ISNULL([Second Order Date(每客户)]) THEN NULL
ELSE DATEDIFF('day', [First Order Date(每客户)], [Second Order Date(每客户)]) END
- (可选)过滤掉没有二单的客户:
NOT ISNULL([Second Order Date(每客户)])
汇总到州
- 视图粒度:
State
→ 行;AVG([Days: First→Second])
→ 列(或标签)。 - 如果一个客户在多个州下单,建议以首单所在州归属。可新增:
First Order State
{ FIXED [Customer ID] : MIN( IF [Order Date] = { FIXED [Customer ID] : MIN([Order Date]) } THEN [State] END ) }
然后用 First Order State
代替 State
进入视图。
可视化建议
- 条形图 + 误差线:条高为
AVG(Days)
,在工具提示显示样本量COUNTD([Customer ID])
。 - 增加筛选器:时间范围(基于
Order Date
)、Category
(如果你认为品类会影响复购)。
质量与性能小贴士
- LOD 会受 上下文过滤器 影响:需先对
Order Date
、Category
等设置为上下文以加速且保证复购计算的口径一致。 - 数据量很大时,考虑将上述 LOD 预计算到数据源(例如在 ETL 中生成首/二单日期)。
新增 · 10 道实战题(含关键计算与做图要点)
默认数据集:Superstore。除特别说明外,粒度与口径均以订单行(Row)为基础,可在仪表板添加时间/地区/品类筛选器。
4) ABC 分类(产品级)
目标:按年度销售额将产品分为 A/B/C(如 A=前 70%,B=中间 20%,C=后 10%),做结构优化。
参数:p.AShare=0.7
,p.BShare=0.2
。
计算:
// 产品总销售
[Sales per Product] = { FIXED [Product Name] : SUM([Sales]) }
// 按产品降序后的累计占比(表计算,寻址:产品)
[Cum Share] = RUNNING_SUM([Sales per Product]) / WINDOW_SUM([Sales per Product])
// 分类
[ABC Class] = IF [Cum Share] <= [p.AShare] THEN "A"
ELSEIF [Cum Share] <= [p.AShare]+[p.BShare] THEN "B" ELSE "C" END
做图:产品条形图(按 [Sales per Product]
降序),颜色映射 [ABC Class]
;再做“类别 × 区域”的树状/矩阵查看分布。
5) 帕累托 80/20(客户级)
目标:检验“少数客户贡献大部分销售”,并找出关键客户清单。
计算:
[Sales per Customer] = { FIXED [Customer ID] : SUM([Sales]) }
// 销售累计占比(按客户降序)
[Sales Cum%] = RUNNING_SUM([Sales per Customer]) / WINDOW_SUM([Sales per Customer])
// 客户累计占比
[Cust Cum%] = RUNNING_COUNTD([Customer ID]) / SIZE()
做图:双轴—左轴客户按销售降序的条形,右轴绘制 [Sales Cum%]
折线;在 80% 处加参考线并高亮对应客户列表。
6) 折扣弹性(品类/子类)
目标:评估平均折扣与利润率的关系,识别“折扣换量不增利”的品类。
计算:
[Avg Discount] = AVG([Discount])
[Profit Ratio] = SUM([Profit]) / SUM([Sales])
做图:Sub-Category
级散点(X=[Avg Discount]
,Y=[Profit Ratio]
,点大小按 Sales),开启趋势线(线性)并显示 R²
;右侧加 Top-N 明细表。
7) 退货率分析(需要引入 Returns 表)
目标:量化并定位高退货率的品类/州/客户。
建模:用 Relationship 将 Orders.[Order ID]
与 Returns.[Order ID]
关联。
计算:
// 订单是否被退货(关系下可引用 Returns 侧的键)
[Is Returned] = { FIXED [Order ID] : COUNT([Order ID (Returns)]) } > 0
[Return Rate] = SUM( INT([Is Returned]) ) / COUNTD([Order ID])
做图:州地图 + 退货率颜色;或 Sub-Category
条形按 [Return Rate]
降序;工具提示展示退货订单数。
8) 出货时效与 SLA 违约
目标:监控下单到发货天数,量化 SLA 超时率 并定位问题渠道/地区。
参数:p.SLA_Days = 2
。
计算:
[Days to Ship] = DATEDIFF('day',[Order Date],[Ship Date])
[SLA Breach] = [Days to Ship] > [p.SLA_Days]
[Breach Rate] = SUM(INT([SLA Breach])) / COUNTD([Order ID])
做图:
- 箱线图:
Ship Mode
×[Days to Ship]
(查看分布与异常)。 - 条形/地图:
State
×[Breach Rate]
,加参考线 p.SLA 目标。
9) 价格带直方图(Unit Price Bins)
目标:理解价格分布与销量,发现合适的价格带。
计算:
// 行级单价,再求平均避免“总额/总量”偏差
[Row Unit Price] = [Sales] / [Quantity]
[Avg Unit Price] = AVG([Row Unit Price])
做图:对 [Row Unit Price]
创建 Bins(如 5 美元一档);绘制直方图(列=Bins,行=SUM(Quantity) 或 COUNT)并加入 Sub-Category
颜色或面板分面。
10) 客户 RFM 分群
目标:基于最近一次消费(R)、购买频次(F)、消费金额(M)将客户打分分群。
参数:p.AsOfDate = TODAY()
或设为 MAX([Order Date])
。
计算:
[Last Order Date] = { FIXED [Customer ID] : MAX([Order Date]) }
[Recency Days] = DATEDIFF('day',[Last Order Date],[p.AsOfDate])
[Freq Orders] = { FIXED [Customer ID] : COUNTD([Order ID]) }
[Monetary Sales] = { FIXED [Customer ID] : SUM([Sales]) }
// 3 档打分:使用百分位表计算(在客户维度上寻址)
[R_Score] = CEILING( (1 - RANK_PERCENTILE([Recency Days])) * 3 )
[F_Score] = CEILING( RANK_PERCENTILE([Freq Orders]) * 3 )
[M_Score] = CEILING( RANK_PERCENTILE([Monetary Sales]) * 3 )
[RFM] = STR([R_Score]) + STR([F_Score]) + STR([M_Score])
做图:R
×F
的热力图,颜色按 M
或客户数;再配 RFM 细分人群明细表。
11) 运费异常与利润侵蚀
目标:识别运费过高导致的利润侵蚀,定位异常州/运输方式。
计算:
[Ship Cost Ratio] = SUM([Shipping Cost]) / SUM([Sales])
做图:State
× [Ship Cost Ratio]
条形/地图,叠加 Profit Ratio
作为颜色或双轴;在 Ship Mode 维度下切片,标注 Top 异常。
12) 利润预警地图(象限)
目标:二元象限划分州:销量高/低 × 利润率高/低,突出“高销低利”。
参数:p.SalesMin
(如 50K)、p.ProfitRatioMin
(如 5%)。
计算:
[Profit Ratio] = SUM([Profit]) / SUM([Sales])
[Quadrant] =
IF SUM([Sales]) >= [p.SalesMin] AND [Profit Ratio] < [p.ProfitRatioMin] THEN "高销低利"
ELSEIF SUM([Sales]) >= [p.SalesMin] AND [Profit Ratio] >= [p.ProfitRatioMin] THEN "高销高利"
ELSEIF SUM([Sales]) < [p.SalesMin] AND [Profit Ratio] < [p.ProfitRatioMin] THEN "低销低利"
ELSE "低销高利" END
做图:州填色地图颜色按 [Quadrant]
;仪表板加“只看高销低利”切换。
13) 利润贡献瀑布图(子类)
目标:分解总利润由各子类带来的增减变化,直观看到拖后腿的子类。
计算(表计算为主,按子类降序寻址):
[Profit by SubCat] = SUM([Profit])
[Running Base] = RUNNING_SUM( LOOKUP([Profit by SubCat], -1) )
[Step Start] = ZN([Running Base])
[Step End] = [Step Start] + [Profit by SubCat]
做图:Gantt(大小= [Profit by SubCat]
,起点=[Step Start]
),颜色按正负;排序按贡献绝对值;总计做参考线。
14) 同期对比 + 目标追踪(时间序列)
目标:月度销售 YoY
对比,并与年度目标增速对齐,构建 KPI 追踪。
参数:p.TargetYoY = 0.12
(年度目标增长 12%)。
计算:
[Sales] // 直接用
[Sales YoY] = LOOKUP(SUM([Sales]), -12)
[YoY %] = ( SUM([Sales]) - [Sales YoY] ) / [Sales YoY]
// 目标线(以去年同月为基准的目标值)
[Target Sales] = [Sales YoY] * (1 + [p.TargetYoY])
做图:月度折线(实际 vs [Target Sales]
双线);次轴显示 [YoY %]
柱状;对低于目标的月份高亮。
15) 首购月 Cohort 留存热力图
目标:以“首购月份”为队列,观察后续各月的复购率。
计算:
[First Order Month] = DATETRUNC('month', { FIXED [Customer ID] : MIN([Order Date]) })
[Order Month] = DATETRUNC('month', [Order Date])
[Month Index] = DATEDIFF('month', [First Order Month], [Order Month])
// 当期是否复购(每客户×月)
[Active Flag] = { FIXED [Customer ID], [Order Month] : COUNTD([Order ID]) } > 0
// 留存率(表计算,分区=First Order Month,寻址=Month Index)
[Retention %] = SUM( INT([Active Flag]) ) / WINDOW_MAX( SUM( INT([Active Flag]) ) )
做图:行=[First Order Month]
,列=[Month Index]
,颜色=[Retention %]
的热力图;加筛选器限定观察窗口。
数据集下载: 链接:https://pan.quark.cn/s/d2d1a3e30d1a 提取码:xnvE