草庐IT

oracle - 在 Hive SQL 中为每个 ID 查找 3 分钟组

coder 2024-01-10 原文

我有这样的数据,

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/

有关oracle - 在 Hive SQL 中为每个 ID 查找 3 分钟组的更多相关文章

  1. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

  2. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个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

  3. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩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

  4. ruby-on-rails - 在 Rails 中更高效地查找或创建多条记录 - 2

    我有一个应用需要发送用户事件邀请。当用户邀请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

  5. ruby - Rails -- :id attribute? 所需的数据库索引 - 2

    因此,当我遵循MichaelHartl的RubyonRails教程时,我注意到在用户表中,我们为:email属性添加了一个唯一索引,以提高find的效率方法,因此它不会逐行搜索。到目前为止,我们一直在根据情况使用find_by_email和find_by_id进行搜索。然而,我们从未为:id属性设置索引。:id是否自动索引,因为它在默认情况下是唯一的并且本质上是顺序的?或者情况并非如此,我应该为:id搜索添加索引吗? 最佳答案 大多数数据库(包括sqlite,这是RoR中的默认数据库)会自动索引主键,对于RailsMigration

  6. ruby - 将n维数组的每个元素乘以Ruby中的数字 - 2

    在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

  7. ruby - 查找重叠的正则表达式匹配项 - 2

    我想找到给定字符串中的所有匹配项,包括重叠匹配项。我怎样才能实现它?#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

  8. ruby - 在 Ruby 中查找多个正则表达式匹配的模式和位置 - 2

    这应该是一个简单的问题,但我找不到任何相关信息。给定一个Ruby中的正则表达式,对于每个匹配项,我需要检索匹配的模式$1、$2,但我还需要匹配位置。我知道=~运算符为我提供了第一个匹配项的位置,而string.scan(/regex/)为我提供了所有匹配模式。如果可能,我需要在同一步骤中获得两个结果。 最佳答案 MatchDatastring.scan(regex)do$1#Patternatfirstposition$2#Patternatsecondposition$~.offset(1)#Startingandendingpo

  9. ruby - 每个页面上的 Jekyll 分页 - 2

    据我们所知,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

  10. ruby - `gem install` 多个 gem 的语法是什么,为每个 gem 指定版本? - 2

    如何使用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

随机推荐