双击此处添加文字
默认时间新框架
来源: | 作者:佚名 | 发布时间: 2023-11-03 | 152 次浏览 | 分享到:

1.概述
1.1应用场景

       时间对于数据分析来说,是一个必不可少的条件,而时间条件在实际应用中又是非常多场景的,比如,财务数据一般看上月;业务数据一般看当月;电商或生产看板可能是实时看(当日);对于制造业来说,通常是晚上更新数据,今天可以看到截止昨天的数据(昨日)。并且,时间条件还经常影响指标的计算,比如总计、本月累计、本年累计、同比、环比等。

      市面上绝大多数BI系统的实现方法是这样的:有一个预设的系统时间参数,然后根据这个参数来绑定配置每个图表的筛选条件。但是大家也都可以认识到,当报表中的图表对象比较多的时候,非常麻烦,并且,指标涉及到累计、同比环比时,就更加需要设置复杂的参数规则了。这样,一旦需要修改,很容易出现错漏。
      为了从根本上解决这个问题,奥威BI在10多年前就已经提出了一个默认时间设置的解决方案,并成熟应用到今天,得到了许多用户的认可及好评。接下来,我们将通过一个示例来给大家展示一下,如何通过简单的默认时间设置,就可以实现任意时间条件的筛选配置。

 

2. 操作流程

最终效果如下图所示:

在动手做之前,我们先分析一下要展示内容中容易搞错的地方:
(1)当月销售:这个很容易理解,也很容易搞错,我们都知道这个对用户来说,希望看到的是截止到当天的本月累计销售,比如当天是2023-12-20,要展现的就是2023-12-1到2023-12-20的销售汇总数据,而不是无论筛选哪天,都展示一整个月的销售数据汇总。

(2)当月销售环比:这个很容易搞错,对于用户来说,如果当天是2023-12-20,他希望看到的是与截止到上月同一天(即2023-11-20)的当月累计进行对比,而不是与11月整个月进行对比。
(3)当年销售:这个与当月销售是一样的,很容易理解,也很容易搞错。对于用户来说,希望看到的是截止到当天的本年累计销售,比如当天是2023-12-20,要展现的就是2023-1-1到2023-12-20的销售汇总数据。而不是无论筛选哪天,都展示一整年的销售数据汇总

(4)当年销售同比:这个和当月销售环比一样容易搞错,对于用户来说,如果当天是2023-12-20,他希望看到的是与截止到上年同一天(即2022-12-20)的本年累计进行对比,而不是与2022年整年进行对比。
(5)截止上月末库存:库存一般是看截止到某一个时间点的余额,在正常情况下,ERP会提供月末核算来计算截止到月末最后一天的期末余额,所以,我们只要正确显示上月最后一天的库存金额就可以了。但是,如果当天是2023-12-20,如何才能保证系统能正确显示出2023-11-30的库存金额呢?在奥威BI中,有一个基于内存计算的聚合方式:期末。具体怎么用,后面我们会在实操中说明。
       总结一下,其实,我们的系统就是要能很聪明的知道,当天是哪一天,并且根据当天的日期,结合各个图表的时间筛选要求,计算得到正确的结果并展示出来,并且,还允许用户在切换时间条件的情况下,仍然得到正确的结果。
接下来,我们来看到底如何配置。

2.1  第一步:设计图表控件
首先,我们先在报表中增加相应的图表控件,并设计好数据集,分别如下图所示:

  • 当月销售走势

(1)选择折线图:

(2)配置数据集构建器:

  • 当日销售

(1)选择仪表盘分类中的多值KPI图:


(2)配置数据集构建器:

  • 当月销售

(1)选择仪表盘分类中的多值KPI图:

(2)配置数据集构建器:

  • 当年销售

(1)选择仪表盘分类中的多值KPI图:

(2)配置数据集构建器:

  • 截止上月库存

(1)选择饼图:

