我想运行像
这样的陈述 SELECT date_add('2008-12-31', 1) FROM DUAL
Hive(在Amazon EMR上运行)是否有类似的东西?
答案 0 :(得分:22)
最佳解决方案更不用说表名了。
select 1+1;
给出结果2.但是可怜的Hive需要产生map reduce才能找到它!
答案 1 :(得分:10)
答案 2 :(得分:5)
链接中有一个很好的working solution(好的,解决方法),但是你可能想象它很慢。
这个想法是你创建一个带有虚拟字段的表,创建一个内容只是' X'的文本文件,将该文本加载到该表中。中提琴。
CREATE TABLE dual (dummy STRING);
load data local inpath '/path/to/textfile/dual.txt' overwrite into table dual;
SELECT date_add('2008-12-31', 1) from dual;
答案 3 :(得分:5)
要在hive中创建一个双列表,其中有一列和一行,您可以执行以下操作:
create table dual (x int);
insert into table dual select count(*)+1 as x from dual;
测试表达式:
select split('3,2,1','\\,') as my_new_array from dual;
输出:
["3","2","1"]
答案 4 :(得分:2)
快速解决方案:
我们可以通过以下查询使用现有表来实现双重功能。
SELECT date_add('2008-12-31', 1) FROM <Any Existing Table> LIMIT 1
例如:
SELECT CONCAT('kbdjj','56454') AS a, null AS b FROM tbl_name LIMIT 1
查询中的“limit 1”用于避免多次出现指定值(kbdjj56454,null)。
答案 5 :(得分:0)
Hive现在支持此功能,也支持许多其他日期功能。
您可以在配置单元中运行以下查询,这将在第一个参数中添加提供的日期天数。
SELECT DATE_ADD('2019-03-01', 5);