写出Hive中split、coalesce及collect_list函数的用法 ?
- split函数
split
函数用于将字符串按照指定的分隔符拆分成数组。它的语法如下:
split(string str, string pattern)
其中,str
是要拆分的字符串,pattern
是分隔符的模式。
例子:
假设有一个名为 users
的表,其中有一个名为 email
的列,包含用户的电子邮件地址。如果我们想将每个电子邮件地址拆分成单独的地址,可以使用 split
函数:
SELECT split(email, '@') AS email_parts FROM users;
这将返回一个包含两个元素的数组:电子邮件地址的前缀和后缀。
- coalesce函数
coalesce
函数用于返回参数列表中的第一个非空值。它的语法如下:
coalesce(expression1, expression2, ..., expressionN)
当参数列表中的某个表达式为 NULL 时,coalesce
函数将返回下一个表达式的值,直到找到第一个非空值为止。如果没有非空值,则返回 NULL。
例子:
假设有一个名为 products
的表,其中有一个名为 price
的列和一个名为 discounted_price
的列。如果某个产品没有折扣价格(即 discounted_price
为 NULL),我们想使用正常的价格,可以使用 coalesce
函数:
SELECT coalesce(discounted_price, price) AS final_price FROM products;
这将返回 discounted_price
或 price
中的非空值作为最终价格。
- collect_list函数
collect_list
函数用于将多行数据中的某一列值聚合在一起形成一个数组。它的语法如下:
collect_list(col)
其中,col
是要聚合的列名。
例子:
假设有一个名为 orders
的表,其中有一个名为 product_id
的列,表示订单中的产品。我们想将所有订单中的产品 ID 聚合到一个数组中,可以使用 collect_list
函数:
SELECT collect_list(product_id) AS product_ids FROM orders;
这将返回一个包含所有产品 ID 的数组。