次のようなステートメントを実行したい
SELECT date_add('2008-12-31', 1) FROM DUAL
Hive(Amazon EMRで実行されています)にも同様のものはありますか?
最善の解決策は、テーブル名に言及しないことです。
select 1+1;
結果は2ですが、貧弱なHiveはこれを見つけるためにmap reduceを生成する必要があります!
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"]
リンクには素敵な 実用的な解決策 (まあ、回避策)がありますが、ご想像のとおり遅いです。
アイデアは、ダミーフィールドを持つテーブルを作成し、内容が「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
クエリの「制限1」は、指定された値の複数の発生を回避するために使用されます(kbdjj56454、null)。
Hiveは現在この関数をサポートしており、他の多くの日付関数もサポートしています。
Hiveで以下のようなクエリを実行できます。これにより、最初の引数に提供された日付が追加されます。
SELECT DATE_ADD('2019-03-01', 5);