注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Spark SQL リファレンス

このセクションでは、Spark SQL によるデータ変換の記述と、ほかの種類の SQL クエリの記述との主な違いについて説明します。また、利用可能な Spark SQL 関数の一覧も掲載しています。

資料を探す際は、Spark SQL が実際には HiveQL 方言に基づいていることに留意してください。HiveQL の詳細情報はオンラインで確認できます。

はじめに

基本的なクエリ形式

SQL データ変換クエリは、必ずテーブルを作成する必要があります。SQL クエリの一般的な形式は次のとおりです。

Copied!
1 CREATE TABLE _____ AS SELECT _____

ステートメントの末尾にセミコロンを含めないでください。 セミコロンを含めるとエラーになります。

コメントの構文

SQL コードには、次のようにコメントを含めることができます。

Copied!
1 2 3 4 5 -- 次の構文で -- コメントを作成できます /* 次の構文でもコメントを作成 できます */

データセットを参照する

データセットを参照するには、データセットのパスをバッククォートで囲んで指定します。

Copied!
1 2 3 4 5 6 7 8 CREATE TABLE `/path/to/target/dataset` AS SELECT * FROM `/path/to/source/dataset` -- 別の構文 CREATE TABLE `/path/to/target/dataset` AS ( SELECT * FROM `/path/to/source/dataset` )

データセット名では大文字と小文字が区別されます。

列を参照する

データセットの特定の列を参照するには、列名を指定します。

Copied!
1 SELECT Name FROM `/path/to/source/dataset`

列名では大文字と小文字が区別されます。

派生列とエイリアス

派生列は、データセットの列に対して関数を呼び出した結果です。派生列には必ずエイリアスを定義する必要があります。

Copied!
1 SELECT Sum(Val) AS Total FROM `/path/to/source/dataset`

次のクエリはエラーになります。

Copied!
1 SELECT Sum(Val) FROM `/path/to/source/dataset`

エイリアス名では大文字と小文字が区別されます。

SQL 句内の派生列

WHERE 句と GROUP BY 句では、エイリアスを使用できません。そのため、WHERE 句または GROUP BY 句では、実際の関数とデータセットの列を参照する必要があります。

Copied!
1 2 3 4 5 SELECT Lower(Name) AS LowercaseName FROM `/path/to/source/dataset` WHERE Lower(Name) = "sara" SELECT Lower(Name) AS LowercaseName, Sum(Val) AS Total FROM `/path/to/source/dataset` GROUP BY Lower(Name)

ORDER BY 句と HAVING 句では、エイリアスを使用できます。そのため、次のクエリはいずれも動作します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -- 次の2つのクエリはどちらも有効です SELECT Lower(Name) AS LowercaseName, Sum(Val) AS Total FROM `/path/to/source/dataset` GROUP BY Lower(Name) ORDER BY Total SELECT Lower(Name) AS LowercaseName, Sum(Val) AS Total FROM `/path/to/source/dataset` GROUP BY Lower(Name) ORDER BY Sum(Val) -- 次の2つのクエリはどちらも有効です SELECT Lower(Name) AS LowercaseName, Sum(Val) AS Total FROM `/path/to/source/dataset` GROUP BY Lower(Name) HAVING Total > 100 SELECT Lower(Name) AS LowercaseName, Sum(Val) AS Total FROM `/path/to/source/dataset` GROUP BY Lower(Name) HAVING Sum(Val) > 100

型変換

式をキャストして、あるデータ型から別のデータ型に変換できます。キャストの構文は次のとおりです。

Copied!
1 CAST(expr AS <TYPE>)

この構文では、expr はキャストする式を表し、<TYPE> は式の変換先のデータ型を表します。CAST(expr AS <TYPE>) に成功しなかった場合は、null が返されます。<TYPE> に指定できる値は次のとおりです。

  • boolean
  • tinyint
  • smallint
  • int
  • bigint
  • float
  • double
  • decimal
  • date
  • timestamp
  • binary
  • string

日付の書式を設定する

日付の値の書式を変更したり、文字列を日付形式に変換したりする場合があります。date は yyyy-MM-dd 形式で、時刻の要素は含まれません。CAST 関数と利用可能な日時関数を組み合わせて、文字列を日付に変換できます。簡単な例をいくつか示します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 -- 'yyyy-MM-dd' 形式の文字列を日付に変換します CAST('2016-07-30' AS DATE) -- 'yyyy-MM-dd' 形式の文字列をタイムスタンプに変換します(タイムスタンプは指定された日付の午前0時に基づきます) CAST('2016-07-30' AS TIMESTAMP) -- 'ddMMyyyy' 形式の日付文字列を日付に変換します TO_DATE(CAST(UNIX_TIMESTAMP('07302016', 'MMddyyyy') AS TIMESTAMP)) -- 'ddMMyyyy HH:mm:ss' 形式のタイムスタンプ文字列を日付のみに変換します CAST('2016-07-30 11:29:27' AS DATE) -- ISO 8601 タイムスタンプから日付のみを抽出します TO_DATE('2016-07-30T11:29:27.000+00:00') -- 'yyyy-MM-dd HH:mm:ss' 形式のタイムスタンプから日付のみを抽出します TO_DATE('2016-07-30 11:29:27')

文字列が日付またはタイムスタンプの形式でない場合、その文字列を日付にキャストすることはできません。そのため、CAST('20160730' AS DATE) のような式は null を返します。

集計関数

