跳至正文

Tableau + SAP B1分析最佳实践

近期在为一家制造业客户导入“喜乐君敏捷分析方法”和Tableau分析框架,主要内容有三个:

  • 参考《数据可视化分析2.0》一书中的“业务-数据-分析”BDA层次分析方法,为客户的销售、生产、仓储、财务四个模块搭建上下一致、左右统一的业务数据全流程体系
  • 使用Tableau Prep 、SQL构建分类的数据源,并增加关键指标升级为数据服务(data service)
  • 基于上述数据层的数据集、数据关系,构建分主题的可视化仪表板

本文简要介绍项目中使用的方法,帮助类似的客户更好地使用Tableau完成分析转型。

一、基于BDA层次框架搭建完整的分析框架

基于书中介绍的“业务-数据-分析”层次框架,大家企业级的内容体系,根据需要,也可以把数据层进一步区分为物理层和逻辑层(数据关系模型),可以把分析层进一步区分为指标体系和可视化分析主题。

每个模块按照这个层次展开,然后左右相连,构成一个完整的“企业级数据分析地图”,如下所示。

二、Prep和SQL结合搭建数据集——敏捷的数据仓库

企业分析的难点在于数据质量。鉴于SAP B1的数据底层非常完整,很多时候借助于SQL即可完成高质量的数据处理;而在复杂的逻辑面前,敏捷的prep则可以发挥最佳战力。比如如下所示:

--父物料收货
		select '生产收货' "类型"
		, t1."DocNum" "单据号"
		, t1."DocDate" "过账日期"
		, T0."ItemCode" "物料编号"

		, T0."Dscription" "物料描述"

		, T0."Quantity"   "数量"
		, t0."StockPrice"  "物料成本"

		-- , T0."Quantity"*t0."StockPrice"  "行总计"
		--, t0."StockSum"
		, T0."U_beas_belnrid"  "工作令号"
		, T0."U_beas_belposid" "工作令位置"
		, t0."WhsCode"  "仓库"
		from hwk_sh.IGN1 T0
		inner join hwk_sh.OIGN T1 ON T1."DocEntry"=T0."DocEntry"

		where ifnull(T0."U_beas_belnrid",0)<>0
		and  ifnull(T0."U_beas_belposid",0)<>0 
		and  ifnull(T0."U_beas_posid",0)=0
		

如下所示,展示了生产模块数据处理过程(早期版本,包含了部分数据验证过程)。最终,生成了两个数据集。

更常见的操作是,我会使用Prep完成不确定业务的逻辑验证,等我找到了相对最佳路径,然后用SQL固化下来,直接在Desktop中发布为数据源,必要时使用增量刷新。

三、基于Tableau Desktop的敏捷分析能力构建企业级仪表板

在构建数据之后,指标和分析也就开始了。

我会同步构建每个业务主题的指标体系,包括指标名称、指标解释、计算逻辑、适用范围等,而后把关键指标写在数据源中发布。这样,任何人连接这个数据源,都可以直接拖拽适用指标,确保了指标的一致性和准确性。

这里,就不便于展示客户的仪表板了。

喜乐君

Apr 18, 2023


了解 喜乐君 的更多信息

订阅后即可通过电子邮件收到最新文章。