我想运行如下语句
SELECT date_add('2008-12-31', 1) FROM DUAL
Hive(在 Amazon EMR 上运行)是否有类似的东西?
我想运行如下语句
SELECT date_add('2008-12-31', 1) FROM DUAL
Hive(在 Amazon EMR 上运行)是否有类似的东西?
最好的解决方案是不提表名。
select 1+1;
给出结果 2。但是可怜的 Hive 需要生成 map reduce 才能找到这个!
要在 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"]
链接中有一个很好的工作解决方案(嗯,解决方法),但它很慢,就像你想象的那样。
这个想法是您创建一个带有虚拟字段的表,创建一个内容只是“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;
快速解决方案:
我们可以通过以下查询使用现有表来实现双重功能。
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)。
Hive 现在确实支持此功能,并且也支持许多其他日期功能。
您可以在 hive 中运行如下查询,这将在第一个参数中添加提供的日期的天数。
SELECT DATE_ADD('2019-03-01', 5);