関数説明
APPROX_COUNT_DISTINCTグループ内の一意の項目の近似件数を返します。
AVGグループ内の値の平均を返します。
COLLECT_LIST重複を含むオブジェクトのリストを返します。
COLLECT_SET重複する要素を除いたオブジェクトの集合を返します。
CORR2列のピアソンの相関係数を返します。
COUNTグループ内の項目の件数を返します。
COVAR_POP2列の母共分散を返します。
COVAR_SAMP2列の標本共分散を返します。
FIRSTグループ内の最初の値を返します。
GROUPINGGROUP BY リスト内の指定した列が集計されているかどうかを示します。
KURTOSISグループ内の値の尖度を返します。
LASTグループ内の最後の値を返します。
MAXグループ内の式の最大値を返します。
MEANグループ内の値の平均を返します。
MINグループ内の式の最小値を返します。
SKEWNESSグループ内の値の歪度を返します。
STDDEVstddev_samp のエイリアスです。
STDDEV_POPグループ内の式の母標準偏差を返します。
STDDEV_SAMPグループ内の式の標本標準偏差を返します。
SUM式のすべての値の合計を返します。
VARIANCEグループ内の値の不偏分散を返します。
VAR_POPグループ内の値の母分散を返します。
VAR_SAMPグループ内の値の不偏分散を返します。

APPROX_COUNT_DISTINCT

説明: 集計関数:グループ内の一意の項目の近似件数を返します。rsd が指定されていない場合、許容される最大推定誤差のデフォルトは0.05です。

シグネチャ:

Copied!
1 2 APPROXCOUNTDISTINCT(Column e) APPROXCOUNTDISTINCT(Column e, double rsd)

AVG

説明: 集計関数:グループ内の値の平均を返します。

シグネチャ:

Copied!
1 AVG(Column e)

COLLECT_LIST

説明: 集計関数:重複を含むオブジェクトのリストを返します。

シグネチャ:

Copied!
1 COLLECT_LIST(Column e)

COLLECT_SET

説明: 集計関数:重複する要素を除いたオブジェクトの集合を返します。

シグネチャ:

Copied!
1 COLLECT_SET(Column e)

CORR

説明: 集計関数:2列のピアソンの相関係数を返します。

シグネチャ:

Copied!
1 CORR(Column column1, Column column2)

COUNT

説明: 集計関数:グループ内の項目の件数を返します。

シグネチャ:

Copied!
1 COUNT(Column e)

COVAR_POP

説明: 集計関数:2列の母共分散を返します。 シグネチャ:

Copied!
1 COVAR_POP(Column column1, Column column2)

COVAR_SAMP

説明: 集計関数:2列の標本共分散を返します。

シグネチャ:

Copied!
1 COVAR_SAMP(Column column1, Column column2)

FIRST

説明: 集計関数:グループ内の最初の値を返します。デフォルトでは、最初に読み取った値を返します。ignoreNulls が true に設定されている場合、最初に読み取った null 以外の値を返します。すべての値が null の場合は、null を返します。

シグネチャ:

Copied!
1 FIRST(Column e)FIRST(Column e, boolean ignoreNulls)

GROUPING

説明: 集計関数:GROUP BY リスト内の指定した列が集計されているかどうかを示します。結果セット内で集計されている場合は1、集計されていない場合は0を返します。

シグネチャ:

Copied!
1 GROUPING(Column e)

KURTOSIS

説明: 集計関数:グループ内の値の尖度を返します。

シグネチャ:

Copied!
1 KURTOSIS(Column e)

LAST

説明: 集計関数:グループ内の最後の値を返します。デフォルトでは、最後に読み取った値を返します。ignoreNulls が true に設定されている場合、最後に読み取った null 以外の値を返します。すべての値が null の場合は、null を返します。

シグネチャ:

Copied!
1 LAST(Column e)LAST(Column e, boolean ignoreNulls)

MAX

説明: 集計関数:グループ内の式の最大値を返します。

シグネチャ:

Copied!
1 MAX(Column e)

MEAN

説明: 集計関数:グループ内の値の平均を返します。

シグネチャ:

Copied!
1 MEAN(Column e)

MIN

説明: 集計関数:グループ内の式の最小値を返します。

シグネチャ:

Copied!
1 MIN(Column e)

SKEWNESS

説明: 集計関数:グループ内の値の歪度を返します。

シグネチャ:

Copied!
1 SKEWNESS(Column e)

STDDEV

説明: 集計関数:stddev_samp のエイリアスです。

シグネチャ:

Copied!
1 STDDEV(Column e)

STDDEV_POP

説明: 集計関数:グループ内の式の母標準偏差を返します。

シグネチャ:

Copied!
1 STDDEV_POP(Column e)

STDDEV_SAMP

説明: 集計関数:グループ内の式の標本標準偏差を返します。

シグネチャ:

Copied!
1 STDDEV_SAMP(Column e)

SUM

説明: 集計関数:式のすべての値の合計を返します。

シグネチャ:

Copied!
1 SUM(Column e)

VARIANCE

説明: 集計関数:グループ内の値の不偏分散を返します。VAR_SAMP 関数のエイリアスです。

シグネチャ:

Copied!
1 VARIANCE(Column e)

VAR_POP

説明: 集計関数:グループ内の値の母分散を返します。

シグネチャ:

Copied!
1 VAR_POP(Column e)

VAR_SAMP

説明: 集計関数:グループ内の値の不偏分散を返します。

シグネチャ:

Copied!
1 VAR_SAMP(Column e)

文字列関数

