2012-03-20 66 views
13

我想運行的語句像Hive是否有相當於DUAL的東西?

SELECT date_add('2008-12-31', 1) FROM DUAL

不蜂巢(亞馬遜EMR運行)也有類似的東西嗎?

+0

大多數數據庫不需要像DUAL這樣的僞指令,那只是Oracle。那麼你真正的問題是什麼,你想要做日期算術? – schlenk 2012-03-21 02:39:14

+0

@schlenk我只是想要一些東西來運行函數並從中進行調試,因爲我對語言不是很熟悉。 – jbreed 2012-03-21 21:32:37

回答

4

有一個在鏈接一個不錯的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; 
13

最好的解決辦法就是不要提表名。

select 1+1; 

給出結果2.但可憐的蜂巢需要生成地圖縮小找到這個!

+0

尚未:hive> select 1 + 1; FAILED:ParseException行1:14不匹配的輸入''期望從條款 – teu 2015-06-01 20:13:42

+1

中的'1'附近舊帖子,但值得一提的是,這是至少支持版本0.13 – Aaron 2015-06-04 15:20:43

+0

這是最簡單的,它適用於一個場景無權創建表格。 – 2016-02-18 05:39:04

5

要在蜂房,其中有一列一列,你可以做以下的雙象表:

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"] 
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 

Result

「極限1」,在查詢被用來避免指定的值的多次出現(kbdjj56454,空)。

+0

SELECT CONCAT('kbdjj','56454')AS a,null AS b FROM(select * from tbl_name LIMIT 1)t。這個查詢將會更有效率 – 2016-11-12 16:45:57

相關問題