DLA新函数发布:事件路径分析

简介: 概述业务系统常常会产生大量的事件日志和数据,记录各种事件发生的相关信息,一条事件日志或者数据通常包含如事件ID,事件名称,时间点等。针对该类事件日志或者数据,DLA新提供了事件路径分析的聚合函数,主要支持按照事件时间点、时间戳得到事件顺序发生的时间序列,某类或者多类、某个或者多个事件发生的时间间隔序列等等。

概述

业务系统常常会产生大量的事件日志和数据,记录各种事件发生的相关信息,一条事件日志或者数据通常包含如事件ID,事件名称,时间点等。针对该类事件日志或者数据,DLA新提供了事件路径分析的聚合函数,主要支持按照事件时间点、时间戳得到事件顺序发生的时间序列,某类或者多类、某个或者多个事件发生的时间间隔序列等等。

数据模型

以下举例说明这类事件数据的数据模型,后面函数示例也以该示例数据为例。数据包含
user_id,event_time,event_id,event_name,event_attr,event_date等6个字段,本例中每个字段间用|分隔,该类数据或者日志可以存储在多种数据源中,比如对象存储、数据库、KV等(可以访问:https://zhuanlan.zhihu.com/data-lake-analytics , 查看更多DLA的云上数据能力、场景和使用方法介绍)。

4490015|1483266703322|10002|登陆|{}|2017-01-01
4490015|1483220795802|10005|收藏商品|{}|2017-01-01
4490022|1483233554546|10004|浏览商品|{"brand": "Apple", "price": 3500}|2017-01-01
4490022|1483279486394|10002|登陆|{}|2017-01-01
4490022|1483220124362|10002|登陆|{}|2017-01-01
4490022|1483233099062|10002|登陆|{}|2017-01-01
4490022|1483267998231|10010|退订商品|{}|2017-01-01
4490029|1483222204303|10007|生成订单|{"price_all": 4500}|2017-01-01
4490029|1483240004108|10004|浏览商品|{"brand": "LianX", "price": 7500}|2017-01-01
4490029|1483254745351|10006|加入购物车|{}|2017-01-01

本例,假设上面数据以sample.txt文本存储在阿里云对象存储OSS中,路径为:

oss://your_test_data_bucket/event_sample_data/sample.txt

则建schema、建表:

CREATE DATABASE `basic_test`
WITH DBPROPERTIES (
    catalog = 'oss',
    location = 'oss://your_test_data_bucket/'
)
COMMENT '';


CREATE EXTERNAL TABLE IF NOT EXISTS `basic_test`.`event_test` (
    `user_id` bigint COMMENT '',
    `event_time` bigint COMMENT '',
    `event_id` int COMMENT '',
    `event_name` varchar COMMENT '',
    `event_attr` varchar COMMENT '',
    `event_date` date COMMENT ''
)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\t'
STORED AS `TEXTFILE`
LOCATION 'oss://your_test_data_bucket/event_sample_data/'
TBLPROPERTIES (
    'auto.create.location' = 'true'
);

函数说明

1. event_sequence

说明:输出事件发生的时间点序列数组。

event_sequence(
  boolean desc,     -- 是否按照时间从大到小排列(可选,默认false,按照从小到大)
  bigint limit,     -- 输出的时间点序列数组的大小(可选,默认100,最大1000)
  bigint timeInMS   -- 事件发生的时间点、时间戳(必选,时间戳的long型,到毫秒)
)--> array[bigint] 

例如:

SELECT event_name, event_sequence(event_time) AS a 
FROM `basic_test`.`event_test`
GROUP BY 1 
ORDER BY 1;

-->

+-----------------+--------------------------------------------------------------+
| event_name      | a                                                            |
+-----------------+--------------------------------------------------------------+
| 加入购物车      | [1483254745351]                                              |
| 收藏商品        | [1483220795802]                                              |
| 浏览商品        | [1483233554546, 1483240004108]                               |
| 生成订单        | [1483222204303]                                              |
| 登陆            | [1483220124362, 1483233099062, 1483266703322, 1483279486394] |
| 退订商品        | [1483267998231]                                              |
+-----------------+--------------------------------------------------------------+


SELECT event_name, event_sequence(true, 3, event_time) AS a 
FROM `basic_test`.`event_test`
GROUP BY 1 
ORDER BY 1;

-->

+-----------------+-----------------------------------------------+
| event_name      | a                                             |
+-----------------+-----------------------------------------------+
| 加入购物车      | [1483254745351]                               |
| 收藏商品        | [1483220795802]                               |
| 浏览商品        | [1483240004108, 1483233554546]                |
| 生成订单        | [1483222204303]                               |
| 登陆            | [1483279486394, 1483266703322, 1483233099062] |
| 退订商品        | [1483267998231]                               |
+-----------------+-----------------------------------------------+

2. event_interval

说明:输出事件发生的时间点间隔序列数组。如果事件只发生一次,则无间隔值,对应数组输出空。

event_interval(
  boolean desc,         -- 是否按照时间从大到小排列(可选,默认false,按照从小到大)
  bigint limit,         -- 输出的时间点间隔序列数组的大小(可选,默认100,最大1000)
  bigint timeInMS,      -- 事件发生的时间点、时间戳(必选,时间戳的long型,到毫秒)
  varchar timeZoneKey,  -- 指定的时区名称(可选,默认为系统(DLA服务所在region)当前时区)
  varchar timeUnit      -- 要显示的时间点间隔的时间度量单位(*)
)--> array[bigint]
  
  
* 其中,时间度量单位目前支持:
 YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND

例如:

SELECT event_name,
       event_interval(event_time, 'second') as a
FROM `basic_test`.`event_test`
GROUP BY 1
ORDER BY 1;

-->

+-----------------+-----------------------+
| event_name      | a                     |
+-----------------+-----------------------+
| 加入购物车      | []                    |
| 收藏商品        | []                    |
| 浏览商品        | [6449]                |
| 生成订单        | []                    |
| 登陆            | [12974, 33604, 12783] |
| 退订商品        | []                    |
+-----------------+-----------------------+



SELECT event_name,
       event_interval(true, 3, event_time, current_timezone(), 'millisecond') as a
FROM `basic_test`.`event_test`
GROUP BY 1
ORDER BY 1;

-->

+-----------------+-----------------------------------+
| event_name      | a                                 |
+-----------------+-----------------------------------+
| 加入购物车      | []                                |
| 收藏商品        | []                                |
| 浏览商品        | [-6449562]                        |
| 生成订单        | []                                |
| 登陆            | [-12783072, -33604260, -12974700] |
| 退订商品        | []                                |
+-----------------+-----------------------------------+



SELECT event_name,
       event_interval(event_time, 'UTC', 'day') as a
FROM `basic_test`.`event_test`
GROUP BY 1
ORDER BY 1;

-->

+-----------------+-----------+
| event_name      | a         |
+-----------------+-----------+
| 加入购物车      | []        |
| 收藏商品        | []        |
| 浏览商品        | [0]       |
| 生成订单        | []        |
| 登陆            | [0, 0, 0] |
| 退订商品        | []        |
+-----------------+-----------+

Data Lake Analytics首购和流量包优惠

首购用户1元10TB,流量包阶梯折扣优惠:https://et.aliyun.com/bdad/datalake
产品详情:https://www.aliyun.com/product/datalakeanalytics
云栖社区:https://yq.aliyun.com/teams/396
知乎社区:https://zhuanlan.zhihu.com/data-lake-analytics

相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
5月前
|
小程序 安全 搜索推荐
家政管理系统源码,家政保洁到家服务平台源码,家政上门小程序源码
这是一款功能完备的本地生活家政服务系统源码,涵盖保洁、月嫂、维修、管道疏通、安装等上门服务。支持客户/服务人员管理、智能调度、在线支付、订单跟踪及评价反馈,含小程序端,助创业者快速搭建自营家政平台。
279 0
|
6月前
|
安全 前端开发 JavaScript
钓鱼新变种:攻击者借Cloudflare Pages与Zendesk“合法外衣”伪造客服门户,企业凭证安全防线告急
一封伪装成工单升级的钓鱼邮件,利用Cloudflare Pages和Zendesk等可信平台托管仿冒页面,窃取企业账户凭证。攻击者绕过MFA,盗取会话Cookie,数小时内入侵财务系统。此类新型钓鱼依托合法域名规避传统防御,暴露“可信即安全”的认知盲区。专家呼吁构建零信任模型,强化行为监测与员工培训,应对日益隐蔽的网络威胁。(238字)
254 5
|
机器学习/深度学习 存储 运维
深度学习在数据备份与恢复中的新视角:智能化与效率提升
深度学习在数据备份与恢复中的新视角:智能化与效率提升
532 19
|
Oracle 关系型数据库 MySQL
一款好用的数据库表结构文档生成工具
一款好用的数据库表结构文档生成工具
|
机器学习/深度学习 安全 云计算
拥抱变革:我的云计算技术感悟之旅
【4月更文挑战第23天】 在信息技术不断演进的今天,云计算已成为推动企业数字化转型的重要力量。本文通过作者的个人视角,深入探讨了在学习和实践云计算过程中的技术感悟与成长。文章不仅涉及了云计算的基本概念、核心特性,还分享了作者在面对新技术挑战时的思考和应对策略,旨在为同行提供经验参考,共同促进技术进步与个人发展。
|
监控 安全 网络安全
(蓝宝书)网络安全——CTF那些事儿
(蓝宝书)网络安全——CTF那些事儿
671 0
|
网络协议 网络架构
策略路由和路由策略
策略路由和路由策略
303 0
|
存储 Serverless 定位技术
基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析
基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析
435 2
EMQ
|
数据采集 JSON 算法
对接多个 Neuron 实例,实现多网关协同分析与设备联动
3月,eKuiper团队主要进行了1.9.0版本的开发,增强了分析能力与运营效率以进一步提高eKuiper的性能和可用性。
EMQ
542 0
对接多个 Neuron 实例,实现多网关协同分析与设备联动
|
SQL 消息中间件 缓存
基于 Flink SQL CDC 的实时数据同步方案
Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化?本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的数据同步方案,基于 Flink CDC 同步的解决方案以及更多的应用场景和 CDC 未来开发规划等方面进行介绍和演示。
基于 Flink SQL CDC 的实时数据同步方案

热门文章

最新文章