1

我想创建一个 Hive UDF 函数,该函数根据某个值返回特定的列名,比如 retreivecol(age)。如果年龄为 20,则返回要在选择查询中使用的列名列表,如 'name、email、fbuserid、friend list ' 等,如果年龄小于 20 则单独返回 'name'。所以我希望我的 HIVE QL 查询看起来像

从 User_Data 中选择 retreivecol(age);

上面的查询只打印列的名称,如“名称、电子邮件、fbuserid、朋友列表”等,而不是将它们视为列名称并基于相同的过滤。任何指针都值得赞赏。

4

1 回答 1

0

我不确定 UDF 是否是执行此操作的正确位置,因为 UDF 只是看到传递给它们的值,它们实际上无法访问整个表结构。

相反,您可以在嵌套表中执行此操作吗?

select name,email,id FROM
(
  select
    name,
    if(age < 20, email, NULL) as email,
    if(age < 20, id, NULL) as id
  FROM mytable

) a
于 2012-09-20T16:26:06.957 回答