近期为一家客户做Tableau售前展示,对方是我期待已久的物联网企业,因此特别认真地做了简单而实用的互动demo,并且使用了这几天正在学习的集值(集动作)功能。完整的分析给大家,希望增加对集值的了解。

“集值”被称之为自“详细级别表达式”以来最重要的功能,我在使用中也深感它的魅力,因此强烈推荐大家抢先使用,一睹为快。它对于互动的增强是本质性的,而非简单的点缀。欢迎查看本系列博客(译著):

一、数据一览与客户需求

在真实的业务场景中,分析始于问题、始于需求,而非开始于数据。所以千万不要拿到数据着急寻找珍珠,否则往往是越看越纠结。我拿到的数据是仅一分钟内的传感器数据,对方临时生成的数据,明显数据结构并非完美,原表中同时包含了原始数据和二次加工的分析数据。

传感器分析 集值 1

对方想要查看的视图,一是左上角分析字段在60秒的波动情况,二是在每秒1000次(专业术语大概是1000Hz)的数值波动,查看波峰波谷,这里分为原始数据和傅里叶数据两种,每秒可以视为一个系列。客户之前使用Excel做了一个模拟,同时展示三秒的傅里叶数据波动,样图如下:

传感器分析 集值 客户需求.jpg

看上去,这个需求很简单啊,Tableau最入门的折线即可完成,不过前提是数据结构和完整性良好的情况下。都说数据整理要占据80%的时间,这里也逃不过去,数据整理还是需要点时间。

二、数据整理过程

使用Tableau Desktop导入数据之后,Excel中列(第1秒到60秒对应的60列)会被视为度量,而左侧字段(包括原始字段1到原始字段999)的大量数据被视为维度,并统一到一个字段之下。这样的数据存在几个问题:

  • 第一个视图需求是分析某指标在60秒的数据波动,我们需要以时间(秒)为轴,而这需要一个时间字段,它包含0~60。为此,这里我们将60列转置,从而生成一个时间(秒)字段。这也是为什么Tableau总是喜欢tall 的数据,而非wide的数据,所谓的“宽表”是可视化的梦魇,因为它割裂了一个统一数据字段。
    • 转置方法,在数据源按shift多选所有列,右键“转置”。原来的标题即可改为“秒”(我在数据中叫做“第X秒数据”),另一个修改为“数值”即可。
  • 第二个视图需求是一秒内1000次震动的数值波动,这又需要一个维度,包含0~999,用来生成横轴。这里需要把第一列的数据做必要的拆分,获得后面的震动序列编码,我称之为“频率采集点”。如果把长度不同的“X轴傅里叶数据XX”、“X轴原始数据XX”、“Y轴傅里叶数据XXX”后面的编码统一拆分? 介绍两种方法:
    • 使用left/right/mid函数,获得左侧/右侧/中间的字符串长度。根据统一的规律,所有字段都包含“数据”两个字,我们查找它在[字段]中的位置,然后确定裁剪的长度。这个方法符合直觉,但是不够简练。
  • int( right([字段],LEN([字段])-FIND([字段],’数据’)-1))
    // len返回字段长度,find返回“数据”的位置,right返回后面的数值字符
    //int把数字字符改为数值,从而形成连续轴

    • 使用拆分split,我们往往使用拆分和自定义拆分整理数据,拆分不一定是用标点符号分割,我们可以在“自定义拆分”中输入“数据”作为分隔符,然后保留最后一位,之后手动添加int函数将字符转化为数字。

传感器分析 数据拆分

int转换函数还有一个好处,它把自动拆分后的非数字结果(如字符数据)改为了null,这样就无需判断哪些拆分是有效的,哪些是无效的,从而减少了出错的概率。

  • 稍微有点挑战性的是把第一列标题通过多种方式重新分类。我先把前面14行拆分为“分析字段”,而其他包含“原始数据”和“傅里叶数据”的成为“采集字段”,这里我们依然使用上面的拆分函数,只是必要时需要连接上‘数据’。
  • 把原始数据X和傅里叶数据X先合并,使用以下函数:

字段分类

if CONTAINS( [字段] ,’数据’)
THEN TRIM( SPLIT( [字段], “数据”, 1 ) )+’数据’
//此处等价于 LEFT([字段],FIND([字段],’数据’)+1)
ELSE [字段]
END

:Users:wuyupeng:Documents:AA tableau数据分析:Tableau 学习:我的Tableau 手册 博客:我的博客 照片:传感器分析 数据拆分2.jpg

当然,这里不要忘记实用 “创建组”的功能,从而实现进一步的分类,我使用“组”把“分析类字段”进一步分为了X轴、Y轴、Z轴、温度和模拟信号四类,形成了更高一级的分类。

至此,数据整理算是告一段落。我们有了足够的字段来构建视图。数据整理基本要花费总体1/3的时间,好在Tableau对此驾轻就熟;如果数据整理超过了上面的范围,建议直接使用Prep Builder完成。

 

三、数据可视化

所有的过程,都是为了进一步的可视化和业务解读。

这里的图形足够简单,使用折线图即可完成。先看一下我的最终效果,两个简单的折线,右侧是对应的筛选器,二者通过“集值”互动连接,并增加了有助于理解偏差的“工具提示”。

物联网传感器 图谱.jpg

扫码或者点击以下连接,可以到Tableau Public查看效果并下载源文件:

1、如何选择可视化图形

在之前的两篇文章中,我们介绍了如何通过“数据——数据关系——可视化图形”来选择可视化图形,以及如何分析和完成复杂的可视化,想要了解更多点击回顾。

这里要构建折线图,仅需要把横轴坐标字段加入列,数值加入行即可;多个指标的对比用颜色来实现,因此要把指标分类字段拖入颜色,为了避免视图的混杂,通过筛选器突出某个主题分类。第一个视图如下:

屏幕快照 2019-06-30 下午6.10.03

第二个图形原理完全一致,需要注意的是,为了从上图中采集横轴信息(第X秒数据),然后通过“集”来传递到第二个图形,我们要在第二个图形中使用“集”字段。因此,基于“第X秒数据”创建一个集“序列”,然后把它拖入颜色,并改为显示集内成员,结果如下:

屏幕快照 2019-06-30 下午6.14.22.png

2、通过集值构建二者互动

我们把上面的图形加入同一个仪表板,然后通过动作连接二者。逻辑就是从第一个图形中选择点,将对应的横坐标(第X秒数据)通过集“序列”传递给第二个图形,从而更新对应序列的波动曲线。

物联网传感器 3.jpg

当然,进一步的可视化细节是调整必要的标签说明,从而进一步增强可视化分析的直观性,比如我在第二个图形中,通过工具提示显示了当前点与所选序列检测数据平均值的偏差,从而帮助理解偏离的程度。这里使用了一个简单的LOD计算来返回对应序列、对应类别的平均值。

%与平均值偏差

SUM([数值])/avg( {fixed [第X秒数据],[采集类字段]: AVG([数值])} ) -1

 

Tableau的互动功能随着集值和参数动作的引入,几乎提高到了一个新的高度,进一步增强了“数据驱动业务”价值。这个案例足够简单,希望帮助更多的人理解集值的使用。

喜乐君 集值系列

by 喜乐君  Tableau Partner 18615511300

Jun 30, 2019
Jul 1, 2019 revise