関数説明
ASCII文字列列の最初の文字の数値を計算し、結果を int 型の列として返します。
BASE64バイナリ列を BASE64 エンコードし、文字列列として返します。
CONCAT複数の入力文字列列を1つの文字列列に連結します。
DECODE指定された文字セットを使用して、第1引数をバイナリから文字列に変換します。
ENCODE指定された文字セットを使用して、第1引数を文字列からバイナリに変換します。
FORMAT_NUMBER数値列を小数点以下 d 桁に丸め、‘#,###,###.##’ のような形式に整形します。
GET_JSON_OBJECT指定された JSON パスに基づいて JSON 文字列から JSON オブジェクトを抽出し、抽出した JSON オブジェクトの JSON 文字列を返します。
INSTR指定された文字列列で部分文字列が最初に出現する位置を特定します。
JSON_TUPLE指定されたフィールド名に従って、JSON 列に対して新しい行を作成します。
LENGTH指定された文字列列またはバイナリ列の長さを計算します。
LEVENSHTEIN指定された2つの文字列列のレーベンシュタイン距離を計算します。
LOWER文字列列を小文字に変換します。
LPAD文字列列の長さが len になるように、左側を pad で埋めます。
LTRIM指定された文字列値の左端から空白を削除します。
REGEXP_EXTRACT指定された文字列列から、Java の正規表現に一致する特定のグループを抽出します。
REGEXP_REPLACE指定された文字列値のうち、regexp に一致するすべての部分文字列を rep に置換します。
REPEAT文字列列を n 回繰り返し、新しい文字列列として返します。
REVERSE文字列列を反転し、新しい文字列列として返します。
RPAD文字列列の長さが len になるように、右側を pad で埋めます。
RTRIM指定された文字列値の右端から空白を削除します。
SOUNDEX指定された式の Soundex コードを返します。
SPLITpattern を区切りとして str を分割します(pattern は正規表現です)。
SUBSTRING文字列型またはバイナリ型の列の部分文字列を返します。
SUBSTRING_INDEX文字列から、区切り文字の count 回目の出現より前の部分文字列を返します。
TRANSLATEsrc 内の文字を replaceString 内の文字に置換します。
TRIM指定された文字列列の両端から空白を削除します。
UNBASE64BASE64 エンコードされた文字列列をデコードし、バイナリ列として返します。
UNHEXhex の逆操作です。
UPPER文字列列を大文字に変換します。

ASCII

説明: 文字列列の最初の文字の数値を計算し、結果を int 型の列として返します。

シグネチャ:

Copied!
1 ASCII(Column e)

BASE64

説明: バイナリ列を BASE64 エンコードし、文字列列として返します。

シグネチャ:

Copied!
1 BASE64(Column e)

CONCAT

説明: 複数の入力文字列列を1つの文字列列に連結します。

シグネチャ:

Copied!
1 CONCAT(Column... exprs)

DECODE

説明: 指定された charset を使用して、第1引数をバイナリから文字列に変換します。charset は次のいずれかです。

  • ‘US-ASCII’
  • ‘ISO-8859-1’
  • ‘UTF-8’
  • ‘UTF-16BE’
  • ‘UTF-16LE’
  • ‘UTF-16’

いずれかの引数が null の場合、結果も null になります。

シグネチャ:

Copied!
1 DECODE(Column value, String charset)

ENCODE

説明: 指定された charset を使用して、第1引数を文字列からバイナリに変換します。charset は次のいずれかです。

  • ‘US-ASCII’
  • ‘ISO-8859-1’
  • ‘UTF-8’
  • ‘UTF-16BE’
  • ‘UTF-16LE’
  • ‘UTF-16’

いずれかの引数が null の場合、結果も null になります。

シグネチャ:

Copied!
1 ENCODE(Column value, String charset)

FORMAT_NUMBER

説明: 数値列 x を HALF_EVEN 丸めモード(ガウス丸めまたは銀行家の丸めとも呼ばれます)で小数点以下 d 桁に丸め、‘#,###,###.##’ のような形式に整形します。結果を文字列列として返します。d が0の場合、結果には小数点も小数部も含まれません。d が0より小さい場合は null を返します。

シグネチャ:

Copied!
1 FORMAT_NUMBER(Column x, int d)

GET_JSON_OBJECT

説明: 指定された JSON の path に基づいて JSON 文字列から JSON オブジェクトを抽出し、抽出した JSON オブジェクトの JSON 文字列を返します。入力 JSON 文字列が無効な場合は null を返します。

シグネチャ:

Copied!
1 GET_JSON_OBJECT(Column e, String path)

INSTR

説明: 指定された文字列列で substring が最初に出現する位置を特定します。いずれかの引数が null の場合は null を返し、str 内に substring が見つからなかった場合は0を返します。 返される位置は、0ではなく1から始まるインデックスです。

シグネチャ:

Copied!
1 INSTR(Column str, String substring)

JSON_TUPLE

説明: 指定されたフィールド名に従って、JSON 列に対して新しい行を作成します。

シグネチャ:

Copied!
1 2 JSON_TUPLE(Column json, scala.collection.Seq<String> fields) JSON_TUPLE(Column json, String... fields)

LENGTH

説明: 指定された文字列列またはバイナリ列の長さを計算します。

シグネチャ:

Copied!
1 LENGTH(Column e)

LEVENSHTEIN

説明: 指定された2つの文字列列のレーベンシュタイン距離を計算します。

シグネチャ:

Copied!
1 LEVENSHTEIN(Column l, Column r)

LOWER

説明: 文字列列を小文字に変換します。

シグネチャ:

Copied!
1 LOWER(Column e)

LPAD

説明: 文字列列の長さが len になるように、左側を pad で埋めます。

シグネチャ:

Copied!
1 LPAD(Column str, int len, String pad)

LTRIM

説明: 指定された文字列値の左端から空白を削除します。

シグネチャ:

Copied!
1 LTRIM(Column e)

REGEXP_EXTRACT

説明: 指定された文字列列から、Java の正規表現(exp)に一致する特定のグループ(groupIdx)を抽出します。正規表現に一致しなかった場合、または指定されたグループに一致しなかった場合は、空の文字列を返します。

シグネチャ:

Copied!
1 REGEXP_EXTRACT(Column e, String exp, int groupIdx)

REGEXP_REPLACE

説明: 指定された文字列値のうち、Java の正規表現 pattern に一致するすべての部分文字列を replacement に置換します。

シグネチャ:

Copied!
1 REGEXP_REPLACE(Column e, String pattern, String replacement)

REPEAT

