Tableau基础 | 如何应对Excel的格式

tableau在V10版本内嵌了一个工具,Data Interpreter,作用是自动去适配一些Excel中的格式。在数据不是特别复杂的情况下,你其实可以通过Data Interpreter 自动处理,但它并不能百分之百解决这些问题。


tableau通过KB发布了这篇文章,总结了常见的不合适的格式,强烈建议大家按照这些建议规整数据。比如,请不要使用合并单元格、居中、字体这些扩展信息。因为这些扩展的信息是Excel私有的,tableau并没有兼容这些格式化的信息,所以这些格式化信息对tableau是无用的,有的时候甚至是阻碍。

如下表的“邮寄方式”就是一种典型的“合并单元格”:

Tableau基础 | 如何应对Excel的格式

那么,开始正题,按照如下顺序聊聊让tableau抓狂的数据格式:

  1. 数据透视表样式数据的优化
  2. 去掉Sub-total
  3. 去掉表格首行的介绍
  4. 将分层的多层标题,转成单行标题
  5. 删除空行
  6. 补充空的字段名字

1. 数据透视表

当数据的结构是参照数据透视表结构,或者叫交叉表(cross-tab format)结构,那么这种表是面向“列”的。也就是说,每一列的列首是妈妈,后别带着一群孩子。比如下表的数据,Math学科名是妈妈,分数(90、50、50)是孩子。我们关注的数据以这样一个方式,变量名被存储位为列标题。

而在tableau中,它则是类似数据库结构一样的,面向“行”存储。

比如下面这个表格,就是所谓的数据透视表样式的,“面向列”的表格


Tableau基础 | 如何应对Excel的格式

注意,面向列的特点在于,三个学科的成绩---math, science,history---是以三列单独存在

回想一下,生活中遇到的各种统计信息吗,是不是大多是这样的?

再来看看tableau中面向行应该是什么样子。

我们遵循这个原则

一般的,我们将具有同一类属性的数据记录在相同的字段

源数据中,math、science、history是三个学科的名字,同属于一件对象,就是“学科”(Subject),所以将这三科的成绩组合在一起,新建一列标题为"Subject",同时,再命名一个列,叫做分数"Score"

修改优化后的结构如下:

Tableau基础 | 如何应对Excel的格式

2. 去掉sub total

我们日常所用的数据,为了便于阅读,往往会在表格底部或者右边做汇总处理(如下图)subtotals 或 grand totals.,但是这些汇总处理在tableau中,其实是无用值,我们需要把它去掉。



Tableau基础 | 如何应对Excel的格式

换句话说,数据中包含了总计、平均、中位数等等聚合

有人说了,我是需要这个总计的啊,不能移除!

别急,正确的做法应该是:

将这一行汇总移出
然后将excel数据连接到tableau
使用tableau内置的汇总计算生成subtotals 或 grand totals

你可以这样理解,读入tableau数据都是最原始的客观记录数据,不需要任何二次计算,因为在tableau中这些二次计算都是最基本、最简单的功能。

修改优化后的结构如下:


Tableau基础 | 如何应对Excel的格式


3. 去掉表格首行的介绍

Excel在邮件中往来,在表格顶端加上描述语言,其实是很有利于阅读的事情。而在tableau当中就不一样了,它只关心数据,不关心数据以外的事情,比如介绍。

比如下表,第1列中,包含了这篇报告的名字和日期,这一块数据就是所谓的introductory text


Tableau基础 | 如何应对Excel的格式

所以在这个案例中,标题和日期信息需要被移除掉,修改优化后的结构如下:

Tableau基础 | 如何应对Excel的格式

如果你一定要看到日期和,报告的名字,tableau中是可以设置标题和文字注释的。

总之,给tableau数据,它只认识结构完整的数据


4. 将分层的多层标题,转成单行标题

一类数据中,包含着更上级的数据。比如下表,1-5的数据都是隶属于California,所以作者在大表的顶端增加了California。


Tableau基础 | 如何应对Excel的格式

一般情况下,tableau需要只有第一行表头,就是是你的excel数据表头

因为,如果你的数据包含了多层表头,分析可能会出现问题。比如你的,报表字段包含了主要分类和次要分类,这种情况下,一定要将双层表头,变成单层表头。

修改方法很简单,你可以创建一个新列,名字就是California。

修改优化后的结构如下:

Tableau基础 | 如何应对Excel的格式


5. 删除空白单元格

上一个案例,我们将双层表格转换成了单层,有时候会遇到没有全部填充的情况,会出现空单元格,这是肯定有误的,如下:

Tableau基础 | 如何应对Excel的格式

* 注意:不能留有空白单元格,需要填充,记住tableau是以行为单位去读取数据的

假如ID 2对应的state没有填充California,它是不会去读取ID 1的state的。

而我们需要的是将这个新列的数据向下填充,保持每行的数据都有这个字段,保持一致。如果是不重要的数据,一定要将它移除。

修改优化后的结构如下:

Tableau基础 | 如何应对Excel的格式

同样,数据中间也不能存在空行,需要移除,如下是错误的:

Tableau基础 | 如何应对Excel的格式


6. 字段行首不能为空

既然state中间不能有空白数据,那么行首的单元格,也就是表头也不能为空。

如下表,第一列(序号)和第二列(Oregon)的首行都为空,

Tableau基础 | 如何应对Excel的格式

其实如果你的行首为空,又或者是有重复字段名,tableau在读入数据的时候会自动将空的字段名补全一个默认的名字,但是你有可能混淆,不方便分辨,所以建议在原始数据excel中,将字段补全。

如下是原始数据,首行并未设置

Tableau基础 | 如何应对Excel的格式

如下是tableau自动补全的字段名,使用Fx依次填充(x=1,2,3,4.....):


Tableau基础 | 如何应对Excel的格式