0

Programming Hive 一书列出了 Hive 中的test in内置函数,但如何使用它并不明显,而且我一直无法找到示例

以下是来自 Programming Hive 的信息:

Return type   Signature                Description
-----------   ---------                -----------
BOOLEAN       test in(val1, val2, …)   Return true if testequals one of the values in the list.

我想知道它是否可以用来表示一个值是否在 Hive 数组中。

例如,如果我进行查询:

hive > select id, mcn from patients limit 2;
id              mcn
68900015        ["7382771"]
68900016        ["8847332","60015163","63605102","63251683"]

我希望能够测试其中一个数字,比如“60015163”是否在给定患者的 mcn 列表中。

不知道该怎么做。

我尝试了许多变体,但都无法解析。以下是两个不起作用的示例:

select id, test in (mcn, "60015163") from patients where id = '68900016';
select id, mcn from patients where id = '68900016' and test mcn in('60015163');
4

1 回答 1

1

函数不是test inbu 而是in。表 6-5test中是一个列名。所以为了知道一个值是否在 Hive 数组中,你需要首先explode在你的数组上使用。您可以创建一个 UDF,而不是分解数组列,正如这里解释的那样http://souravgulati.webs.com/apps/forums/topics/show/8863080-hive-accessing-hive-array-custom-udf-

于 2013-09-26T13:48:41.770 回答