我有这样的数据,
ID time
1 9/6/2016 00:01:00
1 9/6/2016 00:01:30
1 9/6/2016 00:02:00
1 9/6/2016 00:04:30
1 9/6/2016 00:05:30
1 9/6/2016 01:05:30
1 9/6/2016 05:05:30
1 9/6/2016 05:06:30
2 9/6/2016 01:55:00
2 9/6/2016 01:56:29
2 9/6/2016 01:57:31
2 9/6/2016 03:55:00
2 9/6/2016 04:13:00
2 9/6/2016 04:15:21
对于每个 ID,我想将一个名为 flag 的新变量设置为 1 并检查时间的第一个值。从第一个时间值开始,我想检查距离第一个条目 3 分钟以内的条目,并将所有内容设置为 1。一旦时间条目超过 3 分钟,我想将标志变量设置为 2,然后再次设置从那时起 3 分钟内检查条目,这需要为每个 ID 继续。我想为每个 ID 找到 3 分钟的组,这样我就可以为每个 ID 形成集合。
我想要的输出是,
ID time flag
1 9/6/2016 00:01:00 1
1 9/6/2016 00:01:30 1
1 9/6/2016 00:02:00 1
1 9/6/2016 00:04:30 2
1 9/6/2016 00:05:30 2
1 9/6/2016 01:05:30 2
1 9/6/2016 05:05:30 2
1 9/6/2016 05:06:30 2
2 9/6/2016 01:55:00 1
2 9/6/2016 01:56:29 1
2 9/6/2016 01:57:31 1
2 9/6/2016 03:55:00 2
2 9/6/2016 04:13:00 3
2 9/6/2016 04:15:21 3
此处对于 ID 1,标志设置为 1 并一直检查 3 分钟条目,直到第 3 行,一旦超过 3 分钟,它设置为 2 并再次开始检查 3 分钟条目。对于 ID 2 也是如此。
下面是我试过的,
select ID, time, rank() over (order by time) as rank from table_name;
这是对整个表格的排名。我在想,我们可以为每个 ID 对其进行排名,然后调用第一个值并用剩余值减去它,并在此处编写一个子查询。
有没有更有效的方法来做到这一点?我在这里使用 Hive 查询。任何帮助将不胜感激。
最佳答案
你可以看看 sessonize UDF在 DataFu 中。
此外,还有一篇关于可用的不同选项(hive、pig、python)的好文章 here .
关于oracle - 在 Hive SQL 中为每个 ID 查找 3 分钟组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375298/
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我有一个应用需要发送用户事件邀请。当用户邀请friend(用户)参加事件时,如果尚不存在将用户连接到该事件的新记录,则会创建该记录。我的模型由用户、事件和events_user组成。classEventdefinvite(user_id,*args)user_id.eachdo|u|e=EventsUser.find_or_create_by_event_id_and_user_id(self.id,u)e.save!endendend用法Event.first.invite([1,2,3])我不认为以上是完成我的任务的最有效方法。我设想了一种方法,例如Model.find_or_cr
因此,当我遵循MichaelHartl的RubyonRails教程时,我注意到在用户表中,我们为:email属性添加了一个唯一索引,以提高find的效率方法,因此它不会逐行搜索。到目前为止,我们一直在根据情况使用find_by_email和find_by_id进行搜索。然而,我们从未为:id属性设置索引。:id是否自动索引,因为它在默认情况下是唯一的并且本质上是顺序的?或者情况并非如此,我应该为:id搜索添加索引吗? 最佳答案 大多数数据库(包括sqlite,这是RoR中的默认数据库)会自动索引主键,对于RailsMigration
在Ruby中,是否有一种简单的方法可以将n维数组中的每个元素乘以一个数字?这样:[1,2,3,4,5].multiplied_by2==[2,4,6,8,10]和[[1,2,3],[1,2,3]].multiplied_by2==[[2,4,6],[2,4,6]]?(很明显,我编写了multiplied_by函数以区别于*,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。谢谢! 最佳答案 它的长格式等价物是:[1,2,3,4,5].collect{|n|n*2}其实并没有那么复杂。你总是可以使你的multiply_by方法:c
我想找到给定字符串中的所有匹配项,包括重叠匹配项。我怎样才能实现它?#Example"a-b-c-d".???(/\w-\w/)#=>["a-b","b-c","c-d"]expected#Solutionwithoutoverlappedresults"a-b-c-d".scan(/\w-\w/)#=>["a-b","c-d"],but"b-c"ismissing 最佳答案 在积极的前瞻中使用捕获:"a-b-c-d".scan(/(?=(\w-\w))/).flatten#=>["a-b","b-c","c-d"]参见Rubyde
这应该是一个简单的问题,但我找不到任何相关信息。给定一个Ruby中的正则表达式,对于每个匹配项,我需要检索匹配的模式$1、$2,但我还需要匹配位置。我知道=~运算符为我提供了第一个匹配项的位置,而string.scan(/regex/)为我提供了所有匹配模式。如果可能,我需要在同一步骤中获得两个结果。 最佳答案 MatchDatastring.scan(regex)do$1#Patternatfirstposition$2#Patternatsecondposition$~.offset(1)#Startingandendingpo
据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b
如何使用geminstall同时安装多个gem,同时指定我想要的版本?例子:geminstallakami-v1.2.0--ignore-dependenciesgeminstallatomic-v1.1.14--ignore-dependenciesgeminstallaws-s3-v0.6.2--ignore-dependenciesgeminstallbackports-v3.3.0--ignore-dependenciesgeminstallbrendanlim-sms-fu-v1.0.0--ignore-dependenciesgeminstallbuilder-v3.1.3