説明: 文字列列を n 回繰り返し、新しい文字列列として返します。

シグネチャ:

Copied!
1 REPEAT(Column str, int n)

REVERSE

説明: 文字列列を反転し、新しい文字列列として返します。

シグネチャ:

Copied!
1 REVERSE(Column str)

RPAD

説明: 文字列列の長さが len になるように、右側を pad で埋めます。

シグネチャ:

Copied!
1 RPAD(Column str, int len, String pad)

RTRIM

説明: 指定された文字列値の右端から空白を削除します。

シグネチャ:

Copied!
1 RTRIM(Column e)

SOUNDEX

説明: 指定された式の Soundex コードを返します。

シグネチャ:

Copied!
1 SOUNDEX(Column e)

SPLIT

説明: pattern を区切りとして str を分割します。pattern は正規表現です。

シグネチャ:

Copied!
1 SPLIT(Column str, String pattern)

SUBSTRING

説明: str が String 型の場合、pos から始まる長さ len の部分文字列を返します。str が Binary 型の場合、バイト単位の位置 pos から始まる長さ len のバイト配列のスライスを返します。

シグネチャ:

Copied!
1 SUBSTRING(Column str, int pos, int len)

SUBSTRING_INDEX

説明: 文字列 str から、区切り文字 delim の count 回目の出現より前の部分文字列を返します。delim を検索するときは、大文字と小文字を区別して照合します。count が正の場合、左から数えて最後の区切り文字より左側のすべてを返します。count が負の場合、右から数えて最後の区切り文字より右側のすべてを返します。

シグネチャ:

Copied!
1 SUBSTRING_INDEX(Column str, String delim, int count)

TRANSLATE

説明: src 内の文字を replaceString 内の文字に置換します。replaceString 内の文字は、matchingString 内の文字に対応します。文字列内の文字が matchingString 内の文字に一致すると、置換が行われます。

シグネチャ:

Copied!
1 TRANSLATE(Column src, String matchingString, String replaceString)

TRIM

説明: 指定された文字列列の両端から空白を削除します。

シグネチャ:

Copied!
1 TRIM(Column e)

UNBASE64

説明: BASE64 エンコードされた文字列列をデコードし、バイナリ列として返します。

シグネチャ:

Copied!
1 UNBASE64(Column e)

UNHEX

説明: hex の逆操作です。文字の各ペアを16進数として解釈し、その数値のバイト表現に変換します。

シグネチャ:

Copied!
1 UNHEX(Column column)

UPPER

説明: 文字列列を大文字に変換します。

シグネチャ:

Copied!
1 UPPER(Column e)

日時関数

関数説明
ADD_MONTHSstartDate から numMonths か月後の日付を返します。
DATEDIFFstart から end までの日数を返します。
DATE_ADDstart から days 日後の日付を返します。
DATE_FORMAT日付/タイムスタンプ/文字列を、日付形式で指定された形式の文字列値に変換します。
DATE_SUBstart から days 日前の日付を返します。
DAYOFMONTH指定された日付/タイムスタンプ/文字列から、月内の日を整数として抽出します。
DAYOFYEAR指定された日付/タイムスタンプ/文字列から、年内の通算日を整数として抽出します。
FROM_UNIXTIMEUnix エポックからの秒数を、現在のシステムタイムゾーンにおけるその時点のタイムスタンプを表す、指定された形式の文字列に変換します。
FROM_UTC_TIMESTAMP指定されたタイムスタンプを UTC とみなし、指定されたタイムゾーンに変換します。
HOUR指定された日付/タイムスタンプ/文字列から、時を整数として抽出します。
LAST_DAY日付列を受け取り、指定された日付が属する月の最終日を返します。
MINUTE指定された日付/タイムスタンプ/文字列から、分を整数として抽出します。
MONTH指定された日付/タイムスタンプ/文字列から、月を整数として抽出します。
MONTHS_BETWEEN日付 date1 と date2 の間の月数を返します。
NEXT_DAY日付列を受け取り、日付列の値より後で、指定された曜日に該当する最初の日付を返します。
QUARTER指定された日付/タイムスタンプ/文字列から、四半期を整数として抽出します。
SECOND指定された日付/タイムスタンプ/文字列から、秒を整数として抽出します。
TO_DATE列を date データ型に変換します。
TO_UTC_TIMESTAMP指定されたタイムスタンプが指定されたタイムゾーンのものとみなし、UTC に変換します。
TRUNC形式で指定された単位に切り詰めた日付を返します。
UNIX_TIMESTAMPデフォルトのタイムゾーンとデフォルトのロケールを使用して、yyyy-MM-dd HH:mm 形式の時刻文字列を Unix タイムスタンプ(秒単位)に変換します。
WEEKOFYEAR指定された日付/タイムスタンプ/文字列から、週番号を整数として抽出します。
WINDOWタイムスタンプを指定する列を受け取り、タンブリング時間ウィンドウまたはスライディング時間ウィンドウを生成します。
YEAR指定された日付/タイムスタンプ/文字列から、年を整数として抽出します。

ADD_MONTHS

説明: startDate で指定された日付/タイムスタンプ/文字列から numMonths か月後の日付を返します。startDate が文字列の場合は、「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

startDate に時刻部分がある場合、その部分は無視されます。結果の月の日部分は、startDate の日部分と同じになります。startDate が月の最終日である場合、または結果の月の日数が startDate の日部分より少ない場合は、結果の月の最終日が返されます。

シグネチャ:

Copied!
1 ADD_MONTHS(Column startDate, int numMonths)

DATEDIFF

説明: start から end までの日数を返します。

シグネチャ:

Copied!
1 DATEDIFF(Column end, Column start)

DATE_ADD

説明: start から days 日後の日付を返します。

シグネチャ:

Copied!
1 DATE_ADD(Column start, int days)

DATE_FORMAT

説明: 日付/タイムスタンプ/文字列を、日付の format で指定された形式の文字列値に変換します。dateExpr が文字列の場合は、「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

パターン文字列 format には、SimpleDateFormat のパターン文字を使用できます。詳細については、Java SimpleDateFormat のドキュメント ↗ を参照してください。

シグネチャ:

Copied!
1 DATE_FORMAT(Column dateExpr, String format)

DATE_SUB

説明: start から days 日前の日付を返します。

シグネチャ:

Copied!
1 DATE_SUB(Column start, int days)

DAYOFMONTH

説明: 指定された日付/タイムスタンプ/文字列から、月内の日を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

シグネチャ:

Copied!
1 DAYOFMONTH(Column e)

DAYOFYEAR

説明: 指定された日付/タイムスタンプ/文字列から、年内の通算日を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

シグネチャ:

Copied!
1 DAYOFYEAR(Column e)

FROM_UNIXTIME

説明: Unix エポック (1970-01-01 00:00:00 UTC) からの秒数を、現在のシステムタイムゾーンにおけるその時点のタイムスタンプを表す、指定された形式の文字列に変換します。 パターン文字列 f が指定されていない場合、結果の文字列のデフォルト形式は yyyy-MM-dd HH:mm です。結果の文字列の形式を変更するには、パターン文字列 f を指定します。パターン文字列には、SimpleDateFormat のパターン文字を使用できます。詳細については、Java SimpleDateFormat のドキュメント ↗ を参照してください。

シグネチャ:

Copied!
1 FROM_UNIXTIME(Column ut)FROM_UNIXTIME(Column ut, String f)

FROM_UTC_TIMESTAMP

説明: 指定されたタイムスタンプを UTC とみなし、tz で指定されたタイムゾーンに変換します。 タイムスタンプ(UTC の特定の時刻に対応するもの)を受け取り、tz で指定されたタイムゾーンの同じ時刻に対応する別のタイムスタンプを返します。

シグネチャ:

Copied!
1 FROM_UTC_TIMESTAMP(Column ts, String tz)

HOUR

説明: 指定された日付/タイムスタンプ/文字列から、時を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

シグネチャ:

Copied!
1 HOUR(Column e)

LAST_DAY

説明: 日付列を受け取り、指定された日付が属する月の最終日を返します。

シグネチャ:

Copied!
1 LAST_DAY(Column e)

MINUTE

説明: 指定された日付/タイムスタンプ/文字列から、分を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

シグネチャ:

Copied!
1 MINUTE(Column e)

MONTH

説明: 指定された日付/タイムスタンプ/文字列から、月を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

シグネチャ:

Copied!
1 MONTH(Column e)

MONTHS_BETWEEN

説明: 日付 date1 と date2 の間の月数を返します。 date1 が date2 より後の場合、結果は正の値になります。date1 が date2 より前の場合、結果は負の値になります。2つの日付の月内の日が同じ場合、または両方とも月の最終日である場合、結果は整数になります。それ以外の場合、結果は小数点以下8桁に丸められます。

シグネチャ:

Copied!
1 MONTHS_BETWEEN(Column date1, Column date2)

NEXT_DAY

説明: date 列を受け取り、日付列の値より後で、指定された dayOfWeek に該当する最初の日付を返します。dayOfWeek パラメーターは大文字と小文字を区別せず、次のいずれかの値を指定できます。

  • ‘Mon’
  • ‘Tue’
  • ‘Wed’
  • ‘Thu’
  • ‘Fri’
  • ‘Sat’
  • ‘Sun’

シグネチャ:

Copied!
1 NEXT_DAY(Column date, String dayOfWeek)

QUARTER

説明: 指定された日付/タイムスタンプ/文字列から、四半期を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。結果の四半期は1から4の範囲です。

シグネチャ:

Copied!
1 QUARTER(Column e)

SECOND

説明: 指定された日付/タイムスタンプ/文字列から、秒を整数として抽出します。文字列は「yyyy-MM-dd」または「yyyy-MM-dd HH:mm」形式である必要があります。

シグネチャ:

Copied!
1 SECOND(Column e)

TO_DATE

説明: 列を date データ型に変換します。

シグネチャ:

Copied!
1 TO_DATE(Column e)

TO_UTC_TIMESTAMP

説明: 指定されたタイムスタンプ(ts)が指定されたタイムゾーン(tz)のものとみなし、UTC に変換します。

シグネチャ:

Copied!
1 TO_UTC_TIMESTAMP(Column ts, String tz)

TRUNC

説明: format で指定された単位に切り詰めた日付を返します。format パラメーターには、年単位で切り詰める場合は ‘year’、‘yyyy’、‘yy’ を、月単位で切り詰める場合は ‘month’、‘mon’、‘mm’ を指定します。

シグネチャ:

Copied!
1 TRUNC(Column date, String format)

UNIX_TIMESTAMP

説明: デフォルトのタイムゾーンとデフォルトのロケールを使用して、時刻の文字列を Unix タイムスタンプ(秒単位)に変換します。文字列からタイムスタンプへの変換に失敗した場合は null を返します。

パターン文字列が指定されていない場合、入力列 s のデフォルトの形式は yyyy-MM-dd HH:mm です。入力列が異なる形式の場合は、パターン文字列 p を指定してください。パターン文字列には SimpleDateFormat のパターン文字を使用できます。詳細については、Java SimpleDateFormat のドキュメント ↗を参照してください。

シグネチャ:

Copied!
1 UNIX_TIMESTAMP(Column s)UNIX_TIMESTAMP(Column s, String p)

WEEKOFYEAR

説明: 指定された日付、タイムスタンプ、または文字列から週番号を整数として抽出します。文字列は ‘yyyy-MM-dd’ または ‘yyyy-MM-dd HH:mm’ 形式である必要があります。

シグネチャ:

Copied!
1 WEEKOFYEAR(Column e)

