Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 如何在配置单元堆栈命令中设置十进制值_Hive_Hiveql - Fatal编程技术网

Hive 如何在配置单元堆栈命令中设置十进制值

Hive 如何在配置单元堆栈命令中设置十进制值,hive,hiveql,Hive,Hiveql,我正在尝试执行低于配置单元堆栈的命令 选择堆栈(2,'A',10.1,'2015-01-01','B',20.123,'2016-01-01') 但它给了我错误,因为十进制精度不一致,下面是错误信息 Error: org.apache.spark.sql.AnalysisException: cannot resolve 'stack(2, 'A', 10.1BD, '2015-01-01', 'B', 20.123BD, '2016-01-01')' due to data type mism

我正在尝试执行低于配置单元堆栈的命令

选择堆栈(2,'A',10.1,'2015-01-01','B',20.123,'2016-01-01')

但它给了我错误,因为十进制精度不一致,下面是错误信息

Error: org.apache.spark.sql.AnalysisException: cannot resolve 'stack(2, 'A', 10.1BD, '2015-01-01', 'B', 20.123BD, '2016-01-01')' due to data type mismatch: Argument 2 (decimal(3,1)) != Argument 5 (decimal(5,3)); line 1 pos 7;
'Project [unresolvedalias(stack(2, A, 10.1, 2015-01-01, B, 20.123, 2016-01-01), None)]
+- OneRowRelation (state=,code=0)

以所需的精度和比例显式转换为双精度或十进制:

hive> select stack(2,'A',cast(10.1 as double), '2015-01-01','B',cast(20.123 as double), '2016-01-01');
OK
A       10.1    2015-01-01
B       20.123  2016-01-01
Time taken: 2.818 seconds, Fetched: 2 row(s)

hive> select stack(2,'A',cast(10.1 as decimal(5,3)), '2015-01-01','B',cast(20.123 as decimal(5,3)), '2016-01-01');
OK
A       10.1    2015-01-01
B       20.123  2016-01-01
Time taken: 0.066 seconds, Fetched: 2 row(s)

向我们展示完整的hql。它在别名中显示错误