Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Sql 配置单元中的第一个值(Oracle)等效值_Sql_Oracle_Hive_Analytic Functions - Fatal编程技术网

Sql 配置单元中的第一个值(Oracle)等效值

Sql 配置单元中的第一个值(Oracle)等效值,sql,oracle,hive,analytic-functions,Sql,Oracle,Hive,Analytic Functions,我想为以下内容创建配置单元查询 insert into tempTableName select distinct col_a , first_value(col_b) over (partition by col_a order by nvl(col_c,0) desc, length(col_b) asc, col_b asc) from tableA 因为配置单元不支持第一个值。我想知道在第一个值函数的简单查

我想为以下内容创建配置单元查询

insert into  tempTableName  
select distinct col_a
        ,  first_value(col_b)  
            over (partition by col_a 
            order by nvl(col_c,0) desc, length(col_b) asc, col_b asc) 
from tableA
因为配置单元不支持第一个值。我想知道在第一个值函数的简单查询中什么是等价的。
任何建议???

hive0.11
都支持
第一个值

但根据,存在一个未解决的问题,即在
第一个\u值中不能有多个
ORDER BY
列。您尚未报告所遇到的错误,但如果
失败:基于SemanticException Range的窗口框架只能有1个排序键
,则必须修改
ORDER BY


编辑:如果您没有使用
HIVE 0.11
,那么我建议为
第一个值安装
UDF
。我想这是最简单的方法。您可能想看看。

我对这里的oracle语义不太熟悉,但这不只是一个group by和arg min吗?配置单元中的结构按字段的顺序进行比较,因此可以执行以下操作:

select col_a,
min(
  named_struct(
    'col_c', -coalesce(col_c, 0),
    'len' , length(col_b),
    'col_b', col_b
  )
).col_b
from tableA
group by col_a

我没有使用0.11。我如何在一个没有任何函数的简单查询中写下这句话呢。您可以安装一个
UDF
并使用它,因为通过的SQL引擎使用Hive SQL的兴趣越来越大,值得注意的是Spark确实支持
first\u value()