在其他列上有条件地从 hive 表中获取最新的列值

RSG

我有一个包含四列(id 字符串、名称字符串、订单字符串、ts 字符串)的 Hive 表“订单”。表的样本数据如下。

-------------------------------------------
id  name    order               ts
------------------------------------------- 
1   abc     completed       2018-04-12 08:15:26     
2   def     received        2018-04-15 06:20:17
3   ghi     processed       2018-04-16 11:36:56
4   jkl     received        2018-04-05 12:23:34
3   ghi     received        2018-03-23 16:43:46
1   abc     processed       2018-03-17 18:39:22
1   abc     received        2018-02-25 20:07:56

Order 列有三种状态已收到 -> 已处理 -> 已完成。一个名字有很多订单,每个订单都有这三个阶段。我需要给定“id”和“name”的最新订单值。这对你来说似乎是一个新手问题,但我坚持这一点。

我尝试编写如下查询,但它们不起作用,我无法直接在“ts”列上使用 max 函数,因为它是字符串格式。请建议一个最好的方法。提前致谢。

我试过的查询

SELECT
ORDER
FROM Orders
WHERE id = '1'
    AND name = 'ghi'
    AND ts = (
        SELECT max(unix_timestamp(ts, 'yyyy-MM-dd HH:mm:SS'))
        FROM Orders
        )

编译语句时出错:FAILED:ParseException 行 2:0 无法识别表达式规范中 'select' 'max' '(' 附近的输入

SELECT
ORDER
FROM Orders
WHERE id = '1'
    AND name = 'ghi'
    AND max(unix_timestamp(ts, 'yyyy-MM-dd HH:mm:SS'))

编译语句时出错:FAILED:SemanticException [错误 10128]:第 1:93 行尚不支持 UDAF 'max' 的位置

select o.order  from Orders o
inner join ( 
    select id, name, order, max(ts) as ts
    from Orders
    group by id, name, order
) ord on d.id = ord.id and o.name = ord.name and o.ts = ord.ts where o.id = '1' and o.name = 'abc'

此查询已执行,但输出不是单个最新订单阶段,而是具有相应最新时间戳的每个订单阶段。

请帮忙。

戈登·利诺夫

对于给定的订单,您需要一行。因此,您可以使用order bylimit

SELECT o.*
FROM Orders o
WHERE id = 1 AND  -- presumably id is a number
     name = 'ghi'
ORDER BY ts DESC
LIMIT 1;

这也应该有最好的性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在其他列上有条件地向数据框列添加常量

获取在其他列上有条件的累积熊猫总和

有条件地在其他变量的同一列中添加带有变量的行

根据熊猫df中其他列的值有条件地填充列

Python:根据其他两列中的值有条件地创建新列

Excel公式-如何使用其他表格中的值有条件地填充列

DAX/Power BI:如何在两列(或更多)列上有条件地过滤不同的行?

有条件地在多列上设置值

根据其他列的值有条件地更改系列的值

在 Pandas 中有条件地用其他值替换列值

熊猫:根据其他列的值有条件地替换值

有条件地按其他列值填充列

如何在其他数据框上添加带有条件的列?

有条件地连接数据框的行,并根据条件处理其他列

pandas - 有条件地用其他行值填充空行值

有条件地用其他数据框中的值替换熊猫中的列值

根据多个其他变量有条件地替换值

用其他行的值有条件地替换NA

如何根据 julia 中的其他列值有条件地在数据框中创建新列

有条件地从其他系列中创建一个系列

有条件地调用Vagrantfile中的其他规定

有条件地求和其他行中的字段

如何有条件地总结组中的其他条目-R

从基于Hive中2列的表中获取最新记录

在DataFrame的同一行中有条件地从其他值有条件地更新新值的方法背后的熊猫式推理

Excel:根据其他列中的值有条件地选择单元格范围

熊猫groupby,在一个列上有条件以填充另一列

在某些列值上有条件地切换列

SQL在其他行上有条件地显示