在Hive中,可以使用ARRAY_FILTER
函數來實現數組元素的過濾
假設我們有一個名為my_table
的表,其中包含一個名為my_array
的數組列,我們想要過濾掉數組中所有小于10的元素??梢允褂靡韵虏樵儯?/p>
SELECT
my_array
FROM
my_table
LATERAL VIEW
explode(my_array) exploded_array AS element
WHERE
element >= 10;
在這個查詢中,我們首先使用LATERAL VIEW
將my_array
列展開為一個行集,其中每個元素都是一個單獨的行。然后,我們使用WHERE
子句過濾出大于等于10的元素。最后,查詢結果將包含過濾后的數組。
如果你想要在原始數組中保留過濾后的元素,可以使用ARRAY_AGG
函數將過濾后的元素重新組合成一個數組:
SELECT
ARRAY_AGG(element) AS filtered_array
FROM
my_table
LATERAL VIEW
explode(my_array) exploded_array AS element
WHERE
element >= 10;
這個查詢將返回一個包含過濾后元素的新數組。