首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用蜂巢宏减少样板

如何使用蜂巢宏减少样板
EN

Stack Overflow用户
提问于 2021-10-14 20:11:57
回答 1查看 46关注 0票数 0

我的Hive代码有一个重复模式,后面有15个复杂的视图。

下面,为了简洁起见,我简化了爆炸代码:

代码语言:javascript
复制
SELECT a,b,c,d FROM t
LATERAL VIEW explode(split(regexp(s,'A',''),',')) a as a
LATERAL VIEW explode(split(regexp(s,'B',''),',')) b as b
LATERAL VIEW explode(split(regexp(s,'C',''),',')) c as c
LATERAL VIEW explode(split(regexp(s,'D',''),',')) d as d
...

我试着使用宏来消除输入15倍的复杂爆炸表达式,这是非常相似的(只有一个参数不同)。

我创建了以下宏:

代码语言:javascript
复制
CREATE TEMPORARY MACRO explode_me(s string, p string)
  explode(split(regexp(s,p,''),','))
;
SELECT a  FROM t
LATERAL VIEW explode_me(s,'A') a as a

我发现了一个错误:

SemanticException错误10081:在SELECT子句之外不支持UDTF,表达式中也不支持UDTF

我明白这个错误。我不知道如何使我的代码更紧凑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 17:13:36

我能够解决这个问题,方法是从宏体中移除body (),并且只在宏中保留split()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69576832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档