如何将逗号分隔的数组转换为配置单元中的行

mitkmikd  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(373)

我尝试为表中的每个transactionid提取anchorurl摘要,因此需要将逗号分隔的数组转换为行。
这是在配置单元中运行的,主要使用sql命令(在dbeaver的ddc中)

  1. SELECT eventdate
  2. ,transactionid
  3. ,platform
  4. ,storeid
  5. ,StringTokenizerDelim(anchorurls,",")
  6. over (PARTITION by eventdate,transactionid,platform,storeid)
  7. FROM scribe.tblscriberelatedsearchresults
  8. order by 1,2,3
  9. ;
  10. SELECT eventdate
  11. ,transactionid
  12. ,platform
  13. ,storeid
  14. ,url
  15. FROM scribe.tblscriberelatedsearchresults lateral view explode(split(anchorurls,",")) anchorurls as url
  16. order by 1,2,3
  17. ;
  18. SELECT eventdate
  19. ,transactionid
  20. ,platform
  21. ,storeid
  22. ,split_part(anchorurls,",")
  23. over (PARTITION by eventdate,transactionid,platform,storeid)
  24. FROM scribe.tblscriberelatedsearchresults
  25. order by 1,2,3
  26. ;

从scribe.tblscriberelatedsearchresults按1,2,3顺序选择eventdate、transactionid、platform、storeid、split(anchorurls,“,”);
还有一件事:我发现命令“explode”可以很好地将这些数组取出,但我不知道如何将其他列(如transactionid)也保留在其中(这是连接另一个表的外键)
最初是:

  1. eventdate transactionid platform storeid "url1","url2","url3"

我希望是:

  1. eventdate transactionid platform storeid url1
  2. eventdate transactionid platform storeid url2
  3. eventdate transactionid platform storeid url3

错误消息:
原因:sql错误[42601]:错误:('hy000',“[hy000][cloudera][hiveodbc](35)来自配置单元的错误:错误代码:“40000”错误消息:“编译语句时出错:失败:semanticexception无法将窗口调用分解为组。至少有一个组只能依赖于输入列。还要检查循环依赖项。\n解释错误:无效的函数“split\u part”(35)(sqlexecdirectw)“)位置:13

zf9nrax1

zf9nrax11#

您可以使用“横向视图分解”来获取所需的输出
请按照这个链接用例子详细解释

相关问题