日志分析图表:同比环比场景和TreeMap-阿里云开发者社区

开发者社区> 阿里云存储服务> 正文

日志分析图表:同比环比场景和TreeMap

简介: 一. 同比环比场景应用 同比环比是日志分析中十分常见的场景,日志服务于7月推出同比环比函数,我们可以利用其强大的分析能力,配合日志分析图表中的同比环比图以及折线图和柱状图进行非常直观清晰的展示。 同比环比函数 同比函数用于把当前区间的计算结果和之前一个指定区间的结果进行比较。

一. 同比环比场景应用

同比环比是日志分析中十分常见的场景,日志服务于7月推出同比环比函数,我们可以利用其强大的分析能力,配合日志分析图表中的同比环比图以及折线图和柱状图进行非常直观清晰的展示。

同比环比函数

同比函数用于把当前区间的计算结果和之前一个指定区间的结果进行比较。

  • 函数语法:
compare(value, time_window)
  • value:double或long类型数据
  • time_window:数值类型,单位为秒

比较当前窗口计算出来的value值和time_window计算出来的结果进行比较,返回值为数组类型,分别是[当前值,time_window之前的值,当前相对于之前的增长比例。]

  • 使用样例:
* | select compare( pv , 86400) from (select count(1) as pv from log)

更多可以参考同比和环比函数

场景1:最近1小时PV日同比分析

Step1:

我们知道,日志服务提供的分析语法可以通过SQL的方式对某一时间段内的数据进行统计,如最近1小时的PV,我们把这个定义为一个**窗口1**:
* | select count(1) as pv from log

Step2:

为窗口添加同比信息,这里以日同比为例,获取昨日(以秒为单位即86400)同一个小时窗口的数据信息,即**窗口2**,优化查询语句为:
* | select compare(pv , 86400) from
    (
        select count(1) as pv from log
    )

这里会得到一个数组[894, 897, 0.99665551839],即为[窗口1数据, 窗口2数据,窗口1/窗口2]

Step3:

将获取到的数组进行整合,分别提出为3列进行查看,优化查询语句为:
* | select
    diff[1] as "今天",
    diff[2] as "昨天",
    diff[1]-diff[2] as "比例" from
    (
        select compare(pv , 86400) as diff
        from (
            select count(1)  as pv from log
        )
    )

undefined

从结果中可以看到今天、昨天和比例三组值,从而可以得到结论为同比少了3次PV,对进行属性配置然后画图可得:

  • 图表类型:同比环比图
  • 显示值:今天
  • 对比值:比例
  • 趋势比较阈值:0(diff[1]-diff[2]获取差值和0进行对比,增加和减少不同情况展示)

undefined

场景2:最近1天PV日每小时日环比增长分析

Step1:

构建最近1天PV变化根据小时变化趋势查询语句,时间范围选取**今天**:
* | select
    date_format(date_trunc('hour', __time__), '%H:%i') as time,
    COUNT(1) as pv
    group by time
    order by time

Step2:

为窗口添加同比信息,优化查询语句为:
* | select
    time,
    compare(pv , 86400) as diff
    from (
        select
            date_format(date_trunc('hour', __time__), '%H:%i') as time,
            COUNT(1) as pv from log
            group by time
            order by time
    )
    group by time

Step3:

将diff数组提取两个窗口的计算差值:
* | select
    time,
    diff[1] as "今天",
    diff[2] as "昨天"
    from (
        select
        time,
        compare(pv , 86400) as diff
        from (
            select
            date_format(date_trunc('hour', __time__), '%H:%i') as time,
            COUNT(1) as pv from log
            group by time
        )
        group by time
    )
    order by time

从结果中可以看到时间、今天和昨天三组值,对进行属性配置然后画图可得:

  • 图表类型:线图
  • X轴:time
  • 左Y轴:今天、昨天

undefined

二. TreeMap(矩形树图)

矩形树图,即矩形式树状结构图(Treemap),用矩形面积表示数据的大小。各个小矩形的面积越大,表示占比越大。

和柱状图不一样的是,矩形树图更适合展示更多分类的信息(柱状图不建议超过10种分类信息)

场景:查看访问分布前30的来源ip地址

* | select remote_addr, count(1) as c group by remote_addr order by c limit 30
  • 图表类型:矩形树图
  • 分类:remote_addr
  • 数值列:c

undefined

结语

如果您有需要支持的图表类型也欢迎联系我们,期待您的意见和建议


image

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

官方博客
链接