関数は、テーブルの列名のオペランドに対して数学、算術、論理、リレーショナルなどの操作を実行するための特定の目的のために構築されています。
組み込み関数
これらはHiveで既に利用可能な関数です。 まず、アプリケーションの要件を確認する必要があり、その後、この組み込み関数をアプリケーションで使用できます。 これらの関数はアプリケーションで直接呼び出すことができます。
構文と型については、次のセクションで説明します。
HIVEの組み込み関数の種類
- コレクション関数
- 日付関数
- 数学関数
- 条件関数
- 文字列関数
- その他。 関数
コレクション関数:
これらの関数はコレクションに使用されます。 コレクションとは、要素のグループ化を意味し、要素の単一または配列を返すことは、関数名に記載されている戻り値の型に依存します。
戻り値の型 | 関数名 | 説明 |
---|---|---|
INT | サイズ(マップ<K.V>) | これは、マップタイプのコンポーネント番号を取得して与えます |
INT | サイズ(配列<T>) | 配列型の要素番号を取得して与えます |
配列<K> | Map_Keys(Map<K.V>) | これは、入力マップのキーを含む配列を取得して提供します。 ここで配列は順序付けられていません |
配列<V> | Map_Values(Map<K.V>) | これは、入力マップの値を含む配列を取得して提供します。 ここで配列は順序付けられていません |
配列<t> | Sort_Array(配列<T>) | 入力配列を配列と要素の昇順で並べ替えて返します |
日付関数:
これらは、日付操作およびある型から別の型への日付型の変換を実行するために使用されます:
関数名 | 戻り値の型 | 説明 |
---|---|---|
Unix_Timestamp() | BigInt | 現在のUnixタイムスタンプを秒単位で取得します |
To_Date(string timestamp) | string | タイムスタンプ文字列の日付部分を取得して与えます: |
year(string date) | INT | 日付またはタイムスタンプ文字列の年の部分を取得して与えます |
quarter(date/timestamp/string) | INT | 1から1の範囲の日付、タイムスタンプ、または文字列の年の四半期を取得して与えます4 |
month(string date) | INT | これは、日付またはタイムスタンプ文字列の月の部分を与えます |
hour(string date) | INT | タイムスタンプ |
minute(string date) | INT | タイムスタンプの分を取得して与えます |
Date_Sub(string starting date,int days) | string | 取得し、開始日までの日数を減算します |
Current_Date | date | クエリ評価の開始時に現在の日付を取得して提供します |
LAST_day(string date) | string | 日付が属する月の最後の日を取得して与えます |
trunc(string date,string format) | string | フォーマットで指定された単位に切り捨てられた日付を取得します。 サポートされている形式は、 MONTH/MON/MM、YEAR/YYYY/YYです。 |
数学関数:
これらの関数は数学演算に使用されます。 UDFを作成する代わりに、Hiveにはいくつかの組み込みの数学関数があります。
関数名 | 戻り値の型 | 説明 |
---|---|---|
round(DOUBLE X) | DOUBLE | xの丸められたBIGINT値を取得して返します |
round(DOUBLE X,INT d) | DOUBLE | xを小数点以下d桁に丸めて返します |
bround(DOUBLE X) | DOUBLE | HALF_EVEN丸めモードを使用して、xの丸められたBIGINT値をフェッチして返します |
フロア(ダブルX) | BIGINT | x値以下の最大BIGINT値をフェッチして返します |
ceil(DOUBLE a),ceil(DOUBLE a) | BIGINT | x値以上の最小BIGINT値をフェッチして返します |
RAND(),rand(INT seed) | DOUBLE | 0から0まで一様に分布する乱数を取得して返します1 |
条件付き関数:
条件付き値のチェックに使用されるこれらの関数。
関数名 | 戻り値の型 | 説明 |
---|---|---|
if(Boolean testCondition,T valueTrue,T valueFalseOrNull) | T | テスト条件がtrueの場合は値Trueを取得し、それ以外の場合は値FalseまたはNullを与えます。 |
ISNULL(X) | Boolean | xがNULLの場合はtrue、それ以外の場合はfalseを取得します。 |
ISNOTNULL(X) | Boolean | xがNULLでない場合はtrueを返し、そうでない場合はfalseを返します。 |
文字列関数:
文字列操作と文字列操作これらの関数を呼び出すことができます。
関数名 | 戻り値の型 | 説明 |
---|---|---|
reverse(string X) | string | Xの逆の文字列を返します |
rpad(string str,int length,string pad) | string | これはフェッチされ、strを与えます。padはlength(整数値)の長さに右詰めされます) |
rtrim(string X) | string | Xの末尾(右側)からスペースをトリミングした結果の文字列をフェッチして返します。 たとえば、rtrim(‘results’)は’results’になります’ |
space(INT n) | string | それは取得し、nスペースの文字列を与えます。 |
split(STRING str,STRING pat) | array | strをpatの周りに分割します(patは正規表現です)。 |
Str_To_Map(text) | map<String,String> | 二つの区切り文字を使用してテキストをキーと値のペアに分割します。 |
UDF(ユーザー定義関数):
Hiveでは、ユーザーは特定のクライアント要件を満たすために独自の関数を定義できます。 これらはHiveではUdfと呼ばれています。 特定のモジュール用にJavaで記述されたユーザー定義関数。
Udfの中には、アプリケーションフレームワークでのコードの再利用性のために特別に設計されたものがあります。 開発者はこれらの関数をJavaで開発し、それらのUdfをHiveに統合します。
クエリの実行中、開発者はコードを直接使用でき、Udfはユーザー定義のタスクに従って出力を返します。 それはコーディングおよび実行の点では高性能を提供する。
たとえば、文字列のステミングの場合、Hiveには事前定義された関数はありません。 Stem機能が必要な場合はどこでも、HiveでこのStem UDFを直接呼び出すことができます。
ここで、幹機能は、その根の単語から単語を導出することを意味します。 これは、ステミングアルゴリズムが単語”wishing”、”wished”、および”wishes”をルート単語”wish”に減らすようなものです。「このタイプの機能を実行するために、udfをjavaで記述し、Hiveと統合できます。
Udfを書き込むことができるユースケースに応じて、異なる数の入力値と出力値を受け入れて生成します。
UDFの一般的なタイプは、単一の入力値を受け入れ、単一の出力値を生成します。 問合せでUDFが使用されている場合、結果データ・セット内の各行に対してUDFが1回呼び出されます。 他の方法では、値のグループを入力として受け入れ、単一の出力値を返すこともできます。