如何在Tableau中按周计算表1与表2的记录数比值并制作图表?
在Tableau中按周计算两张表记录数的比值
刚好处理过类似的需求,给你一步步拆解怎么实现这个按周展示的比值图表:
步骤1:统一周维度的计算
首先得把两张表的日期都转换成相同规则的“周”维度,这样才能对齐计算。
- 给表1创建计算字段
表1_周:
(小提示:Tableau默认周起始是周日,要是需要周一作为起始,去「文件>工作簿设置>区域设置」里调整就行)DATE_TRUNC('week', [created_at]) - 给表2创建计算字段
表2_周:DATE_TRUNC('week', [post_date])
步骤2:统计每周各自的记录数
接下来要分别算出两张表每周的总记录数,这里用LOD表达式最方便,能跨视图固定按周统计:
- 创建
表1每周记录数计算字段:
这里{FIXED [表1_周]: COUNT([表1.ID])}COUNT([表1.ID])是统计表1每周的行数,要是ID可能为空,换成COUNT(1)更稳妥。 - 同理创建
表2每周记录数:{FIXED [表2_周]: COUNT([表2.ID])}
步骤3:计算比值(避免除以0的坑)
直接用两个记录数字段相除就行,但记得加个判断防止除以0报错:
创建周记录数比值计算字段:
IF [表2每周记录数] = 0 THEN NULL ELSE [表1每周记录数] / [表2每周记录数] END
要是业务上需要把无数据的情况显示为0,把NULL改成0就行。
步骤4:搭建可视化图表
- 把
表1_周(或者表2_周,因为已经按周对齐了)拖到列功能区,选「离散」的日期格式,这样会显示每周的起始日期; - 把
周记录数比值拖到行功能区,选折线图或柱状图都可以; - 最后可以加个标签显示具体比值,或者添加参考线看整体趋势,按需调整就行。
额外提示:处理无关联的两张表
要是你的两张表在数据源里没做关联,用数据混合就能解决:
- 把表1设为主数据源,把
表1_周设为链接字段; - 添加表2作为次要数据源,把
表2_周和主数据源的表1_周做链接; - 这样Tableau会自动按周对齐两张表的数据,不用额外做表关联。
内容的提问来源于stack exchange,提问作者Omnia Mohamed
相关产品推荐
相关产品推荐

