web-dev-qa-db-ja.com

HiveにはDUALと同等のものはありますか?

次のようなステートメントを実行したい

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

Hive(Amazon EMRで実行されています)にも同様のものはありますか?

18
jbreed
10

最善の解決策は、テーブル名に言及しないことです。

select 1+1;

結果は2ですが、貧弱なHiveはこれを見つけるためにmap reduceを生成する必要があります!

22
Harikrishnan Ck

1つの列と1つの行がある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"]
6
invoketheshell

リンクには素敵な 実用的な解決策 (まあ、回避策)がありますが、ご想像のとおり遅いです。

アイデアは、ダミーフィールドを持つテーブルを作成し、内容が「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;
5
ciuncan

クイックソリューション:

クエリに従うことにより、既存のテーブルを使用して二重の機能を実現できます。

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

結果

クエリの「制限1」は、指定された値の複数の発生を回避するために使用されます(kbdjj56454、null)。

2
Balaji

Hiveは現在この関数をサポートしており、他の多くの日付関数もサポートしています。

Hiveで以下のようなクエリを実行できます。これにより、最初の引数に提供された日付が追加されます。

SELECT DATE_ADD('2019-03-01', 5);

ハイブ日付関数

0
Jainik