WINDOW

説明: タイムスタンプを指定する列に基づいて、タンブリング時間ウィンドウまたはスライディング時間ウィンドウを生成します。slideDuration が指定されていない場合は、タンブリング時間ウィンドウを生成します。slideDuration が指定されている場合は、行を1つ以上の時間ウィンドウに振り分けて、スライディング時間ウィンドウを生成します。

ウィンドウの開始時刻は範囲に含まれ、終了時刻は含まれないため、12:05 はウィンドウ [12:05,12:10) に含まれますが、[12:00,12:05) には含まれません。ウィンドウはマイクロ秒精度に対応できます。月単位のウィンドウには対応していません。

startTime が指定されていない場合、ウィンドウは 1970-01-01 00:00:00 UTC から開始します。 この関数は次のパラメーターを受け付けます。

  • timeColumn:時間でウィンドウを区切る際にタイムスタンプとして使用する列です。時間列は TimestampType である必要があります。
  • windowDuration:ウィンドウの幅を指定する文字列です。たとえば、10 minutes、1 second などです。この期間は固定長の時間であり、カレンダーに従って変動することはありません。
  • slideDuration:ウィンドウのスライド間隔を指定する文字列です。たとえば、1 minute などです。slideDuration ごとに新しいウィンドウが生成されます。windowDuration 以下である必要があります。この期間も同様に固定長であり、カレンダーに従って変動することはありません。
  • startTime:ウィンドウの区間を開始するための、1970-01-01 00:00:00 UTC を基準としたオフセットです。たとえば、毎時15分に開始する1時間のタンブリングウィンドウ(例: 12:15-13:15, 13:15-14:15…)を作成するには、startTime に 15 minutes を指定します。

シグネチャ:

Copied!
1 WINDOW(Column timeColumn, String windowDuration)WINDOW(Column timeColumn, String windowDuration, String slideDuration)WINDOW(Column timeColumn, String windowDuration, String slideDuration, String startTime)

YEAR

説明: 指定された日付、タイムスタンプ、または文字列から年を整数として抽出します。文字列は ‘yyyy-MM-dd’ または ‘yyyy-MM-dd HH:mm’ 形式である必要があります。

シグネチャ:

Copied!
1 YEAR(Column e)

数学関数

関数説明
ABS絶対値を計算します。
ACOS指定された値の逆余弦を計算します。
ASIN指定された値の逆正弦を計算します。
ATAN指定された値の逆正接を計算します。
ATAN2直交座標 (x, y) を極座標 (r, theta) に変換したときの角度 theta を返します。
BIN指定された Long 列の値を2進数の文字列表現で返します。
BROUND列 e の値を丸めて返します。
CBRT指定された値の立方根を計算します。
CEIL指定された値を切り上げた整数値を計算します。
CONV文字列列内の数値を、ある基数から別の基数に変換します。
COS指定された値の余弦を計算します。
COSH指定された値の双曲線余弦を計算します。
EXP指定された値の指数関数を計算します。
EXPM1指定された値の指数関数から1を引いた値を計算します。
FACTORIAL指定された値の階乗を計算します。
FLOOR指定された値を切り下げた整数値を計算します。
HYPOT中間計算でオーバーフローやアンダーフローを起こさずに sqrt(a^2^ + b^2^) を計算します。
LOG指定された値の自然対数を計算します。
LOG10指定された値の10を底とする対数を計算します。
LOG1P指定された値に1を加えた値の自然対数を計算します。
LOG2指定された列の値の2を底とする対数を計算します。
NEGATIVE単項マイナス。
PMOD被除数を除数で割った剰余を正の値で返します。
POW第1引数を第2引数の値で累乗した値を返します。
RINT引数の値に最も近く、数学的な整数に等しい Double 値を返します。
ROUND列 e の値を小数点以下0桁に丸めて返します。
SHIFTLEFT指定された値を numBits ビット左にシフトします。
SHIFTRIGHT指定された値を numBits ビット右にシフトします。
SHIFTRIGHTUNSIGNED指定された値を numBits ビット右に符号なしシフトします。
SIGNUM指定された値の符号関数を計算します。
SIN指定された値の正弦を計算します。
SINH指定された値の双曲線正弦を計算します。
SQRT指定された Float 値の平方根を計算します。
TAN指定された値の正接を計算します。
TANH指定された値の双曲線正接を計算します。
TODEGREESラジアン単位の角度を、ほぼ等しい度単位の角度に変換します。
TORADIANS度単位の角度を、ほぼ等しいラジアン単位の角度に変換します。

ABS

説明: 絶対値を計算します。

シグネチャ:

Copied!
1 ABS(Column e)

ACOS

説明: 指定された値の逆余弦を計算します。返される角度は0.0から pi までの範囲です。

シグネチャ:

Copied!
1 ACOS(Column e)

ASIN

説明: 指定された値の逆正弦を計算します。返される角度は -pi/2 から pi/2 までの範囲です。

シグネチャ:

Copied!
1 ASIN(Column e)

ATAN

説明: 指定された値の逆正接を計算します。

シグネチャ:

Copied!
1 ATAN(Column e)

ATAN2

説明: 直交座標 (x, y) を極座標 (r, theta) に変換したときの角度 theta を返します。

シグネチャ:

Copied!
1 ATAN2(Column l, Column r)ATAN2(Column l, double r)ATAN2(Column l, String rightName)

BIN

説明: 指定された Long 列の値を2進数の文字列表現で返します。

シグネチャ:

Copied!
1 BIN(Column e)

BROUND

説明: 列 e のみを指定した場合、列 e の値を HALF_EVEN 丸めモードで小数点以下0桁に丸めて返します。これはガウス丸めまたは銀行丸めとも呼ばれます。

