【问题标题】:Lead function in HiveHive 中的主要功能
【发布时间】:2017-12-08 21:07:31
【问题描述】:

我正在尝试检索特定“name2”之后的下一个“name1”。例如,“name2”中“complete2”之后的下一个“name1”是“init3”。这是我使用的查询,但它返回 null。

    date_time                    name1        name2           
    2017-11-23 00:09:46          init1        complete1
    2017-11-23 00:09:48          init2        complete2
    2017-11-23 00:09:50          init3        complete3


   select date_time,name1,name2,
   lead(name1,1) over (order by date_time) as next_word
   from tab1
   where date_time between "2017-11-23 00:00:00" and "2017-11-23 23:59:59" 
   and name2 like "%complete2%";

【问题讨论】:

    标签: hive lead


    【解决方案1】:

    解决办法

    SELECT * 
      FROM (SELECT date_time,name1,name2,
                   LEAD(name1,1) over (ORDER BY date_time) AS next_word
              FROM tab1
             WHERE date_time between "2017-11-23 00:00:00" and "2017-11-23 23:59:59" ) v
     WHERE name2 LIKE "%complete2%";
    

    输出

    2017-11-23 00:09:48 init2   complete2   init3
    

    Hive 在应用 LEAD 之前评估 WHERE 条件。在您的查询中,这将限制 LEAD 应用于没有 LEAD 的一条记录。

    您可以像我在上面所做的那样使用子查询或使用 CTE/ WITH 子句。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-27
      • 2011-05-30
      • 2011-06-18
      • 2018-04-20
      • 2016-08-25
      • 2012-07-18
      • 2011-02-07
      • 1970-01-01
      相关资源
      最近更新 更多