【发布时间】:2016-08-29 12:46:05
【问题描述】:
我在 Hive 工作。到目前为止,它真的很棒,但我在查询方面遇到了问题。
我有两个名为“marked”和“data”的表,我想通过一个查询从这两个表中提取数据。
首先,我想从“marked”表中提取mindate,并计算mindate(从“marked”获得)和当前日期之间的“data”表中的条目。
所以我想得到一个结果,其中包含用户ID、mindate 以及在mindate 和当前日期之间的另一个表的此用户ID 的出现次数。 我从几个小时开始就尝试获取此查询,但我知道它们不起作用。谁能帮帮我?
非常感谢!
更新:
对不起,我昨天有点赶时间。怪我忘记了一些细节。
关于架构:
-
标记的表格只有一些列。总共 8 个。这是这个表的架构:
"name": "Datetime", "type": "long", "logicalType": "timestamp-millis", "name": "Hour", "type": "string", "name": "UserId64", "type": "long" "name": "MemberId", "type": "int" "name": "SegmentId", "type": "int" "name": "IsDailyUnique", "type": "boolean" "name": "IsMonthlyUnique", "type": "boolean" "name": "Value", "type": "int" -
另一个名为 data 的表的架构有点困难,因为该表包含 100 多个列。为简单起见,我只概述了重要的列:
"name": "Datetime", "type": "long", "logicalType": "timestamp-millis", "name": "Hour", "type": "string", "name": "UserId64", "type": "long" "type": "enum", "name": "EventType", "symbols": ["IMP", "CLICK", "PC_CONV", "PV_CONV"]
因此,如果我进行如下查询,我会得到一个包含结果的列表
选择时间戳(日期时间),小时,userid64,segmentid,isdailyunique, ismonthlyunique,日期从标记的地方 userid64 = 8012570064195370898 而segmentid = 1878696 order by datetime desc;
结果表包含数据。现在我想使用最早获得的日期进行进一步的查询。
如果我们去表数据做如下查询
选择时间戳(日期时间),auctionid64,小时,事件类型, mediacostdollarscpm、buyerspend、buyerbid、ecp、eap、isimp、isclick、 userid64、sellerid、publisherid、siteid、sitedomain、advertisingrid、 广告频率、广告频率、campaigngroupid、campaignid、 creativeid, creativefreq, creativerec, pixelid, dealid, dealtype, custommodelid、custommodellastmodified、leafname、数据中的日期时间 其中 userid64 = 8012570064195370898 和 adsid = 327758 订单 按日期时间描述;
你会得到如下所示的结果
2016-08-09 19:33:45.0 5908114946988383281 17 PV_CONV
2016-08-07 19:17:13.0 5908114946988383281 17 IMP
2016-08-07 19:16:29.0 5454485145188351263 17 IMP
2016-08-07 18:52:40.0 1074433759230515153 16 IMP
2016-08-07 18:52:40.0 6991642005216308404 16 IMP
2016-08-07 18:52:13.0 5024645171257244072 16 IMP
2016-08-07 18:51:55.0 5371107932239703086 16 IMP
2016-08-07 18:51:55.0 7321752276741166764 16 IMP
2016-08-07 18:51:01.0 3459181835067844898 16 IMP
2016-08-07 18:50:42.0 6208818658549255015 16 IMP
2016-08-07 18:50:41.0 5373958128201701132 16 IMP
2016-08-07 14:34:07.0 8393280749656213703 12 IMP
这里的导入行是第二行。后面有一个叫“PV_CONV”的标志。
我想要什么:
我想要一个查询,它会为我生成一个包含
的表- 用户名
- 标记表的最小日期
- 包含 event_type "IMP" 的表数据的最大日期
- 标记日期与表格数据最大日期的时间差
- 以及表格数据的其他一些列。
有没有机会在不创建额外表格的情况下获得这个? 一切顺利,谢谢 彼得
【问题讨论】:
-
请发布表架构、示例数据、预期结果和您尝试过的查询。
标签: hive