CN114238360A - 一种用户行为分析*** - Google Patents
一种用户行为分析*** Download PDFInfo
- Publication number
- CN114238360A CN114238360A CN202111602485.8A CN202111602485A CN114238360A CN 114238360 A CN114238360 A CN 114238360A CN 202111602485 A CN202111602485 A CN 202111602485A CN 114238360 A CN114238360 A CN 114238360A
- Authority
- CN
- China
- Prior art keywords
- user
- behavior
- field
- session
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用户行为分析***,包括用户行为会话模块、用户留存分析模块、用户行为匹配模块及用户漏斗分析模块;用户行为会话模块,用于生成用户行为会话数据表;用户留存分析模块用于生成用户留存率日表;用户行为匹配模块用于生成用户行为匹配数据表;用户漏斗分析模块,用于基于给定的滑动窗口,按顺序匹配事件链,计算出窗口事件内转化的步数以及每个阶段的转化数量,生成用户漏斗转化分析表;本发明的优点在于:解决现有技术受单机物理内存限制、开发复杂以及难以做到实时响应的问题。
Description
技术领域
本发明涉及用户行为分析领域,更具体涉及一种用户行为分析***。
背景技术
近年来,随着全球互联网技术高速发展,基于用户的行为日志数据量出现了几何程度的增长。有关用户行为的分析软件的产品形态在底层技术上历经了多番更替,传统数据库技术早已不堪重负,而以Hadoop生态为代表的大数据技术在使用中也存在着性能、稳定性和实时响应的问题。目前,分析型软件对底层OLAP技术的实时性提出了越来越苛刻的要求。
用户行为分析是对用户在产品上产生的行为及行为背后的数据进行分析,通过构建用户行为模型和用户画像,来改变产品决策,实现精细化运营,指导业务增长。用户行为分析算法的实现,一种是通过编写处理程序来实现相关算法。根据算法意图,程序从数据库中读取到相关数据后,在程序框架内实现算法进行处理。一般此类程序仅能够在单台节点上运行,无法并行处理数据,受限于程序运行的单节点内存大小,一般无法处理大量数据。另外一种实现方式,是通过大数据工具,如Hive或Spark进行实现,例如文献《丁鹏程.基于大数据的用户行为分析***,宁波大学信息科学与工程学院,2021.》公开了采用Spark的分布式集群***平台架构,对用户的行为数据信息分析***进行深度设计。使用大数据的处理方式,需要编写一系列的数组处理函数以及聚合函数来弥补大数据基础算法功能的不足。开发复杂之余也受制于编写人员能力高低,存在性能效率和稳定性上的差别。另外,上述现有技术除了受单机物理内存限制、开发复杂以外,在处理的速度上也较难做到实时响应。
发明内容
本发明所要解决的技术问题在于现有技术用户行为分析***除了受单机物理内存限制、开发复杂以外,在处理的速度上也较难做到实时响应。
本发明通过以下技术手段实现解决上述技术问题的:一种用户行为分析***,基于ClickHouse分布式数据库中原生的多参聚合函数以及高阶函数对用户行为分析,包括用户行为会话模块、用户留存分析模块、用户行为匹配模块及用户漏斗分析模块;
所述用户行为会话模块,用于从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,生成会话id,会话的起始时间戳字段,会话的结束时间戳字段,用户行为链字段,并根据用户标识字段,会话id字段进行排序后输出,形成有序的用户行为会话数据集,保存为用户行为会话数据表;
所述用户留存分析模块,用于基于给定的日期参数,计算出首日与预设期限内的留存率,生成用户留存率日表;
所述用户行为匹配模块,用于基于给定的有顺序要求的行为模式参数,或无顺序要求的行为模式参数,筛选出符合对应模式的用户数据集,生成用户行为匹配数据表;
所述用户漏斗分析模块,用于基于给定的滑动窗口,按顺序匹配事件链,计算出窗口事件内转化的步数以及每个阶段的转化数量,生成用户漏斗转化分析表。
本发明基于ClickHouse分布式数据库中原生的多参聚合函数以及高阶函数对用户行为分析,ClickHouse作为一款性能卓悦的OLAP分布式数据库,在实时计算海量数据时有着明显的优势,非常适合被当作分析软件的底层数据仓库使用,数据内存不受限制,不需要编写一系列的数组处理函数以及聚合函数来弥补大数据基础算法功能的不足,开发过程相对简单,解决现有技术受单机物理内存限制、开发复杂以及难以做到实时响应的问题。
进一步地,所述用户行为会话模块从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,生成会话id,包括:
从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,其中行为时间字段转换为时间戳格式,提取的数据集按照行为时间字段的数值由小到大排序;
数据集按照用户标识字段进行GROUP BY聚合,并使用groupArray函数将对应的行为标识字段和行为时间字段分别汇聚为行为标识数组字段、行为时间戳数组字段;
使用arrayDifference函数计算行为时间戳数组字段内相邻元素之间的差值,生成该用户行为间隔数组字段;
使用arrayMap函数将行为间隔数组字段中行为间隔与预设的会话时间阈值做比较,若行为间隔小于或等于预设的会话时间阈值,则表示是用户同一会话的行为记录,若大于会话时间阈值,则视为是两个会话,返回的结果数组为新会话标识数组字段,其中的元素值为1时表示为新会话,值为0时表示为旧会话,新会话标识数组字段的第一个元素置为1;
使用ARRAY JOIN对行为标识数组字段、行为时间戳数组字段和新会话标识数组字段进行行转列展开操作,每个用户的单行记录根据数组的元素个数展开为多行记录,展开后生成用户标识字段、行为标识字段、行为时间戳字段和新会话标识字段;
对新会话标识字段使用arrayEnumerate函数返回数组下标,使用arrayJoin函数对arrayEnumerate函数处理的结果行转列,生成会话索引session_index,然后对每行数据使用arraySlice(is_new_session_array,1,session_index)函数切割,其中,arraySlice的三个输入参数分别为新会话标识字段、切割的偏移量、切割长度,再使用arraySum函数对上述切割出的数组的中的元素进行求和,其值视为会话id。
更进一步地,所述用户行为会话模块生成会话的起始时间戳字段,会话的结束时间戳字段,用户行为链字段,包括:
将行为标识字段和行为信息维度表的行为名称字段进行左连接操作,将行为标识字段转换为行为名称字段;
按照用户标识字段和行为时间戳字段对数据集进行排序操作,排好序的数据集再根据用户标识字段和会话id字段进行GROUP BY聚合操作;
聚合后,将每个会话中最小行为时间戳作为会话的起始时间戳字段,最大行为时间戳作为会话的结束时间戳字段,将起始时间戳字段与结束时间戳字段内的行为名称字段通过groupArray函数处理为行为名称数组,再通过arrayStringConcat函数进行数组内元素连接,生成用户行为链字段。
进一步地,所述原始访问日志表的构建过程为:分析对象所在的***的日志数据存储在ClickHouse数据库中,然后生成原始访问日志表,原始访问日志表至少包含用户标识字段、行为标识字段、行为时间字段。
进一步地,所述用户留存分析模块,还用于:
从原始访问日志表中提取出用户标识字段、行为时间字段,并对行为时间字段使用toDate函数生成用户访问日期字段visit_day;
基于给定的日期参数first_day,通过使用ClickHouse的INTERVAL操作符进行生成第1日、第2日......直至第N日的日期数据用于后续计算,其中第0日为first_day;
利用equals函数设定equals(visit_day,first_day)作为retention函数第一个判断条件参数,以此类推,第N个判断条件参数是equals(visit_day,first_day+INTERVALN DAY),默认第一个判断条件参数的结果为留存,将所有计算的判断条件参数的结果保存至retention函数的结果数组中;
对retention函数的结果数组通过用户标识字段进行GROUP BY聚合,分别统计出第0天至第N天的用户的访问情况;
第N天的留存率是通过计算第N天的访问量除以第0天的访问量;通过该方法计算出第0天至第N天的留存率,保存为用户留存率日表。
进一步地,所述用户行为匹配模块,还用于处理有顺序要求的用户行为匹配,所述有顺序要求的用户行为匹配,包括:
配置用户行为事件链;
配置用户的行为对应的模式字符串;
从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,并通过用户标识字段进行GROUP BY聚合操作;
每个用户根据用户标识字段进行GROUP BY聚合操作后,行为标识字段按照行为时间字段的先后顺序进行排序,将排序后的结果转换为模式字符串,模式字符串输入sequenceMatch函数,判断是否有用户行为事件链满足输入的模式,返回用户行为匹配结果字段,统计满足输入模式的用户行为事件链的数量,生成用户行为统计结果字段;
结合用户行为匹配结果字段以及用户行为统计结果字段的结果,生成用户行为匹配数据表。
更进一步地,所述配置用户行为事件链,包括:将用户的一个或多个动作均转换为单一事件的判断表达式,用户触发事件时,判断该事件是否满足判断表达式,若满足,则用户触发了用户行为事件链中的事件。
更进一步地,所述配置用户的行为对应的模式字符串,包括:
如用户依次发生了事件A,之后发生了事件B,将上述行为表示为(?1)(?2),其中(?N)代表的是用户行为事件链的判断表达式的索引,(?N)与用户行为事件链的事件一一对应;
用户依次发生事件A,之后发生了一些不关心的动作,再之后发生了事件B的情况,写成(?1).*(?2);
用户依次发生过两次事件A,之后发生了事件B,将上述行为表示为(?1)(?2)(?3),其中(?1)和(?2)分别对应事件A,(?3)对应事件B;
事件和事件之间有时间要求的情况下,在发生A事件后至少m秒后发生了B事件,写成(?1)(?t>m)(?2);发生A事件在L秒内发生了B事件写成(?1)(?t<=L)(?2);在A事件后Q秒后立即发生B事件,写成(?1)(?t==Q)(?2)。
进一步地,所述用户行为匹配模块,还用于处理无顺序要求的用户行为匹配,所述无顺序要求的用户行为匹配,包括:
从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,形成初始的用户行为数据集;
对初始的用户行为数据集进行查询,查询每个需要匹配的用户事件是否发生,具备相同的需要匹配的用户事件的用户数据合并到一起形成子查询数据集,每个子查询数据集具有一个唯一的事件索引字段;
通过UNION ALL连接每个子查询数据集,形成事件集;
对事件集按照用户标识进行GROUP BY聚合操作,生成新数据集;
新数据集中事件索引通过groupUniqArray函数聚合后去重,形成事件索引去重聚合数组;
使用hasAll函数,对事件索引去重聚合数组与匹配条件比较,筛选出符合匹配条件的事件索引去重聚合数组,生成用户行为匹配数据表。
进一步地,所述用户漏斗分析模块,还用于:从原始访问日志表中提取用户标识字段、行为标识字段、行为时间字段,构成数据集;
数据集对用户标识字段的每个用户的行为标识字段按照行为时间字段的数值从小到大进行排序;
使用windowFunnel函数计算每个用户在给定的滑动时间窗口内连续触发条件链的最大数目,并生成用户最长触发链计数字段;
使用arrayWithConstant函数处理用户最长触发链计数字段,生成一个指定长度的数组,对该指定长度的数组进行行转列生成阶段索引值字段;
根据阶段索引值字段对上述数据集进行GROUP BY聚合操作,并使用count函数,计算出每一阶段用户的总数情况,根据阶段索引值字段进行排序,输出包含阶段索引值和该阶段用户总数的新数据集,保存该新数据集为用户漏斗转化分析表。
本发明的优点在于:
(1)本发明基于ClickHouse分布式数据库中原生的多参聚合函数以及高阶函数对用户行为分析,ClickHouse作为一款性能卓悦的OLAP分布式数据库,在实时计算海量数据时有着明显的优势,非常适合被当作分析软件的底层数据仓库使用,数据内存不受限制,不需要编写一系列的数组处理函数以及聚合函数来弥补大数据基础算法功能的不足,开发过程相对简单,解决现有技术受单机物理内存限制、开发复杂以及难以做到实时响应的问题。
(2)本发明设置用户行为会话模块,生成用户行为会话数据表,供后续业务查询和计算使用,指导产品决策,实现精细化运营,指导业务增长。
(3)本发明设置用户留存分析模块,基于给定的日期参数,计算出首日与预设期限内的留存率,生成用户留存率日表,用来分析用户在产品中的使用与活跃情况,指导产品决策,实现精细化运营,指导业务增长。
(4)本发明设置用户行为匹配模块,基于给定的有顺序要求的行为模式参数,或无顺序要求的行为模式参数,筛选出符合对应模式的用户数据集,生成用户行为匹配数据表,判断用户是否有做过一系列给定的操作,指导产品决策,实现精细化运营,指导业务增长。
(5)本发明设置用户漏斗分析模块,基于给定的滑动窗口,按顺序匹配事件链,计算出窗口事件内转化的步数以及每个阶段的转化数量,生成用户漏斗转化分析表,指导产品决策,实现精细化运营,指导业务增长。
附图说明
图1为本发明实施例所公开的一种用户行为分析***的框架图;
图2为本发明实施例所公开的一种用户行为分析***的用户行为会话模块工作流程图;
图3为本发明实施例所公开的一种用户行为分析***的用户留存分析模块工作流程图;
图4为本发明实施例所公开的一种用户行为分析***的用户行为匹配模块工作流程图;
图5为本发明实施例所公开的一种用户行为分析***的用户漏斗分析模块工作流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种用户行为分析***,基于ClickHouse分布式数据库中原生的多参聚合函数以及高阶函数对用户行为分析,包括用户行为会话模块、用户留存分析模块、用户行为匹配模块及用户漏斗分析模块;
所述用户行为会话模块,用于从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,生成会话id,会话的起始时间戳字段,会话的结束时间戳字段,用户行为链字段,并根据用户标识字段,会话id字段进行排序后输出,形成有序的用户行为会话数据集,保存为用户行为会话数据表;
所述用户留存分析模块,用于基于给定的日期参数,计算出首日与预设期限内的留存率,生成用户留存率日表;
所述用户行为匹配模块,用于基于给定的有顺序要求的行为模式参数,或无顺序要求的行为模式参数,筛选出符合对应模式的用户数据集,生成用户行为匹配数据表;
所述用户漏斗分析模块,用于基于给定的滑动窗口,按顺序匹配事件链,计算出窗口事件内转化的步数以及每个阶段的转化数量,生成用户漏斗转化分析表。以下详细介绍各模块的工作过程。
1、用户行为会话模块
用户行为会话模块是将零散的用户行为信息,通过一定算法聚合,识别成一系列合理的用户行为会话,并能够将用户在同一会话中的一系列行为按照时间顺序进行串联。该模块是基于给定的会话时间阈值参数(session_gap),将原始访问日志表的数据,经过一系列ClickHouse SQL处理后,生成用户行为会话数据表。如图2所示,具体过程如下:
(1)从原始访问日志表中提取出用户标识(user_id)字段、行为标识(operation_id)字段、行为时间(operation_time)字段。其中行为时间字段需要转换为时间戳格式,形成行为时间戳(operation_timestamp)字段。提取的数据集按照行为时间戳(operation_timestamp)字段的数值顺序由小到大排序。
(2)数据集按照用户标识字段进行GROUP BY聚合,并使用groupArray函数将对应的行为标识字段和行为时间戳字段分别汇聚为行为标识数组字段、行为时间戳数组字段。其中,行为标识数组字段、行为时间戳数组字段中可以分别存储0条至多条该用户行为标识数据和一一对应的行为时间戳数据。
(3)使用arrayDifference函数对行为时间戳数组字段进行处理。该函数计算数组内相邻元素之间的差值,即一个用户的相邻两条行为的间隔秒数,生成的结果为该用户行为间隔数组字段。
(4)使用arrayMap函数对行为间隔数组字段进行计算。arrayMap是一个高阶函数,可以编写lambda函数作为其入参,另一个入参是需要处理的行为间隔数组字段。arrayMap将数组中的每一个元素都进行一次lambda函数调用,计算的结果也呈现为数组返回。计算的逻辑是使用行为间隔与预设的会话时间阈值与做比较,若行为间隔小于或等于预设的会话时间阈值,则表示是用户同一会话的行为记录,若大于会话时间阈值,则视为是两个会话。返回的结果数组为新会话标识数组字段,其中的元素值为1时表示为新会话,值为0时表示为旧会话。
(5)之后新会话标识数组字段还需要对其第一个元素做出处理。因为按照上述方法生成的新会话标识数组字段的第一个元素为0,而实际情况下第一个元素永远会是新会话,因此应设置为1。于是需要分别使用arrayPopFront函数删除掉第一个元素,然后再用arrayPushFront对其填充值1。
(6)此时数据集包含了用户标识(user_id)字段、行为标识数组(operation_id_array)字段、行为时间戳数组(operation_timestamp_array)字段和新会话标识数组(is_new_session_array)字段。其中行为标识数组字段、行为时间戳数组字段和新会话标识数组里字段的元素,都是按照时间戳顺序一一对应的。
(7)对各个数组内元素进行行转列展开操作。使用ARRAY JOIN对行为标识数组字段、行为时间戳数组字段和新会话标识数组字段进行数组行转列展开操作。此时每个用户的单行记录会根据数组的元素个数展开为多行记录。展开后的数据集为用户标识字段、行为标识字段、行为时间戳字段和新会话标识字段。
(8)接着生成会话索引(session_index)字段。会话索引字段的生成需要使用到arrayEnumerate函数配合ARRAY JOIN进行使用。该函数返回数组从1开始的数组下标(类似于数据库的row number函数)。具体的:
假设原始数据如表1:
表1原始数据
user_id | is_new_session_array |
user1 | [1,0,0,1,0,1] |
会话索引(session_index)的生成,是通过对is_new_session_array数组使用arrayEnumerate函数,之后使用arrayJoin行转列。
其中,is_new_session_array是新会话标识数组,如[1,0,0,1,0,1]代表1、4、6是新会话(1,2,3是一个会话,4,5是一个会话,6是一个会话)。
arrayEnumerate函数返回数组下标,即数组的每个元素的位置值,如对于数组[1,0,0,1,0,1],arrayEnumerate([1,0,0,1,0,1])的返回是[1,2,3,4,5,6],如表2。
表2 arrayEnumerate处理结果
user_id | is_new_session_array | arrayEnumerate函数处理 |
user1 | [1,0,0,1,0,1] | [1,2,3,4,5,6] |
此时使用arrayJoin对arrayEnumerate函数处理的结果行转列,一行用户数据会转换为6行,可视为会话索引,如表3:
表3arrayEnumerate函数处理的结果行转列
user_id | is_new_session_array | 会话索引 |
user1 | [1,0,0,1,0,1] | 1 |
user1 | [1,0,0,1,0,1] | 2 |
user1 | [1,0,0,1,0,1] | 3 |
user1 | [1,0,0,1,0,1] | 4 |
user1 | [1,0,0,1,0,1] | 5 |
user1 | [1,0,0,1,0,1] | 6 |
(9)会话id(session_id)需要对新会话标识数组字段进行操作。首先使用arraySlice函数将新会话标识数组进行切割,其参数分别是新会话标识数组,步进值1和会话索引值。接着将其返回值通过arraySum函数进行处理,生成会话id。生成的会话id从1开始,每个新的会话id会是之前会话id上的值加步进值1。具体的:
对于每行记录,使用arraySlice(is_new_session_array,1,session_index)函数切割。
arraySlice对is_new_session_array数组进行切割,后面两个参数分别是切割的偏移量和切割长度。此处代表的是从第1个位置,切割出session_index长度的数组,如表4:
表4对is_new_session_array数组进行切割
user_id | is_new_session_array | 会话索引 | 使用arraySlice函数切割 |
user1 | [1,0,0,1,0,1] | 1 | [1] |
user1 | [1,0,0,1,0,1] | 2 | [1,0] |
user1 | [1,0,0,1,0,1] | 3 | [1,0,0] |
user1 | [1,0,0,1,0,1] | 4 | [1,0,0,1] |
user1 | [1,0,0,1,0,1] | 5 | [1,0,0,1,0] |
user1 | [1,0,0,1,0,1] | 6 | [1,0,0,1,0,1] |
再使用arraySum对上一步切割出的数组的中的元素进行求和,其值可视为会话id,如表5所示:
表5切割出的数组的中的元素进行求和
(10)此时再将行为标识字段和行为信息维度表的行为名称(operation_name)字段进行左连接(LEFT JOIN)操作,检索生成出对应的行为名称字段。注意:该操作为可选操作,目的是将行为标识字段通过查询维度表转换为行为名称字段以便于后续使用。
(11)接着,数据集按照用户标识字段和行为时间戳字段进行排序操作,排好序的数据集再根据用户标识字段和会话id字段进行GROUP BY聚合操作。
(12)聚合后,将每个会话中最小行为时间戳作为会话的起始时间戳字段,最大行为时间戳作为会话的结束时间戳字段,将行为名称通过groupArray函数处理为行为名称数组,再通过arrayStringConcat函数进行数组内元素连接,生成用户行为链字段。
(13)会话起始时间戳字段和会话结束时间戳字段可使用ClickHouse时间戳转换函数,转换为正常的年月日,时分秒字段进行表示。
(14)最终,选择数据集中的用户标识(user_id)字段,会话id(session_id)字段,会话起始时间(session_start_time)字段,会话结束时间(session_end_time)字段,用户行为链(user_operation_chain)等字段,并根据用户标识字段,会话id字段进行排序后输出,形成有序的户行为会话数据集。
(15)保存上述数据集为用户行为会话数据表,供后续业务查询和计算使用。
2、用户留存分析模块
用户留存是指用户停留并持续的活跃于产品页面中。留存分析可以用来分析用户在产品中的使用与活跃情况。本模块基于给定的日期参数,通过ClickHouse SQL计算出首日与第1日、第2日、......直至第31日的留存率,生成用户留存率日表。如图3所示,具体过程为:
(1)从原始访问日志表中提取出用户标识(user_id)字段、行为时间(operation_time)字段。并对行为时间字段使用toDate函数生成用户访问日期(visit_day)字段。
(2)此时的数据集包括用户标识(user_id)字段、行为时间(operation_time)字段和用户访问日期(visit_day)字段。
(3)基于给定的日期参数first_day,通过使用ClickHouse的INTERVAL操作符进行生成第1日、第2日......直至第31日的日期数据用于后续计算。生成的方式为:第0日即为first_day,第1日取值是first_day+INTERVAL 1DAY,第2日是first_day+INTERVAL 2DAY,以此类推。ClickHouse会识别表达式并转换为正确的日期进行计算。
(4)使用retention函数计算留存情况。该函数将一组条件作为参数,用来表示事件是否满足特定条件。通常而言会以第一个条件的结果为基准,观察后面的各个条件是否也满足,若满足则置为1(意为True),不满足则置为0(意为False)。即:如果第一个和第二个均是True时,第二个结果将是True,否则其结果会是False。如果第一个和第三个均是True时,第三个结果将是True,依此类推。最终函数返回包含0和1元素的数组。
(5)可使用equals函数判断输入的两个参数是否相等。此时,应当把equals(visit_day,first_day)作为retention第一个判断条件的参数,第二个参数是equals(visit_day,first_day+INTERVAL 1DAY),依此类推,如果需要计算至第31日的留存情况,最后一个参数则为equals(visit_day,first_day+INTERVAL 31DAY)。其最终的计算结果数组可以保存至result变量中。
(6)由于retention函数计算的结果是一个数组。因此需要取得判断值,可使用arrayElement函数提取数组内容,如arrayElement(result,1)代表result数组中的第一个元素,arrayElement(result,2)代表result数组中的第二个元素。
(7)接着将上述计算结果通过用户标识进行GROUP BY聚合,分别统计出第0天至第31天的该用户的访问情况。其统计方法是通过sum函数对每一个result数组元素进行累加。可将结果分别保存在day0_retention至day31_retention的变量中。
(8)第N天的留存率(dayN_retention_ratio)是通过计算dayN_retention除以day0_retention的值得出。其取值范围在0到1之间。
(9)之后可以将留存率的值乘以100并通过round函数四舍五入截取指定位数的小数位,变成为一个取值范围在0到100之间的百分比数值。
(10)按照上述方法,按用户标识分别计算出第0天至第31天的留存率的数据集。此数据集中包含了以此日期为起点的第0天留存率(day0_retention_ratio)至第31天留存率(day31_retention_ratio)字段。
(11)保存上述数据集为用户留存率日表,供后续业务查询和计算使用。
3、用户行为匹配模块
用户行为匹配模块,是去判断用户是否有做过一系列给定的操作。其中的一系列动作可以看成是多个事件的组合,即可以是有行为顺序要求的,也可以是没有行为顺序要求的,需要分别实现对应算法。本模块基于给定的有顺序要求的行为模式参数,或无顺序要求的行为模式参数,通过ClickHouse SQL筛选出符合该模式的用户数据集,生成用户行为匹配数据表。如图4所示,具体过程为:
31.有顺序要求的用户行为匹配具体实现
(1)事件链的配置。
a)根据业务需求,将用户的一个或多个动作转换为单一事件的判断表达式,即判断是否满足给定的操作。
b)每个事件都是由一个条件判断表达式所组成,计算结果返回1(真)或0(假)。
c)事件链是由单个或至多32个事件组成。
(2)模式字符串pattern的配置。
a)对于有顺序要求的用户行为,如用户依次发生了事件A,之后发生了事件B,可以将上述行为表示为(?1)(?2)。其中(?N)代表的是事件的条件判断表达式索引。模式字符串中(?N)需要与事件链的事件一一对应。
b)用户行为在匹配中存在其他动作的,如用户依次发生事件A,之后发生了一些不关心的动作,再之后发生了事件B的情况,可以写成(?1).*(?2)。
c)用户行为在匹配中有重复发生的,如用户依次发生过两次事件A,之后发生了事件B,可以将上述行为表示为(?1)(?2)(?3),其中(?1)和(?2)分别对应事件A,(?3)对应事件B。
d)事件和事件之间如有时间要求,如在发生A事件后至少1800秒后发生了B事件,可以写成(?1)(?t>1800)(?2);类似如果发生A事件在500秒内发生了B事件可以写成(?1)(?t<=500)(?2);又如在A事件后60秒后立即发生B事件,可以写成(?1)(?t==60)(?2)。
(3)从原始访问日志表中提取出用户标识(user_id)字段、行为标识(operation_id)字段、行为时间(operation_time)字段,并通过用户标识(user_id)进行GROUP BY聚合操作。
(4)使用sequenceMatch函数处理有顺序要求的用户行为匹配,检查是否有事件链满足输入的模式。sequenceMatch函数的输入为上述模式字符串pattern,行为时间(operation_time)和用户行为事件链中具体的一个或多个条件判断表达式。函数返回基于用户标识(user_id)聚合的用户行为匹配结果,作为用户行为匹配结果(user_operation_match)字段。
(5)使用sequenceCount函数处理有顺序要求的用户行为匹配,统计满足输入模式的事件链的数量。sequenceCount函数的输入为上述模式字符串pattern,行为时间(operation_time)和用户行为事件链中具体的一个或多个条件判断表达式。函数返回基于用户标识(user_id)聚合的统计值,作为用户行为统计结果(user_operation_count)字段。
(6)结合用户行为匹配结果(user_operation_match)字段以及用户行为统计结果(user_operation_count)字段的结果,筛选出符合要求的用户数据。
(7)保存上述数据集为用户行为匹配表,供后续业务查询和计算使用。
32.无顺序要求的用户行为匹配具体实现
(1)从原始访问日志表中提取出用户标识(user_id)字段、行为标识(operation_id)字段、行为时间(operation_time)等字段,形成初始的用户行为数据集。
(2)根据业务需求,对初始的用户行为数据集进行查询,查询每个需要匹配的用户事件。一个事件可以是用户的一个或多个行为。在每个子查询数据集中生成一个唯一的事件索引(event_index)字段。如,第一个子查询的索引值为1,第二个子查询的索引值为2,依此类推。其中,具备相同的需要匹配的用户事件的用户数据合并到一起形成子查询数据集。
(3)多个事件通过UNION ALL来连接每个子查询的数据集,形成事件集。
(4)对上一步的数据合集按照用户标识(user_id)进行GROUP BY聚合操作。
(5)使用HAVING对聚合后的数据进行过滤,对事件索引去重聚合数组与匹配条件比较,筛选出符合匹配条件的事件索引去重聚合数组,生成用户行为匹配数据表,具体的:
假设生成的数据集如表6:
表6包含事件索引的数据集
用户id | 事件索引(rule_index) |
user1 | 1 |
user1 | 2 |
user1 | 1 |
user1 | 3 |
user2 | 1 |
user2 | 1 |
user2 | 2 |
user3 | 3 |
对用户id进行聚合,事件索引通过groupUniqArray函数聚合后去重,形成事件索引去重聚合数组,以便后续hasAll函数的匹配,如表7所示。
表7事件索引去重聚合数组
用户id | 事件索引去重聚合数组 | 若聚合后不去重,后续匹配不方便 |
user1 | [1,2,3] | [1,2,1,3] |
user2 | [1,2] | [1,1,2] |
user3 | [3] | [3] |
使用hasAll函数,检查一个数组是否是另一个数组的子集。返回1表示匹配,返回0表示不匹配。
在此,使用语句:
HAVING hasAll(groupUniqArray(rule_index),[1,2,3])=1
即对事件索引去重聚合数组和[1,2,3](匹配条件,表示同时满足事件索引1、2、3)进行比较,如表8所示。
表8事件索引去重聚合数组和匹配条件的比较结果
用户id | 事件索引去重聚合数组 | hasAll计算结果 |
user1 | [1,2,3] | 1 |
user2 | [1,2] | 0 |
user3 | [3] | 0 |
表示希望筛选出同时满足事件索引1、2、3的用户id,即user1。
(6)保存上述数据集为用户行为匹配数据表,供后续业务查询和计算使用。
4、漏斗分析模块
用户漏斗分析,即转化分析,是反映用户行为状态从起始点到结束点的各个阶段用户转化率情况的算法。该模块是基于给定的滑动窗口(sliding_time_window)参数,按顺序匹配事件链,通过ClickHouse SQL计算出窗口事件内转化的步数以及每个阶段的转化数量,生成用户漏斗转化分析表。如图5所示,具体过程为:
(1)从原始访问日志表中提取出用户标识(user_id)字段、行为标识(operation_id)字段、行为时间(operation_time)等字段的数据集,并根据用户标识(user_id)和行为时间(operation_time)升序排序。
(2)根据用户标识(user_id)字段对上述数据集进行GROUP BY聚合操作。
(3)使用windowFunnel函数计算每个用户在给定的滑动时间窗口(sliding_time_window)内连续触发条件链的最大数目,并生成用户最长触发链计数(max_stage_active)字段,具体的:
a)windowFunnel函数会搜索滑动时间窗中的事件链,并计算从链中发生的最大事件数。
b)该函数搜索触发链中的第一个条件并将事件计数器设置为1,这是滑动窗口启动的时刻。如果来自链的事件在窗口内顺序发生,则计数器将递增。如果事件序列中断,则计数器不再增加。如果数据在不同的完成点具有多个事件链,则该函数将输出最长链的大小。
c)该函数的第一个参数是滑动窗口的大小,表示事件链中第一个事件和最后一个事件的最大间隔。
d)该函数之后的参数包括数据集的时间字段,以及事件链的判断表达式。表达式是将一组条件作为参数,用来表示事件是否满足特定条件。每个事件都是由一个条件判断表达式所组成,计算结果返回1(真)或0(假)。
e)windowFunnel函数返回生成每个用户的最长触发链计数(max_stage_active)字段。
(4)生成漏斗每一阶段的用户数,具体的:
a)使用arrayWithConstant函数处理用户的最长触发链计数(max_stage_active)字段。该函数会生成一个指定长度的数组,用于后续操作。(如设定长度为3,赋值为1,生成的数组为:[1,1,1])
b)函数将用户的最长触发链计数(max_stage_active)字段作为其第一个参数,第二个参数是数值1。函数将返回长度为用户最长触发链计数、元素值为1的数组。
c)使用arrayEnumerate函数处理arrayWithConstant函数生成数组。arrayEnumerate函数返回数组下标。如数组[1,1,1]经过处理后,返回为[1,2,3]的新数组。
d)使用arrayJoin函数将arrayEnumerate函数返回数组转换为多列(行转列)。展开后的字段为漏斗的阶段索引值(stage_index)字段。
e)根据阶段索引值(stage_index)字段对上述数据集进行GROUP BY聚合操作。
f)此时,根据阶段索引值聚合,并使用count函数,会计算出每一阶段用户的总数情况。
(5)根据阶段索引值(stage_index)进行排序,可输出包含阶段索引值和该阶段用户总数的数据集。此时就完成了漏斗阶段索引及漏斗每一阶段用户总数的计算过程。
(6)保存上述数据集为用户漏斗转化分析表,供后续业务查询和计算使用。
通过以上技术方案,本发明基于ClickHouse分布式数据库中原生的多参聚合函数以及高阶函数对用户行为分析,ClickHouse作为一款性能卓悦的OLAP分布式数据库,在实时计算海量数据时有着明显的优势,非常适合被当作分析软件的底层数据仓库使用,数据内存不受限制,不需要编写一系列的数组处理函数以及聚合函数来弥补大数据基础算法功能的不足,开发过程相对简单,解决现有技术受单机物理内存限制、开发复杂以及难以做到实时响应的问题。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种用户行为分析***,其特征在于,基于ClickHouse分布式数据库中原生的多参聚合函数以及高阶函数对用户行为分析,包括用户行为会话模块、用户留存分析模块、用户行为匹配模块及用户漏斗分析模块;
所述用户行为会话模块,用于从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,生成会话id,会话的起始时间戳字段,会话的结束时间戳字段,用户行为链字段,并根据用户标识字段,会话id字段进行排序后输出,形成有序的用户行为会话数据集,保存为用户行为会话数据表;
所述用户留存分析模块,用于基于给定的日期参数,计算出首日与预设期限内的留存率,生成用户留存率日表;
所述用户行为匹配模块,用于基于给定的有顺序要求的行为模式参数,或无顺序要求的行为模式参数,筛选出符合对应模式的用户数据集,生成用户行为匹配数据表;
所述用户漏斗分析模块,用于基于给定的滑动窗口,按顺序匹配事件链,计算出窗口事件内转化的步数以及每个阶段的转化数量,生成用户漏斗转化分析表。
2.根据权利要求1所述的一种用户行为分析***,其特征在于,所述用户行为会话模块从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,生成会话id,包括:
从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,其中行为时间字段转换为时间戳格式,提取的数据集按照行为时间字段的数值由小到大排序;
数据集按照用户标识字段进行GROUP BY聚合,并使用groupArray函数将对应的行为标识字段和行为时间字段分别汇聚为行为标识数组字段、行为时间戳数组字段;
使用arrayDifference函数计算行为时间戳数组字段内相邻元素之间的差值,生成该用户行为间隔数组字段;
使用arrayMap函数将行为间隔数组字段中行为间隔与预设的会话时间阈值做比较,若行为间隔小于或等于预设的会话时间阈值,则表示是用户同一会话的行为记录,若大于会话时间阈值,则视为是两个会话,返回的结果数组为新会话标识数组字段,其中的元素值为1时表示为新会话,值为0时表示为旧会话,新会话标识数组字段的第一个元素置为1;
使用ARRAY JOIN对行为标识数组字段、行为时间戳数组字段和新会话标识数组字段进行行转列展开操作,每个用户的单行记录根据数组的元素个数展开为多行记录,展开后生成用户标识字段、行为标识字段、行为时间戳字段和新会话标识字段;
对新会话标识字段使用arrayEnumerate函数返回数组下标,使用arrayJoin函数对arrayEnumerate函数处理的结果行转列,生成会话索引session_index,然后对每行数据使用arraySlice(is_new_session_array,1,session_index)函数切割,其中,arraySlice的三个输入参数分别为新会话标识字段、切割的偏移量、切割长度,再使用arraySum函数对上述切割出的数组的中的元素进行求和,其值视为会话id。
3.根据权利要求2所述的一种用户行为分析***,其特征在于,所述用户行为会话模块生成会话的起始时间戳字段,会话的结束时间戳字段,用户行为链字段,包括:
将行为标识字段和行为信息维度表的行为名称字段进行左连接操作,将行为标识字段转换为行为名称字段;
按照用户标识字段和行为时间戳字段对数据集进行排序操作,排好序的数据集再根据用户标识字段和会话id字段进行GROUP BY聚合操作;
聚合后,将每个会话中最小行为时间戳作为会话的起始时间戳字段,最大行为时间戳作为会话的结束时间戳字段,将起始时间戳字段与结束时间戳字段内的行为名称字段通过groupArray函数处理为行为名称数组,再通过arrayStringConcat函数进行数组内元素连接,生成用户行为链字段。
4.根据权利要求1所述的一种用户行为分析***,其特征在于,所述原始访问日志表的构建过程为:分析对象所在的***的日志数据存储在ClickHouse数据库中,然后生成原始访问日志表,原始访问日志表至少包含用户标识字段、行为标识字段、行为时间字段。
5.根据权利要求1所述的一种用户行为分析***,其特征在于,所述用户留存分析模块,还用于:
从原始访问日志表中提取出用户标识字段、行为时间字段,并对行为时间字段使用toDate函数生成用户访问日期字段visit_day;
基于给定的日期参数first_day,通过使用ClickHouse的INTERVAL操作符进行生成第1日、第2日......直至第N日的日期数据用于后续计算,其中第0日为first_day;
利用equals函数设定equals(visit_day,first_day)作为retention函数第一个判断条件参数,以此类推,第N个判断条件参数是equals(visit_day,first_day+INTERVAL NDAY),默认第一个判断条件参数的结果为留存,将所有计算的判断条件参数的结果保存至retention函数的结果数组中;
对retention函数的结果数组通过用户标识字段进行GROUP BY聚合,分别统计出第0天至第N天的用户的访问情况;
第N天的留存率是通过计算第N天的访问量除以第0天的访问量;通过该方法计算出第0天至第N天的留存率,保存为用户留存率日表。
6.根据权利要求1所述的一种用户行为分析***,其特征在于,所述用户行为匹配模块,还用于处理有顺序要求的用户行为匹配,所述有顺序要求的用户行为匹配,包括:
配置用户行为事件链;
配置用户的行为对应的模式字符串;
从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,并通过用户标识字段进行GROUP BY聚合操作;
每个用户根据用户标识字段进行GROUP BY聚合操作后,行为标识字段按照行为时间字段的先后顺序进行排序,将排序后的结果转换为模式字符串,模式字符串输入sequenceMatch函数,判断是否有用户行为事件链满足输入的模式,返回用户行为匹配结果字段,统计满足输入模式的用户行为事件链的数量,生成用户行为统计结果字段;
结合用户行为匹配结果字段以及用户行为统计结果字段的结果,生成用户行为匹配数据表。
7.根据权利要求6所述的一种用户行为分析***,其特征在于,所述配置用户行为事件链,包括:将用户的一个或多个动作均转换为单一事件的判断表达式,用户触发事件时,判断该事件是否满足判断表达式,若满足,则用户触发了用户行为事件链中的事件。
8.根据权利要求7所述的一种用户行为分析***,其特征在于,所述配置用户的行为对应的模式字符串,包括:
如用户依次发生了事件A,之后发生了事件B,将上述行为表示为(?1)(?2),其中(?N)代表的是用户行为事件链的判断表达式的索引,(?N)与用户行为事件链的事件一一对应;
用户依次发生事件A,之后发生了一些不关心的动作,再之后发生了事件B的情况,写成(?1).*(?2);
用户依次发生过两次事件A,之后发生了事件B,将上述行为表示为(?1)(?2)(?3),其中(?1)和(?2)分别对应事件A,(?3)对应事件B;
事件和事件之间有时间要求的情况下,在发生A事件后至少m秒后发生了B事件,写成(?1)(?t>m)(?2);发生A事件在L秒内发生了B事件写成(?1)(?t<=L)(?2);在A事件后Q秒后立即发生B事件,写成(?1)(?t==Q)(?2)。
9.根据权利要求1所述的一种用户行为分析***,其特征在于,所述用户行为匹配模块,还用于处理无顺序要求的用户行为匹配,所述无顺序要求的用户行为匹配,包括:
从原始访问日志表中提取出用户标识字段、行为标识字段、行为时间字段,形成初始的用户行为数据集;
对初始的用户行为数据集进行查询,查询每个需要匹配的用户事件是否发生,具备相同的需要匹配的用户事件的用户数据合并到一起形成子查询数据集,每个子查询数据集具有一个唯一的事件索引字段;
通过UNION ALL连接每个子查询数据集,形成事件集;
对事件集按照用户标识进行GROUP BY聚合操作,生成新数据集;
新数据集中事件索引通过groupUniqArray函数聚合后去重,形成事件索引去重聚合数组;
使用hasAll函数,对事件索引去重聚合数组与匹配条件比较,筛选出符合匹配条件的事件索引去重聚合数组,生成用户行为匹配数据表。
10.根据权利要求1所述的一种用户行为分析***,其特征在于,所述用户漏斗分析模块,还用于:从原始访问日志表中提取用户标识字段、行为标识字段、行为时间字段,构成数据集;
数据集对用户标识字段的每个用户的行为标识字段按照行为时间字段的数值从小到大进行排序;
使用windowFunnel函数计算每个用户在给定的滑动时间窗口内连续触发条件链的最大数目,并生成用户最长触发链计数字段;
使用arrayWithConstant函数处理用户最长触发链计数字段,生成一个指定长度的数组,对该指定长度的数组进行行转列生成阶段索引值字段;
根据阶段索引值字段对上述数据集进行GROUP BY聚合操作,并使用count函数,计算出每一阶段用户的总数情况,根据阶段索引值字段进行排序,输出包含阶段索引值和该阶段用户总数的新数据集,保存该新数据集为用户漏斗转化分析表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111602485.8A CN114238360A (zh) | 2021-12-24 | 2021-12-24 | 一种用户行为分析*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111602485.8A CN114238360A (zh) | 2021-12-24 | 2021-12-24 | 一种用户行为分析*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238360A true CN114238360A (zh) | 2022-03-25 |
Family
ID=80762799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111602485.8A Pending CN114238360A (zh) | 2021-12-24 | 2021-12-24 | 一种用户行为分析*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238360A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116070206A (zh) * | 2023-03-28 | 2023-05-05 | 上海观安信息技术股份有限公司 | 一种异常行为检测方法、***、电子设备及存储介质 |
CN116501778A (zh) * | 2023-05-16 | 2023-07-28 | 湖北省珍岛数字智能科技有限公司 | 基于ClickHouse的实时用户行为数据分析方法 |
-
2021
- 2021-12-24 CN CN202111602485.8A patent/CN114238360A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116070206A (zh) * | 2023-03-28 | 2023-05-05 | 上海观安信息技术股份有限公司 | 一种异常行为检测方法、***、电子设备及存储介质 |
CN116501778A (zh) * | 2023-05-16 | 2023-07-28 | 湖北省珍岛数字智能科技有限公司 | 基于ClickHouse的实时用户行为数据分析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662952B (zh) | 一种基于层次的中文文本并行数据挖掘方法 | |
CN103793489B (zh) | 一种在线社交网络中社群话题的发现方法 | |
CN114238360A (zh) | 一种用户行为分析*** | |
CN111740884B (zh) | 一种日志处理方法及电子设备、服务器、存储介质 | |
CN102306176B (zh) | 一种基于数据仓库内在特征的olap关键词查询方法 | |
CN103927398A (zh) | 基于最大频繁项集挖掘的微博炒作群体发现方法 | |
CN103605651A (zh) | 一种基于olap多维分析的数据处理展现方法 | |
WO2008157456A1 (en) | Multidimensional analysis tool for high dimensional data | |
CN107832333B (zh) | 基于分布式处理和dpi数据构建用户网络数据指纹的方法和*** | |
US20130185055A1 (en) | System and Method for Performing Analysis on Information, Such as Social Media | |
JP5588811B2 (ja) | データ分析支援システム及び方法 | |
CN110389950B (zh) | 一种快速运行的大数据清洗方法 | |
CN101944116B (zh) | 一种数据仓库中复杂多维层次的连接和聚集方法 | |
CN109359126B (zh) | 基于业务用户习惯的智能学习查询模型的构建方法及*** | |
CN101916281B (zh) | 并行计算***及去重计数方法 | |
CN114579409A (zh) | 告警方法、装置、设备及存储介质 | |
CN110096646A (zh) | 品类关联信息的生成及其视频推送方法和相关设备 | |
CN111639060A (zh) | 一种火电厂时序数据处理方法、装置、设备及介质 | |
CN114022051A (zh) | 一种指标波动分析方法,存储介质和电子设备 | |
CN111125045B (zh) | 一种轻量级etl处理平台 | |
CN106919566A (zh) | 一种基于海量数据的查询统计方法及*** | |
CN106941419B (zh) | 网络体系结构和网络通信模式的可视分析方法及*** | |
US20160078071A1 (en) | Large scale offline retrieval of machine operational information | |
CN116932321A (zh) | 日志数据监控方法、装置、电子设备及存储介质 | |
Singh et al. | Knowledge based retrieval scheme from big data for aviation industry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |