当前位置: 首页 > 知识库问答 >
问题:

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

楚望
2023-03-14

我想创建一个配置单元UDF函数,它根据一些值返回特定的列名,比如retreivecol(年龄)。如果年龄是20,那么返回在选择查询中使用的列名列表,比如'name、email、fbuserid、friend list‘等。如果年龄小于20,只返回'name'。所以我希望我的配置单元QL查询看起来像

上面的查询只打印列的名称,如'name、email、fbuserid、friendslist'等,而不是将它们视为列名并根据列名进行过滤。

共有1个答案

翟弘
2023-03-14

我不确定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
 类似资料:
  • 我试图使一个函数,对于一个整数序列作为一个数组,可以确定是否可以通过从数组中移除不超过一个元素来获得严格递增的序列。如果可以移除某个元素,则输出为True,否则返回false。我试过了, 它适用于列表, 因为你不能删除任何会导致递增序列的数字。但是,如果列表是 这是真的,因为你可以删除2或3有一个递增的序列。但是,我的函数错误地输出False。

  • 我在HDP 2.6.5平台上使用Hive(1.2.1000.2.6.5.0-292)在一个简单的数据库中工作,该数据库基于以下数据:https://grouplens.org/datasets/movielens/100k/ 。我有4个表,名为:类型、电影、收视率、用户,如下所示: 我想写一个问题,返回哪种类型的电影最常被女性观看,哪种类型的电影最常被男性观看?但对我来说,问题是电影类型所在的电影

  • 我有一个返回dict对象的函数,我想利用pandas/numpy在数据帧的每一行上为该函数执行列操作/向量化的能力。函数的输入在dataframe中指定,我希望函数的输出成为现有dataframe上的新列。下面是一个例子。 期望输出: 我读了这个答案,大部分内容都是这样的,但是当函数返回一个dict对象,其中包含所需的列名作为dict中的键时,我不太明白该怎么做。

  • 问题内容: 我想编写一个查询来检查SQLite数据库中的所有表是否有一条信息,以便简化事后诊断(性能无关紧要)。 我希望编写一个查询,该查询使用sqlite_master表获取表列表,然后在一个查询中对其进行查询: 但是,当尝试执行这种查询样式时,我收到一条错误消息。是否有其他语法允许这样做,还是根本不支持它? 问题答案: SQLite被设计为嵌入式数据库,即与“真实”编程语言一起使用。为了能够使

  • 我使用的是sparkSql 1.6.2(Java API),我必须处理下面的DataFrame,其中包含两列中的值列表: 所需的表为: 我想我必须使用爆炸函数和自定义UDF函数的组合。 null register(“combineUDF”,combineUDF,retSchema); 任何帮助都将非常感谢。 更新:我试图首先实现zip(AttributeName,AttributeValue),所

  • 如何将一个新的列事件添加到数据帧中,该事件将是< code>generate_header的结果?如何添加一行作为列值? 可能我们需要将函数转换为UDF 假设我们有这样的东西 我们想得到这个