如何在 Kibana 可视化后台中以百分比形式显示数据

2020-06-15

进行数据分析时,要想在数字间进行有效对比,使用百分数是一项不可或缺的重要方法,当所涉及数据在样本量或总值方面表现出巨大差异时,尤为如此。通过百分比,我们可以快速准确地了解在某个维度类型上(例如时间范围、地理区域、产品线等)数据总和发生了多大变化。

按地区绘制的线状图

按地区百分比绘制的线状图

在本篇博文中,我们将会通过几个例子详细讲解如何在 Kibana 中使用 TSVB(时序数据可视化工具)借助常用的可视化(包括饼图、单值指标、表格或时序)计算百分比。

在本篇博文中,我们将会使用 Kibana 中提供的 flights 和 ecommerce 样本数据集。通过使用这些数据,您能学会如何回答下面三个问题:

  • 准时航班的百分比是多少?

  • 每种延迟类型在一段时间内的比率是多少?

  • 总销售额周同比变化多少?

但是,在开始之前,您需要安装 flights 和 ecommerce 样本数据。您既可以在自己的集群(6.5 或更新版本)中安装这些样本数据,也可以 14 天免费试用我们的 Elasticsearch Service

准时航班的百分比是多少?

您的客户是一家航空公司,他们想在仪表板上突出显示一个数字,以展示他们在准点率这个目标方面的表现如何。kibana_sample_data_flights 样本索引中的每个文档都代表一个航班,所以如要计算百分比,您需要用代表“准点航班”的文档数量除以总航班数。

准点航班数除以总航班数

由于要使用这一算法公式,您应该使用 TSVB 中的 Metric 可视化,因为其中包含 Filter ratio 计算方法。Filter ratio 会针对两个文档集中的同一指标进行除法运算,并返回一个数值。使用 TSVB 的唯一要求是索引中有一个时间字段,而 kibana_sample_data_flights 索引中正好有这一字段。

准时百分比

在 7.4 或更新版本中,要想使用 TSVB 完成这一配置,您首先需要选择可视化类型和数据集,然后配置用于显示上面百分比的聚合。

要选择可视化类型和数据集,请:

  1. 前往 TSVB,选择 Metric 选项卡选择 Metric 选项卡

  2. 选择 Panel options 选项卡

  3. Panel options 选项卡
  1. 将 Data timerange mode 设置为 Entire time range,不要设置为仅使用上一个时间间隔。注意:只有 7.4 及之后版本中才有此设置选项。对于之前的版本,您需将日期间隔设置为最大值。

  2. 输入 kibana_sample_data_flights 作为索引。将 time field 设置为 timestamp将 time field 设置为 timestamp

您现在已经选择索引和时间范围,可以配置所显示的数据了。

  1. 返回至 Data 选项卡并使用 Filter Ratio 来计算特定值(例如 FlightDelayType: "No Delay")的百分比。使用 Filter Ratio

  1. 前往 Options 选项卡并选择百分比格式设置工具。

    • 如果默认的小数点后 4 位精度对您来说太过精确,您可以使用自定义格式字符串来减少位数。使用自定义格式字符串

如果要比较多个值,而不仅限于一个值,您还可以使用 Kibana 中的另外两个可视化。如果使用 bucket aggregation 来选择要比较的数值,您可以使用饼状图或表格将每个值转换为百分比。

使用饼状图将每个值转换为百分比

使用表格可视化将每个值转换为百分比

这些可视化针对 FlightDelayType 字段应用 Terms 桶聚合,将每个桶中的数量转换为占总值的百分比并显示出来。在 flights 样本数据中,字段 FlightDelayType 仅有 6 个唯一值,所以将 Terms 的数量设置为 6 或更大时,显示的百分比是准确的。如果数据中有更多的唯一值,您需要启用“Other”桶,以便涵盖所有数据:

启用 Other 桶

每种延迟类型在一段时间内的比率是多少?

这家公司希望在仪表板中并排展示两个可视化:基于时序对比上面的汇总结果。这能够让他们向下钻取至具体时间范围,并同时查看汇总数据和细分数据。

