创建一个使用可以返回列名的UDF函数的hiveQL查询

时间:2012-09-19 23:21:19

标签: hadoop hive hiveql

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

从User_Data中选择retreivecol(年龄);

上面的查询只打印“name,email,fbuserid,friendslist”等列的名称,而不是将它们视为列名并基于相同的过滤。任何指针都很受欢迎。

1 个答案:

答案 0 :(得分: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