Hive 特殊関数の使用
として
Hive では、WITH AS はサブクエリを使用してクエリの先頭に一時的な式を定義します。その文法構造は次のとおりです。
WITH [表达式名称] AS (
子查询表达式
)
この構造では、[式名] は一時的な式の結果を参照するために使用される名前であり、サブクエリ式は結果セットを一時テーブルとして返す有効な SELECT ステートメントです。
Case (orders という名前のテーブルがあり、注文番号と注文金額の 2 つの列が含まれています。WITH AS を使用して一時的な式を作成し、各注文の合計金額を計算し、それを後続のクエリで使用できます):
WITH order_totals AS (
SELECT order_id, SUM(order_amount) AS total_amount
FROM orders
GROUP BY order_id
)
SELECT order_id, total_amount
FROM order_totals
WHERE total_amount > 1000;
上の例では、最初に order_totals という一時的な式を定義します。これはサブクエリを使用して各注文の合計金額を計算します。次に、後続の SELECT ステートメントで order_totals を使用して、合計金額が 1,000 を超える注文を取得します。このようにして、クエリ ステートメント内で一時的な式を定義および参照できるため、クエリがより簡潔で理解しやすくなります。
複数のサブクエリ ステートメントが必要な場合は、カンマを使用して各ステートメントを接続できます。例は次のとおりです。
with a as (select name,age,sno from table_A),
b as (select * from a where age >= 12 and age <=22),
c as (select * from b where sno = "0001")
select * from c where name = "zs"
キャスト
Hive では、CAST は式または列を指定されたデータ型に変換するために使用される型変換関数です。その構文は次のとおりです。
CAST(表达式 AS 数据类型)
この構造では、式は特定の値、列名、または関数の戻り値になります。データ型には、INT、STRING、BOOLEAN など、Hive でサポートされている任意の有効なデータ型を指定できます。
Case (orders という名前のテーブルがあり、order_id と order_amount の 2 つの列が含まれています。order_amount のデータ型は文字列です。CAST 関数を使用して order_amount を浮動小数点型に変換し、合計計算を実行できます):
SELECT SUM(CAST(order_amount AS FLOAT))
FROM orders;
上記の例では、CAST 関数を使用して order_amount 列を文字列型から浮動小数点型 (FLOAT) に変換し、SUM 関数を使用して変換された列の合計を計算しました。
型変換を実行するときは、ターゲットのデータ型がソースのデータ型と互換性があることを確認してください。互換性がない場合、変換が失敗したりエラーが発生したりする可能性があります。また、強制的な型変換はデータ精度の損失や切り捨てを引き起こす可能性があるため、状況に応じて注意して使用する必要があります。
get_json_object
JSON 文字列から特定の JSON オブジェクトの値を抽出するために使用されます。入力として JSON 文字列と JSON パスを受け取り、そのパスに対応する JSON オブジェクトの値を返します。JSON パスを使用して、抽出する JSON オブジェクトの場所を指定できます。これには、オブジェクトのフィールド名、配列のインデックス、またはワイルドカード文字を指定できます。この機能を使用すると、JSON データの特定の部分を取得して操作し、データの抽出と分析を容易にすることができます。
get_json_object(string json_string,string path)
ケース (log_information という既存の json オブジェクトがあり、時刻、名前、年齢、生年月日などのフィールドが含まれています):
get_json_object(log_information,'$.time') as time
unix_timestamp
unix_timestamp はタイムスタンプの計算に使用されます。タイムスタンプは特定の時刻を表す数値で、通常は 1970 年 1 月 1 日から経過した秒数です。unix_timestamp 関数は、指定された日付と時刻を対応するタイムスタンプに変換できます。
unix_timestamp(time,"yyyyMMddHHmmss") as timestamp
from_unixtime
from_unixtime 関数は、タイムスタンプを対応する日付と時刻に変換するために使用されます。タイムスタンプをパラメータとして受け取り、それを特定の形式の日付と時刻の文字列に変換します。この関数を使用すると、UNIX タイムスタンプを読み取り可能な日付と時刻の形式に変換し、時刻データの理解と処理を向上させることができます。
from_unixtime(timestamp,"yyyy-MM-dd HH:mm:ss") as time
一部のデータを処理するために最近使用された一部の関数は、将来新しい関数や SQL が使用される場合に引き続き更新されます。!!