我尝试为表中的每个transactionid提取anchorurl摘要,因此需要将逗号分隔的数组转换为行。
这是在配置单元中运行的,主要使用sql命令(在dbeaver的ddc中)
SELECT eventdate
,transactionid
,platform
,storeid
,StringTokenizerDelim(anchorurls,",")
over (PARTITION by eventdate,transactionid,platform,storeid)
FROM scribe.tblscriberelatedsearchresults
order by 1,2,3
;
SELECT eventdate
,transactionid
,platform
,storeid
,url
FROM scribe.tblscriberelatedsearchresults lateral view explode(split(anchorurls,",")) anchorurls as url
order by 1,2,3
;
SELECT eventdate
,transactionid
,platform
,storeid
,split_part(anchorurls,",")
over (PARTITION by eventdate,transactionid,platform,storeid)
FROM scribe.tblscriberelatedsearchresults
order by 1,2,3
;
从scribe.tblscriberelatedsearchresults按1,2,3顺序选择eventdate、transactionid、platform、storeid、split(anchorurls,“,”);
还有一件事:我发现命令“explode”可以很好地将这些数组取出,但我不知道如何将其他列(如transactionid)也保留在其中(这是连接另一个表的外键)
最初是:
eventdate transactionid platform storeid "url1","url2","url3"
我希望是:
eventdate transactionid platform storeid url1
eventdate transactionid platform storeid url2
eventdate transactionid platform storeid url3
错误消息:
原因:sql错误[42601]:错误:('hy000',“[hy000][cloudera][hiveodbc](35)来自配置单元的错误:错误代码:“40000”错误消息:“编译语句时出错:失败:semanticexception无法将窗口调用分解为组。至少有一个组只能依赖于输入列。还要检查循环依赖项。\n解释错误:无效的函数“split\u part”(35)(sqlexecdirectw)“)位置:13
1条答案
按热度按时间zf9nrax11#
您可以使用“横向视图分解”来获取所需的输出
请按照这个链接用例子详细解释