scale も指定した場合、列 e の値を小数点以下 scale 桁に丸めて返します(scale >= 0 の場合は HALF_EVEN 丸めモードを使用し、scale < 0 の場合は整数部で丸めます)。

シグネチャ:

Copied!
1 BROUND(Column e)BROUND(Column e, int scale)

CBRT

説明: 指定された値の立方根を計算します。

シグネチャ:

Copied!
1 CBRT(Column e)

CEIL

説明: 指定された値を切り上げた整数値を計算します。

シグネチャ:

Copied!
1 CEIL(Column e)

CONV

説明: 文字列列内の数値を、ある基数から別の基数に変換します。

シグネチャ:

Copied!
1 CONV(Column num, int fromBase, int toBase)

COS

説明: 指定された値の余弦を計算します。

シグネチャ:

Copied!
1 COS(Column e)

COSH

説明: 指定された値の双曲線余弦を計算します。

シグネチャ:

Copied!
1 COSH(Column e)

EXP

説明: 指定された値の指数関数を計算します。

シグネチャ:

Copied!
1 EXP(Column e)

EXPM1

説明: 指定された値の指数関数から1を引いた値を計算します。

シグネチャ:

Copied!
1 EXPM1(Column e)

FACTORIAL

説明: 指定された値の階乗を計算します。

シグネチャ:

Copied!
1 FACTORIAL(Column e)

FLOOR

説明: 指定された値を切り下げた整数値を計算します。

シグネチャ:

Copied!
1 FLOOR(Column e)

HYPOT

説明: 中間計算でオーバーフローやアンダーフローを起こさずに sqrt(a^2^ + b^2^) を計算します。

シグネチャ:

Copied!
1 HYPOT(Column l, Column r)HYPOT(Column l, double r)HYPOT(Column l, String rightName)

LOG

説明: 指定された値の自然対数を計算します。

シグネチャ:

Copied!
1 LOG(Column e)

LOG10

説明: 指定された値の10を底とする対数を計算します。

シグネチャ:

Copied!
1 LOG10(Column e)

LOG1P

説明: 指定された値に1を加えた値の自然対数を計算します。

シグネチャ:

Copied!
1 LOG1P(Column e)

LOG2

説明: 指定された列の値の2を底とする対数を計算します。

シグネチャ:

Copied!
1 LOG2(Column expr)

NEGATIVE

説明: 単項マイナス(式の符号反転を行います)。

シグネチャ:

Copied!
1 NEGATIVE(Column e)

PMOD

説明: dividend を divisor で割った剰余を正の値で返します。

シグネチャ:

Copied!
1 PMOD(Column dividend, Column divisor)

POW

説明: 第1引数を第2引数の値で累乗した値を返します。

シグネチャ:

Copied!
1 POW(Column l, Column r)POW(Column l, double r)POW(Column l, String rightName)

RINT

説明: 引数の値に最も近く、数学的な整数に等しい Double 値を返します。

シグネチャ:

Copied!
1 RINT(Column e)

ROUND

説明: 列 e の値を小数点以下0桁に丸めて返します。

シグネチャ:

Copied!
1 ROUND(Column e)ROUND(Column e, int scale)

SHIFTLEFT

説明: 指定された値を numBits ビット左にシフトします。

シグネチャ:

Copied!
1 SHIFTLEFT(Column e, int numBits)

SHIFTRIGHT

説明: 指定された値を numBits ビット右にシフトします。

シグネチャ:

Copied!
1 SHIFTRIGHT(Column e, int numBits)

SHIFTRIGHTUNSIGNED

説明: 指定された値を numBits ビット右に符号なしシフトします。

シグネチャ:

Copied!
1 SHIFTRIGHTUNSIGNED(Column e, int numBits)

SIGNUM

説明: 指定された値の符号関数を計算します。

シグネチャ:

Copied!
1 SIGNUM(Column e)

SIN

説明: 指定された値の正弦を計算します。

シグネチャ:

Copied!
1 SIN(Column e)

SINH

説明: 指定された値の双曲線正弦を計算します。

シグネチャ:

Copied!
1 SINH(Column e)

SQRT

説明: 指定された Float 値の平方根を計算します。

シグネチャ:

Copied!
1 SQRT(Column e)

TAN

説明: 指定された値の正接を計算します。

シグネチャ:

Copied!
1 TAN(Column e)

TANH

説明: 指定された値の双曲線正接を計算します。

シグネチャ:

Copied!
1 TANH(Column e)

TODEGREES

説明: ラジアン単位の角度を、ほぼ等しい度単位の角度に変換します。

シグネチャ:

Copied!
1 TODEGREES(Column e)

TORADIANS

説明: 度で表された角度を、ほぼ等価なラジアンで表された角度に変換します。

シグネチャ:

Copied!
1 TORADIANS(Column e)

null 関数

関数説明
COALESCEnull ではない最初の列を返します。すべての入力が null の場合は null を返します。
ISNULL列が null である場合に限り true を返します。
NULLIF両方の引数が等しい場合は null を返し、それ以外の場合は最初の引数を返します。

COALESCE

説明: null ではない最初の列を返します。すべての入力が null の場合は null を返します。

シグネチャ:

Copied!
1 COALESCE(Column... e)

ISNULL

説明: 列が null である場合に限り true を返します。

シグネチャ:

Copied!
1 ISNULL(Column e)

NULLIF

説明: 両方の引数が等しい場合は null を返し、それ以外の場合は最初の引数を返します。

シグネチャ:

Copied!
1 NULLIF(Column l, Column r)

コレクション関数

関数説明
ARRAY新しい配列列を作成します。
ARRAY_CONTAINS配列に値が含まれる場合に true を返します。
EXPLODE指定された配列列またはマップ列の各要素に対して、新しい行を作成します。
MAP新しいマップ列を作成します。
POSEXPLODE指定された配列列またはマップ列の各要素に対して、その位置を含む新しい行を作成します。
SIZE配列またはマップの長さを返します。
SORT_ARRAY指定された列の入力配列を昇順または降順に並べ替えます。
STRUCT新しい構造体列を作成します。