(2)配置数据集构建器:

 

 

2.2  第二步:配置默认时间设置
接下来,我们来配置每个图表控件的默认时间设置:
操作方式为,选择某个图表控件后,在右侧的属性面板,选择【图表】,配置相关的【时间设置】属性即可。

  • 当月销售走势

【时间月】【按月】即代表按当前月来筛选显示数据。

  • 当日销售

【时间天】【按今日】即代表按当天来筛选显示数据。

  • 当月销售

【时间月】【按月】即代表按当前月来筛选显示数据。

  • 当年销售

【时间年】【按年】即代表按当年来筛选显示数据。

  • 截止上月库存

【时间月】【按上月】即代表按上月来筛选显示数据。


添加公共筛选控件并设置默认时间


默认选中日期选择【按今日】,则前面所有图表相关的时间设置都是基于该日期进行偏移,

比如今天是2023-12-22,
这里选择【按今日】,图表时间设置选择【时间天】【按今日】,图表则默认展示2023-12-22的数据,

这里选择【按上日】,图表时间设置选择【时间天】【按今日】,图表则默认展示2023-12-21的数据,

这里选择【按上日】,图表时间设置选择【时间天】【按上日】,图表则默认展示2023-12-20的数据,

2.3  第三步:验证数据
        接下来,我们就来验证一下数据是否按照我们的期望正确显示出来了。那到底要如何验证呢?验证数据要从两个方面来验证:

2.3.1第一个方面,验证各个图表控件数据集的时间筛选条件是否正确

(1)首先,从浏览状态下打开报表。因为默认时间只在浏览状态时生效。这里一定要注意一下,到底什么才是浏览状态。很多朋友会认为,在设计报表时,右上角有一个浏览的按钮,就是进入到浏览状态,但事实上那只是一个UI预览状态,并不是真正的浏览状态,下面这几种进入方式才是真正的浏览状态:

① 回到新建报表的界面,鼠标悬浮报表右上角,选择打开浏览页是进入浏览状态:

② 从菜单浏览进入打开的报表,则一定是进入浏览状态,但前提是报表已经通过菜单发布功能发布出来了。

③ 设计报表状态下预览报表也是可以快速切换到真正的浏览状态的,这里讲一个小小的技巧:将浏览器地址栏中的URL地址中,有一串【&fdesign=true】的文字,在【true】后面加一个1,即改为【&fdesign=true1】,然后再回车重新访问一下即可从设计状态改为浏览状态。

(2)在浏览状态下,我们可以通过每个图表控件的工具栏中的【数据集】图标看到构建器中的筛选条件是否正常。以下示例系统时间为2023年12月22日


2.3.2第二个方面,验证各个图表控件最终展示的数据是否正确

        在上述第2.3.1条描述下的验证正确之后,还需要验证最终显示的数据是否正确。因为里面许多数据都是通过内存计算得到的,所以,我们还需要通过手工查询计算的方式去核验,但这样工作量稍微有些大,我们其实是有一个比较便捷的方式来进行核验的。
(1)先将报表另存一份,作为数据验证用。

【温馨提示】这里一定要注意另存,不要直接在原报表上修改,以免出现不可预期的情况。
(2)将图表控件更换为表格,这样更便于进行数据核对,具体操作方法如下图所示:

3.  数据验证问题分析及解决方案
       
