Spark SQL 構文と式

次の表に、数値の Spark SQL 構文と式を示します。

関数 説明
ABS() 絶対値を計算します。 ABS(-3.2)3.2 を返します
CEIL() 指定された値の上限を計算します。 CEIL(2.4)3 を返します
EXP() 指定された値の指数を計算します。 EXP(1)2.71828 を返します
FLOOR() 指定された値の下限を計算します。 FLOOR(4.6)4 を返します
LOG() 指定された値の自然対数を計算します。 LOG(1)0 を返します
RAND() U[0.0, 1.0]から独立性と同一分布 (i.i.d.) サンプルを持つランダムカラムを生成します。 RAND()[0.0,1.0] を返します
ROUND() カラム e の値を小数点以下 0 桁に四捨五入して返します。 ROUND(2.4)2 を返します
SQRT() 指定された浮動小数点値の平方根を計算します。 SQRT(4)2 を返します

次の表に、Spark SQL の構文と文字カラムの式を示します。

関数 説明
CONCAT() 複数の入力文字カラムを単一の文字カラムに連結します。 CONCAT('a', 'b')ab を返します
INSTR(str, String substring) 指定された文字カラム内で部分文字列が最初に出現する位置を見つけます。 INSTR('entre', 'e')1 を返します
LOCATE(String substr, str, int pos) 部分文字列が最初に出現する位置を見つけます。 LOCATE('e','entre', 2)5 を返します
LOWER(str) 文字カラムを小文字に変換します。 LOWER('Alpine')alpine を返します
UPPER(str) 文字カラムを大文字に変換します。 UPPER('Alpine')ALPINE を返します
REVERSE(str) 文字カラムを反転し、新しい文字列として返します。 REVERSE('foobar')raboof を返します
SUBSTRING(str, int pos, int len) str が 文字列型の場合は pos を始点とする長さ len のサブストリングを、str がバイナリ型の場合は pos を始点とする長さ len のバイト配列のスライスを返します。 SUBSTRING('Alpine', 2, 2)lp を返します
TRIM(str) 指定した文字カラムの両端のスペースを削除します。 TRIM(' a b ')a b を返します
LENGTH(str) 指定された文字カラムの長さを計算します。 LENGTH('foobar')6 を返します
TRANSLATE(src, String matchString, String replaceString) src 内の任意の文字を replaceString 内の文字で翻訳します。 TRANSLATE('Alpine', 'Alp', 'F')Fine を返します
REGEXP_EXTRACT(e, String exp, int groupIdx) 指定された文字列から、Java 正規表現に一致する特定のグループを抽出します。 REGEXP_EXTRACT('this:that', '(.*)\\:(.*)', 2)that を返します
REGEXP_REPLACE(e, String pattern, String replacement) regexp に一致する、指定された文字列値のすべての部分文字カラムを rep に置き換えます。 REGEXP_REPLACE("foo bar", "oo|ar|\\s", "")fb を返します

次の表に、Spark SQL の構文と日付/タイムスタンプの式を示します。

関数 説明
DAYOFMONTH() 指定された日付/タイムスタンプ/文字列から日付を整数として抽出します。 DAYOFMONTH('2003-05-10') は 10 を返します
HOUR() 指定された日付/タイムスタンプ/文字列から時間を整数として抽出します。 HOUR('2003-10-12 15:02')15 を返します
MINUTE() 指定された日付/タイムスタンプ/文字列から分を整数として抽出します。 MINUTE('2003-10-04 05:12:23')12 を返します
DATEDIFF( DATE_ADD(('datetime'), 2), 'datetime') 日付の差分を返します。 DATEDIFF( DATE_ADD(('2012-10-17'), 2), '2012-10-17')2 を返します
CAST(TO_DATE(datetime_column) AS STRING) 入力された日付を「yyyy-MM-dd」形式の文字列として返します。 CAST(TO_DATE(2012-10-12) AS STRING) '2012-10-12' を返します
CAST(UNIX_TIMESTAMP('datetime_column') AS BIGINT) ローカル Unix 時間を秒単位で返します。 CAST(UNIX_TIMESTAMP('2003-01-29') AS BIGINT)1043827200 を返します
ノート:

Spark SQL は、タイムスタンプの形式「yyyy-MM-dd HH:mm:ss」と日付の形式「yyyy-MM-dd」のみをサポートします。すべての入力 datetime カラムは、データ フレームをロードするときにこの timestamp 形式に暗黙的に変換され、TIBCO Data Virtualization に書き戻すときに最初の(または新しく指定された)形式に変換されます。

異なる datetime 形式の文字カラムを使用している場合は、形式を正しい timestamp 形式に明示的に次の例のようにキャストする必要があります。UNIX_TIMESTAMP('03/03/2012', 'MM/dd/yyyy')

以下に、Spark SQL の構文と条件式のリストを示します。

  • CASE WHEN LOWER(referring_url) LIKE 'www%.org%' THEN 'Non-Profit' ELSE 'Other' END

  • CASE WHEN LOWER(referring_url) RLIKE '^www.*\\.org$' THEN 'Non-Profit' ELSE 'Other' END

詳細については、『Spark SQL ドキュメント』を参照してください。