hadoop - 更新 Hive 表中指定时间范围的列值

标签 hadoop hive

Hive表“Employee”包含一列“timerange”,数据为

timerange
1:10
1:13
1:17
1:21
1:26

如果最后一位数字范围介于 (0 & 4) 之间,则数据必须更新为 0。如果最后一位数字范围介于 (5 & 9) 之间,则必须更新为 5。

预期输出是

timerange
1:10
1:10
1:15
1:20
1:25

我该怎么做?

最佳答案

您可以通过内置的字符串操作来做到这一点:

SELECT CASE WHEN SUBSTRING(timerange, LENGTH(timerange)) < "5"
            THEN CONCAT(SUBSTRING(timerange, 1, LENGTH(timerange) - 1), "0")
            ELSE CONCAT(SUBSTRING(timerange, 1, LENGTH(timerange) - 1), "5")
       END AS timerange
FROM Employee;

关于hadoop - 更新 Hive 表中指定时间范围的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023907/

相关文章:

mysql - 将多行转变成多列的一行(就像 R 中的 reshape 类型转换)

hadoop - Hive View 查询性能 : Union tables with different schemas

hadoop - 如何更改配置单元表/数据库的所有权

hadoop - Hadoop 如何在不丢失数据完整性的情况下拆分文件?

apache-spark - 使用 spark sql 创建 hive 表

hadoop - 寻找一种方法来连续处理写入 hdfs 的文件

hadoop - 从 Apache Spark 查询外部配置单元中存在的表

hadoop - Oozie map-reduce 作业永远停留在 PREP 状态

hadoop - 如何使用 Hive、Pig 或 MapReduce 处理 "insert into values"?

hadoop - 如何将日期字符串从 UTC 转换为 HIVE 中的特定时区?