7. Hiveシリーズの機能

# 查看系统自带的函数
show functions;
# 显示自带的函数的用法
desc function upper;
# 详细显示自带的函数的用法
desc function extended upper;
# 如果员工的 comm 为 NULL,则用-1 代替
select comm,nvl(comm, -1) from emp;
# CASE WHEN THEN ELSE END
select dept_id,
 sum(case sex when '男' then 1 else 0 end) male_count,
 sum(case sex when '女' then 1 else 0 end) female_count
from emp_sex group by dept_id;
# 行转列 CONCAT_WS(separator, str1, str2,...):它是一个特殊形式的CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串
SELECT t1.c_b, CONCAT_WS("|",collect_set(t1.name))
FROM (SELECT NAME, CONCAT_WS(',',constellation,blood_type) c_b FROM person_info) t1 GROUP BY t1.c_b
# 列转行 EXPLODE(col):将 hive 一列中复杂的 Array 或者 Map 结构拆分成多行。
# LATERAL VIEW用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias 解释:用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合
SELECT movie, category_name FROM
movie_info
lateral VIEW explode(split(category,",")) movie_info_tmp AS category_name;

カスタム関数

  • Hive には max/min などのいくつかの関数が付属していますが、数には限りがあり、UDF をカスタマイズすることで簡単に拡張できます。
  • Hive が提供する組み込み関数では業務処理のニーズを満たせない場合は、ユーザー定義関数 (UDF: ユーザー定義関数) の使用を検討できます。
  • ユーザ定義関数の分類により、以下の3種類に分類されます。
    • UDF (ユーザー定義関数)
      1 つの入力と 1 つの出力
    • UDAF (ユーザー定義集計関数)
      集計関数、複数の入力と 1 つの出力、次のようなもの: count/max/min
    • UDTF (ユーザー定義テーブル生成関数) には、
      1 つの入力と複数の出力があります (横方向ビューのexplode() など)。
  • 実装方法はちょっとだけなので自分で使うときに調べてください

おすすめ

転載: blog.csdn.net/SJshenjian/article/details/131862032