2)第二个例子是一个流,它在会话结束后(即5分钟后没有来自用户的数据)为每个会话输出一个事件。这个事件有userId、start_timestamp、end_timestamp和event_count
这在运动分析中是可能的吗?
下面是一个使用Apache Spark进行此操作的示例:https://docs.cloud.databricks.com/docs/latest/databricks_guide/07%20spark%20streaming/applications/01%20sessionization.html
您可以通过创建以下逻辑使用Drools来完成此操作:
类型:
package com.test;
import java.util.List;
declare EventA
@role( event )
userId:String;
seen:boolean;
end
declare SessionStart
userId: String;
timestamp: long;
events: List;
end
declare SessionEnd
userId: String;
timestamp: long;
numOfEvents: int;
end
declare SessionNotification
userId: String;
currentNumOfEvents: int;
end
规则:
package com.test;
import java.util.List;
import java.util.ArrayList;
rule "Start session"
when
// for any EventA
$a : EventA() from entry-point events
// check session is not started for this userId
not (exists(SessionStart(userId == $a.userId)))
then
modify($a){setSeen(true);}
List events = new ArrayList();
events.add($a);
insert(new SessionStart($a.getUserId(), System.currentTimeMillis(), events));
end
rule "join session"
when
// for every new EventA
$a : EventA(seen == false) from entry-point events
// get event's session
$session: SessionStart(userId == $a.userId)
then
$session.getEvents().add($a);
insertLogical(new SessionNotification($a.getUserId(), $session.getEvents().size()));
modify($a) {setSeen(true);}
end
rule "End session"
// if session timed out, clean up first
salience 5
when
// for any EventA
$a : EventA() from entry-point events
// check there is no following EventA with same userId within 30 seconds
not (exists(EventA(this != $a, userId == $a.userId, this after[0, 30s] $a)
from entry-point events))
// get event's session
$session: SessionStart(userId == $a.userId)
then
insertLogical(new SessionEnd($a.getUserId(), System.currentTimeMillis(),
$session.getEvents().size()));
// cleanup
for (Object $x : $session.getEvents())
delete($x);
delete($session);
end
本文向大家介绍C#构建分页应用的方法分析,包括了C#构建分页应用的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#构建分页应用的方法。分享给大家供大家参考,具体如下: 1、SQL语句 2、后台方法 注意:DBHelper.GetReader()方法、TranToList()方法等请自己完善。 一些计算方法 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#字符串操作技巧总结
本文向大家介绍gradle 分析构建,包括了gradle 分析构建的使用技巧和注意事项,需要的朋友参考一下 示例 在开始调整Gradle构建的性能之前,您应该建立基准并确定构建的哪些部分花费最多的时间。为此,您可以通过将--profile参数添加到Gradle命令来对构建进行概要分析: 构建完成后,您将在下./build/reports/profile/看到构建的HTML配置文件报告,如下所示:
功能介绍 获取本APP定制分析中实时分析报告的数据,本报告是定制分析,支持维度和指标的自由组合,请详细阅读本文档说明了解使用详情。 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey 请求参数 此处仅列本接口特有参数,公共参数请参考报告级API说明 获取表格数据 参数名 参数类型 是否必须 描述 method string
我向web服务添加了以下依赖项 现在我的代码中出现了以下问题,不知道哪里出了问题。在添加这个依赖项之前,它工作得很好。 下面是完整的pom 我不明白哪里出了问题
本文向大家介绍Android定时器和Handler用法实例分析,包括了Android定时器和Handler用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下: 一、环境: 主机:WIN8 开发环境:Android Studio 二、定时器使用示例: 初始化: 创建定时器线程: 新建任务: 三、定时器和Ha
本文向大家介绍Symfony2 session用法实例分析,包括了Symfony2 session用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Symfony2 session用法。分享给大家供大家参考,具体如下: Symfony自带有session的方法,以前老版本2.2及以前的session用法是 后来Symfony2.3开始$this->getRequest()方法被废