最近在为客户进行数据分析项目时,我遇到了一些问题,这促使我深入思考了一些问题。项目中我们使用的并不是Tableau,而是另外一款BI软件。由于计算过程较为复杂,我采用了嵌套的fixed计算来为每行数据打标签。在Tableau中,这种属于常规操作,通常不会遇到问题。然而,这次使用过程中,计算速度缓慢,当然这可能由多方面因素造成,是底层数据的质量和BI软件的性能叠加所致。而我我希望在此基础上,能通过图表间的联动增加交互筛选功能,但软件却因超出最大计算量限制而报错,在厂家的帮助下,也可以通过调整计算资源解决。但速度始终不能让人满意。

客户对公司的数据现状和BI软件的性能有一定的了解,因此对性能的要求并不高,可以忍受图表加载缓慢的情况。毕竟他们已经开始从简单的报表转向数据分析,即使有一些问题,交互性差一点也也并不是不能接受。然而我始终认为,固定不变的报表只能反映最基本的问题,而通过图表的交互,可以更深入地洞察数据,没有交互的分析总感觉缺少了灵性。

而我想了想,如果要提高速度,要么提高服务器的性能,要么就不使用嵌套的fixed计算,转而在数据源层面直接对数据进行标签化处理。如果交给技术部门修改数仓模型,时间上无法保证,失去了敏捷分析的灵活性。敏捷分析的核心在于所见即所得,能够随时提出问题并得到解答。此时,工具的重要性就凸显出来了,工具的限制也成为了分析的上限。工具的性能不足,使得无法回答更高维度的问题。

面对这种情况,我们有几种选择:一是改变解决方式,比如转入数据开发流程,但这会导致分析进度推迟;二是更换工具,但这又会带来成本问题;三是让思维适应工具,干脆放弃。那么,你会如何选择呢?

在现实的工作中,人们的思维或多或少都会受到工具的影响。当工具的能力与我们的思维相匹配时,是最为舒适的状态。但是进入这种稳定状态后,就会难以突破,这是人的本性,不喜欢改变。而当目标或者场景发生变化后,需要做出应对措施时,每个人的选择就会千差万别。比如,面对一个分析场景,EXCEL无法满足复杂计算时,有的人会努力学习各种公式和技巧来解决问题,有的人则会选择更换工具,从其他途径来解决,但是有些人可能会选择放弃。这就是人们在思维层次上的差异。我们更倾向于稳定,不喜欢改变。有时,我们会付出巨大的努力来维持这种稳定,而有时改变却只需要一点点努力。

在我看来,BI是一种更高级的工具。BI代表了一种新的思维方式,一种新的技术实现形式。与之相对的是传统的报表开发。以前,由于工具的限制,数据分析往往等同于报表,技术稍稍进步后,最多也只是增加一些固定的图表作为辅助,也谈不上分析。工具的上限限制了人们的思维,让很多人认为分析就是表格,最多辅以几个图表来增加美观。典型的就是数据大屏,它是一种披着可视化分析外衣的固定报表,除了情绪价值外,对分析几乎没有帮助。所谓的“存在即合理”,本质上是因为它与使用者的思维相匹配。当你的思维还停留在较低层次时,就无法理解更高级的思维方式。要充分发挥BI的作用,必须有与之相匹配的思维模式。

业务人员或分析师的角度来说。在使用BI工具时,就需要进行思维的转变。以Excel为例,人们习惯用通过二维表格进行数据处理和图表制作,这种表格形式更符合人们的思维方式。我们通常也是基于这种表格来收集数据、汇报工作或制作图表。当数据量不大且分析需求相对简单时,Excel无疑是最佳工具,此时你的目标、工具和思维是高度统一的。

然而,当数据量呈几何级数增长,Excel无法应对时,更换工具就成为必然选择。基于大数据分析的BI软件依靠基于行、列的数据存储和计算,这与人的思维方式有很大不同,因此需要使用一维表进行数据存储。

在分析过程中,BI软件通常基于维度和度量进行聚合计算,计算时主要是列与列之间的运算,而不是像Excel那样基于单元格的计算方式。Excel中的表格是有序的,可以通过行列定位单元格,而数据库中存储的数据是无序的,如果像Excel那样定位单元格,系统开销会非常大。因此,BI软件最基本的计算都是通过指定维度和度量的聚合计算,当然更高级别的表计算,也离不开维度。

所以,如果你仍然用Excel的思维方式去理解BI软件,搞不清楚维度与度量,离散与连续这些最基本的概念,就会导致工具与思维的不匹配,痛苦便由此而生。你需要提升自己的思维方式,使其与BI软件相匹配,才能更好地利用BI软件进行数据分析。

从数据开发的角度来看,思维方式的转变同样至关重要。在传统的报表开发中,分析的需求并不突出,主要关注点在于数据的获取和展示。对于技术人员而言,他们的重点在于实现需求和确保系统的稳定性。通常,每个需求对应一张报表,而每张报表背后则是一个SQL查询(可能是数据库表或视图)。在开发过程中,必须确保数据口径和计算方式的一致性,这催生了指标体系的概念。为什么需要指标体系呢?因为在传统的数据开发中,数据仓库中的每张表都是物化的实体表。对于查询来说,必须提前确定维度和度量,因为度量是依赖于维度的。例如,销售额本身没有意义,必须明确是地区的销售额、店铺的销售额,还是按年度、月度或日度计算的销售额。不同的维度组合可能有数百甚至上千种,这就需要将指标规范化为体系,如一级指标、二级指标、衍生指标、原子指标等。此外,还出现了指标平台这类产品,其实质上仍然是报表开发的思路,即所有报表需求都必须对应一个物化的数据表或视图,所有记录都必须是固定的、不可变的。这种模式,通常会导致数仓开发的数据源和BI报表是一一对应的,而非通用数据模型,只能满足固化的需求,没有任何灵活性和扩展性。

所以,传统的报表开发的思路就是穷举式的,将所有可能都囊括进来,就经常会提供图中这种类型的数据源,俗称大宽表,将所有可能的维度和指标都物化为实体表,而很多像echart一样的图表库也只需要这样的数据源提供数据即可。这样的模式,与固化的报表开发相匹配,只要需求固定不变,这种方式也不是不可以。

然而,现实情况是,这种开发模式常常让技术人员疲于奔命,业务人员也叫苦不迭,因为数据分析的需求是不断变化的。本质上,指标是度量的一个子集,是可以为业务提供参考的度量值,度量值必须依赖于维度。在分析过程中,需要通过BI软件根据需求,实时进行数据查询,并通过可视化方式实时反馈。不可能要求业务分析师提前罗列出所有可能性,所以就必须保留足够明细的数据,这正是BI软件开发与传统报表开发的本质区别。

现代BI软件在数据处理方式上与传统报表开发完全不同。BI软件需要尽可能详细的明细数据,分析模型都在BI软件内部构建,例如利用Tableau的关系模型构建分析模型。这与技术人员眼中数仓的表模型有本质区别。指标的定义和计算都在BI的分析模型中完成,根据分析需求,用户可以拖拽对应的维度和度量,依靠BI强大的数据引擎和丰富的展示方式,可以随时满足查询和分析的需求。此时,就只需要定义核心指标,其他根据不同维度和筛选条件衍生出来的指标,就完全可以根据分析的需要,随时自由定义和组合。因此,传统的指标体系在BI系统中显得并不是特别重要。

BI的数据源使用什么样的形式,完全可以单独拿出来进行讲解。有时间,我再写一篇文章进行论述。无论是从分析的角度还是可视化的角度,数据中保留的维度越多分析的角度也就越多,可视化的方案也就越丰富。

总之,面对不同目标,我们需要灵活应对变化,选择合适工具,并匹配相应的思维方式。无论是分析师,还是技术人员如果将目标转向BI,都应该跳出传统的报表开发思维,提升认知,进入更高维度的思维方式,让目标、工具和思维完全匹配。唯有不断学习、适应新工具,建立新思维,才能做好BI,为决策提供有力支撑,推动业务持续向前发展。那些固守旧思维、不愿改变的人,随时都可能被时代淘汰。