ARRAY

説明: 新しい配列列を作成します。

シグネチャ:

Copied!
1 ARRAY(Column... cols)

ARRAY_CONTAINS

説明: 配列に value が含まれる場合に true を返します。

シグネチャ:

Copied!
1 ARRAY_CONTAINS(Column column, Object value)

EXPLODE

説明: 指定された配列列またはマップ列の各要素に対して、新しい行を作成します。

シグネチャ:

Copied!
1 EXPLODE(Column e)

MAP

説明: 新しいマップ列を作成します。

シグネチャ:

Copied!
1 MAP(Column... cols)

POSEXPLODE

説明: 指定された配列列またはマップ列の各要素に対して、その位置を含む新しい行を作成します。

シグネチャ:

Copied!
1 POSEXPLODE(Column e)

SIZE

説明: 配列またはマップの長さを返します。

シグネチャ:

Copied!
1 SIZE(Column e)

SORT_ARRAY

説明: 配列要素の自然順序に従って、指定された列の入力配列を昇順または降順に並べ替えます。並べ替えのデフォルトは昇順です。ただし、asc が false に設定されている場合は降順になります。

シグネチャ:

Copied!
1 SORT_ARRAY(Column e)SORT_ARRAY(Column e, boolean asc)

STRUCT

説明: 新しい構造体列を作成します。

シグネチャ:

Copied!
1 STRUCT(Column... cols)

ウィンドウ関数

関数説明
LAG現在の行から offset 行前の値を返します。現在の行より前の行数が offset 未満の場合は null を返します。
LEAD現在の行から offset 行後の値を返します。現在の行より後の行数が offset 未満の場合は null を返します。

LAG

説明: ウィンドウ関数:現在の行から offset 行前の値を返します。現在の行より前の行数が offset 未満の場合は null を返します。たとえば、オフセットが1の場合、ウィンドウパーティション内の任意の位置で、前の行を返します。

シグネチャ:

Copied!
1 LAG(Column e, int offset)LAG(Column e, int offset, Object defaultValue)

LEAD

説明: ウィンドウ関数:現在の行から offset 行後の値を返します。現在の行より後の行数が offset 未満の場合は null を返します。

シグネチャ:

Copied!
1 LEAD(Column e, int offset)LEAD(Column e, int offset, Object defaultValue)

その他の関数

関数説明
CRC32バイナリ列の巡回冗長検査値を計算し、その値を bigint として返します。
GREATESTnull 値を除外し、値のリストの最大値を返します。
HASH指定された列のハッシュコードを計算し、結果を int 列として返します。
HEX指定された列の16進数値を計算します。
ISNAN列が NaN である場合に限り true を返します。
LEASTnull 値を除外し、値のリストの最小値を返します。
MD5バイナリ列の MD5 ダイジェストを計算し、その値を32文字の16進数文字列として返します。
NANVLcol1 が NaN ではない場合は col1 を返し、col1 が NaN の場合は col2 を返します。
NOTブール式を反転します。
SHA1バイナリ列の SHA-1 ダイジェストを計算し、その値を40文字の16進数文字列として返します。
SHA2バイナリ列に対して SHA-2 ファミリーのハッシュ関数を計算し、その値を16進数文字列として返します。
WHEN条件のリストを評価し、複数の結果式の候補から1つを返します。

CRC32

説明: バイナリ列の巡回冗長検査値 (CRC32) を計算し、その値を bigint として返します。

シグネチャ:

Copied!
1 CRC32(Column e)

GREATEST

説明: null 値を除外し、値のリストの最大値を返します。「>」演算子を使用して値を比較します。この関数は少なくとも2個のパラメーターを取ります。すべてのパラメーターが null の場合に限り null を返します。

シグネチャ:

Copied!
1 GREATEST(Column... exprs)

HASH

説明: 指定された列のハッシュコードを計算し、結果を int 列として返します。

シグネチャ:

Copied!
1 HASH(Column... cols)

HEX

説明: 指定された列の16進数値を計算します。column のデータ型が int または binary の場合、数値を16進数形式の文字列として返します。column のデータ型が string の場合、各文字を16進数表現に変換し、結果の文字列を返します。

シグネチャ:

Copied!
1 HEX(Column column)

ISNAN

説明: 列が NaN である場合に限り true を返します。

シグネチャ:

Copied!
1 ISNAN(Column e)

LEAST

説明: null 値を除外し、値のリストの最小値を返します。「<」演算子を使用して値を比較します。この関数は少なくとも2個のパラメーターを取ります。すべてのパラメーターが null の場合に限り null を返します。

シグネチャ:

Copied!
1 LEAST(Column... exprs)

MD5

説明: バイナリ列の MD5 ダイジェストを計算し、その値を32文字の16進数文字列として返します。

シグネチャ:

Copied!
1 MD5(Column e)

NANVL

説明: col1 が NaN ではない場合は col1 を返し、col1 が NaN の場合は col2 を返します。

シグネチャ:

Copied!
1 NANVL(Column col1, Column col2)

NOT

説明: ブール式を反転します(すなわち、NOT)。

シグネチャ:

Copied!
1 NOT(Column e)

SHA1

説明: バイナリ列の SHA-1 ダイジェストを計算し、その値を40文字の16進数文字列として返します。

シグネチャ:

Copied!
1 SHA1(Column e)

SHA2

説明: バイナリ列に対して SHA-2 ファミリーのハッシュ関数を計算し、その値を16進数文字列として返します。

シグネチャ:

Copied!
1 SHA2(Column e, int numBits)

WHEN

説明: 条件のリストを評価し、複数の結果式の候補から1つを返します。

シグネチャ:

Copied!
1 WHEN(Column condition, Object value)