我正在编写一个配置单元查询来检查每个用户标识的下一条记录。例如:对于用户ID U1,如果下一条记录的密钥相同(K1),则将该行的classify列更新为手动匹配,但如果用户的下一条记录具有不同的密钥则离开它是空白的
userid category timestamp key classify
U1 imported 04-02-2016 05:02:01 k1 NULL
U2 deleted 04-02-2016 05:00:00 k3 NULL
U1 matched 04-02-2016 04:49:00 k1 **manual match**
U4 imported 04-02-2016 04:50:01 k1 NULL
U3 matched 04-02-2016 04:48:00 k2 NULL
U4 matched 04-02-2016 04:47:00 k4 **NULL**
我想从这个
开始select LEAD(description) OVER (PARTITION BY userid order by timestamp ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) from adithya.smartmatching where subcategory = 'SmartExpense Imported'
然后为classify列实现一个case条件。但我收到上述代码本身的错误。有人可以帮帮我吗?
获取错误:您的查询有以下错误:
您的查询有以下错误: 编译语句时出错:FAILED:SemanticException无法将窗口调用分解为组。至少有一个组必须仅依赖于输入列。还要检查循环依赖性。基础错误:期望函数LEAD的左窗口边界((TOK_TABLE_OR_COL描述))窗口规范= [PartitioningSpec = [partitionColumns = [(TOK_TABLE_OR_COL userid)] orderColumns = [(TOK_TABLE_OR_COL timestamp)ASC]]窗口(start = currentRow,end =范围(1跟随))] _Wcol0是无界的。发现:0
由于
答案 0 :(得分:1)
您是否在表adithya.smartmatching中创建了分区。如果是,那么您不能使用分区依据 从adithya.smartmatching中选择LEAD(描述)OVER( PARTITION BY 用户ID顺序,按时间戳排列当前行和1后续行),其中subategory =' SmartExpense Imported'
删除分区后(分区)其工作。使用 从adithya.smartmatching中选择LEAD(描述)OVER(PARTITION(userid)顺序,按时间戳排列当前行和1跟随),其中subategory =' SmartExpense Imported'