在核验过程中,我们发现了一个重大的错误,那就是当月、当年和截止上月库存的数据,得到的结果并不是我们真正想要的本月累计、本年累计及上月期末库存数据。为什么会出现这种情况呢?原来,问题出在这几个图表控件,采取了不正确的聚合方式及默认时间设置。
之前当月销售的配置情况:
我们构建当月销售的数据集时,第一个汇总列【销额】的聚合是使用的默认聚合方式【汇总】,而图表控件的默认时间设置为按月,在这种组合的情况下,我们系统的取数规则为:根据当前日期,计算所在月份,然后把当前月份销售收入进行汇总,这样计算的结果,不论当前日期是2023年12月22日,还是修改为2023年12月15日,得到的结果都是将2023年12月份整个的销售收入进行汇总,而且,上月的销售收入也是计算2023年11月份整个的销售收入汇总。所以,这样展示出来的结果肯定不是我们真正想要的。
        那正确的方式应该是怎么配置呢?我们应该将第一个汇总列【销额】的聚合改为【本月累计】,而且图表控件的默认时间设置改为按今日。在这种组合的情况下,我们系统的取数规则为:根据当前日期(本例中为2023年12月22日),计算所在月份的月初即2023年12月1号到12月22号的销售收入汇总,上月的销售收入是计算2023年11月1号到11月22号的销售收入汇总;而当筛选到2023年12月15日时,系统会计算所在月份即2023年12月1号到12月15号的销售收入汇总,并且,上月的销售收入也是计算2023年11月1号到11月15号的销售收入汇总,这样展示出来的结果才是我们真正想要的。

所以,按日-本月累计和按月-汇总得到的结果是不一样的,多数情况下,使用前一种方案来设置才是我们想要的结果。


而当年销售的问题与当月销售的问题是同样的原因。

我们构建当年销售的数据集时,第一个汇总列【销额】的聚合是使用的默认聚合方式【汇总】,而图表控件的默认时间设置为按年,在这种组合的情况下,我们系统的取数规则为:根据当前日期,计算所在年份,然后把当年销售收入进行汇总,这样计算的结果,不论当前日期是2023年12月22日,还是修改为2023年12月15日,得到的结果都是将2023年整年的销售收入进行汇总,而且,上年的销售收入也是计算2022年整年的销售收入汇总。所以,这样展示出来的结果肯定不是我们真正想要的。
那正确的方式应该是怎么配置呢?我们应该将第一个汇总列【销额】的聚合改为【本年累计】,而且图表控件的默认时间设置改为按今日。在这种组合的情况下,我们系统的取数规则为:根据当前日期(本例中为2023年12月22日),计算所在年份的年初即2023年1月1号到2023年12月22号的销售收入汇总,上年的销售收入是计算2022年1月1号到2022年12月22号的销售收入汇总;而当修改为2023年12月15号时,系统会计算所在年份年初即2023年1月1号到2023年12月15号的销售收入汇总,并且,上年的销售收入也是计算2022年1月1号到2022年12月15号的销售收入汇总,这样展示出来的结果才是我们真正想要的。

 所以,按日-本年累计和按年-汇总得到的结果是不一样的,多数情况下,使用前一种方案来设置才是我们想要的结果。


截止上月库存

我们构建截止上月的数据集时,第一个汇总列【销额】的聚合是使用的默认聚合方式【汇总】,而图表控件的默认时间设置为按上月,在这种组合的情况下,我们系统的取数规则为:根据当前日期,计算所在月份,然后把上月的库存金额进行汇总,这样展示出来的上月库存肯定是不对的。

在正常情况下,ERP会提供月末核算来计算截止到月末最后一天的期末余额,所以,我们只要正确显示上月最后一天的库存金额就可以了,我们应该将第一个汇总列【销额】的聚合改为【期末】,图表控件的默认时间设置还是按原本的上月。在这种组合的情况下,我们系统的取数规则为:根据当前日期(本例中为2023年12月22日),展示2023年11月最后一天的库存金额,这样的数据才是真正的截止上月库存。

经过修正之后,正确的报表结果显示为:

4.正确设置时间列
        奥威BI的时间维度是系统预设的,所以,要正确使用默认时间功能,首先要正确设置好时间列。系统在构建分析模型(数据源视图)时,会自动定位事实表的某个日期类型的字段,并将其设置为时间列。但在视图的表较多,或者同一个表中有多个日期类型的字段的情况下,仍然需要手工指定才更精准。