由于航班文档中有时间字段,TSVB 是创建可视化的最得力工具。仍然使用上面的设置,您可以使用 Filter Ratio 来针对每个时间间隔计算“No Delay”(无延迟)航班除以总航班数量的值:

关于准时航班的可视化

要对比多于一项时序数据,您既可创建多个 Filter ratio,也可以使用聚合来选择群组。TSVB 有一个模式可用来展示多个时序,总比例为 100%。

多时序可视化

如要在 TSVB 中配置堆叠式百分比可视化,您首先需要选择正确的数据,然后配置您的聚合。如要选择正确的数据:

  1. 前往 TSVB,选择 Panel options,然后输入 kibana_sample_data_flights 作为索引。

  2. 将 Time field 设置为 timestamp将 time field 设置为 timestamp

如要配置您的聚合:

  1. 返回至 Data 选项卡。

  2. 在 Group by 下面,为 FlightDelayType 选择 Terms

  3. 前往 Options 选项卡。Options 选项卡中需选择的项目

  4. 选择 Data Formatter > Percent

  5. 选择 Stacked > Percent

  6. 选择 stacked-percent
  7. 选择 Split color theme Rainbow

销售额周同比变化多少?

您有一家电商客户,他们将每笔交易存储在 kibana_sample_data_ecommerce 索引中。他们希望通过可视化展示销售额的周同比变化百分比,这一指标对他们的业务至关重要。因为该问题中有一个时间元素,所以您将使用 TSVB 来创建这个可视化。您还可以使用 Timelion 创建周同比图表,但这里不会讲解。

如您上面所看到的,TSVB 使用同一聚合既可创建指标可视化,也可创建时序可视化。和之前的例子(您将 Data timerange mode 设置为了 Entire time range)不同,在这个可视化中,您只需展示最近一天的数据与上周同一天数据的比较结果。如您所见,这两个可视化显示最近一天的销售额下降了 5.2%:

销售额下降

显示下降的可视化

如要创建此可视化,您需要计算每天的总销售额,然后与 7 天前的总额进行对比。最轻松的比较方法是 Serial Difference 聚合,这一聚合会选取每个值,然后从中减去特定时间间隔之前的值。

和前面的例子一样,设置 TSVB,确保选择 kibana_sample_data_ecommerce 索引,并将 Time field 设置为 order_date。同时,还要将间隔准确设置为 1d。TSVB 中的默认间隔会基于整体时间范围而变化,而此次的计算需要将间隔时间设为固定值。

选择数据样本

返回至 Data 选项卡,然后针对字段 taxful_total_price 选择 Sum 聚合。

Sum 聚合

然后,针对 Sum of taxful_total_price 添加一个 Serial Difference 聚合,记得要设为相差 7 个桶,因为您已将时间间隔设置为 1 天。Serial Difference 会从每天的值中减去 7 个桶之前的那天的值,从而得出销售额周同比的总差额。由于 Serial Difference 指标的计算方式,它始终会将左边的 7 天留空,所以您应该选择一个较大的时间范围:

Serial Difference 聚合

最后,您需要通过数学计算将周同比差额转换为百分比。将当前限售额和差额加在一起,然后除以当前销售额:

使用公式计算百分比

所用的 Painless 脚本为 ((params.total + params.diff) / params.total) - 1

结果如上面的可视化所示。为清晰起见,您还可以使用静态值 0 创建一个新的时序,以突出差额为 0 时的基准。

您现在可以在 Time Series 和 Metric 选项卡之间切换以决定哪种展示方式更适合您的用例。

结论

这些只是在 Kibana 中有效计算和使用百分比的几个例子。除了我们在此篇博文中所列举的内容,如果您在处理百分比时希望探索更多计算选项,可以尝试使用 Kibana 中的 Canvas 来同时控制数据的查询和显示方式。


上一篇: 关于美股搜索引擎——Elastic第二篇

下一篇: 升级centos 6.8 服务器的gcc

版权所有 2018-2020

备案号:皖ICP备18025011号-2