すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:数学関数

最終更新日:Dec 13, 2024

このトピックでは、MaxCompute SQLでサポートされている数学関数について説明します。 このトピックでは、数学関数の構文、パラメーター、および例についても説明します。 ビジネス要件に基づいて数学関数を使用して、データ計算やデータ型変換などの操作を実行することを選択できます。

次の表に、MaxCompute SQLでサポートされている数学関数を示します。

関数

説明

ABS

絶対値を計算します。

ACOS

逆余弦を計算します。

ATAN2

expr1とexpr2のアークタンジェントを計算します。

ASIN

アークサインを計算します。

ATAN

アークタンジェントを計算します。

BIN

バイナリコードを計算します。

CBRT

キューブルートを計算します。

CEIL

数値を丸めて、最も近い整数を返します。

CONV

ある数値システムから別の数値システムに数値を変換します。

CORR

ピアソン相関係数を計算します。

COS

コサインを計算します。

COSH

双曲線コサインを計算します。

COT

コタンジェントを計算します。

DEGREES

ラジアン値を次数に変換します。

E

eの値を計算します。

EXP

指数値を計算します。

FACTORIAL

階乗を計算します。

フィルター

配列内の要素をフィルターします。

FLOOR

数値を丸めて、最も近い整数を返します。

FORMAT_NUMBER

数値を指定した形式の文字列に変換します。

HEX

整数または文字列を16進数に変換します。

ISNAN

式の値がNaNかどうかをチェックします。

LN

自然対数を計算します。

LOG

対数を計算します。

LOG10

基数が10の数の対数を計算します。

LOG2

基数が2の数の対数を計算します。

NEGATIVE

式の負の値を返します。

PI

π の値を計算します。

POSITIVE

式の値を返します。

POW

値のn乗を計算します。

RADIANS

次数をラジアン値に変換します。

RAND

乱数を返します。

ROUND

指定した小数点以下の桁に丸めた値を返します。

SHIFTLEFT

値を特定の桁数だけ左にシフトします。

SHIFTRIGHT

値を特定の数だけシフトします。

SHIFTRIGHTUNSIGNED

符号なしの値を特定の桁数だけシフトします。

SIGN

入力値の符号を返します。

SIGN

正弦を計算します。

SINH

双曲線の正弦を計算します。

SQRT

平方根を計算します。

TAN

正接を計算します。

TANH

双曲線正接を計算します。

TRUNC

入力値を指定した小数点以下の桁まで切り捨てます。

UNHEX

この関数は、16進数の文字列を文字列に変換します。

WIDTH_BUCKET

特定の式の値が含まれるバケットのIDを返します。

説明

剰余の計算に使用される演算子など、演算子の詳細については、「算術演算子」をご参照ください。

注意事項

MaxCompute V2.0は追加機能を提供します。 使用する関数にMaxCompute V2.0データ型エディションでサポートされている新しいデータ型が含まれている場合は、SETステートメントを実行してMaxCompute V2.0データ型エディションを有効にする必要があります。 新しいデータ型には、TINYINT、SMALLINT、INT、FLOAT、VARCHAR、TIMESTAMP、およびBINARYが含まれます。

  • セッションレベル: MaxCompute V2.0データ型エディションを使用するには、実行するsql文の前にset odps. SQL. type.system.odps2=true; を追加し、一緒にコミットして実行する必要があります。

  • プロジェクトレベル: プロジェクトの所有者は、プロジェクトの要件に基づいて、プロジェクトのMaxCompute V2.0データ型エディションを有効にできます。 設定は10〜15分後に有効になります。 プロジェクトレベルでMaxCompute V2.0データ型エディションを有効にするには、次のコマンドを実行します。

    setproject odps.sql.type.system.odps2=true;

    setprojectの詳細については、「プロジェクト操作」をご参照ください。 プロジェクトレベルでMaxCompute V2.0データ型エディションを有効にする際の注意事項の詳細については、「データ型エディション」をご参照ください。

サンプルデータ

このセクションでは、数学関数の使用方法を理解するためのサンプルソースデータを提供します。 このトピックでは、mf_math_fun_tという名前のテーブルが作成され、データがテーブルに挿入されます。 サンプル文:

create table if not exists mf_math_fun_t(
     int_data     int,
     bigint_data  bigint,
     double_data  double,
     decimal_data decimal,
     float_data   float,
     string_data  string
    );
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');

mf_math_fun_tテーブルからデータを照会します。 例:

select * from mf_math_fun_t;
-- The following result is returned: 
+----------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+----------+-------------+-------------+--------------+------------+-------------+
| NULL     | -10         | 0.525       | 0.525        | 0.525      | 10          |
| -20      | NULL        | -0.1        | -0.1         | -0.1       | -10         |
| 0        | -1          | NULL        | 20.45        | -1         | 30          |
| -40      | 4           | 0.89        | NULL         | 0.89       | -30         |
| 5        | -50         | -1.0        | -1           | NULL       | 50          |
| -60      | 6           | 1.5         | 1.5          | 1.5        | -50         |
| -1       | -70         | -7.5        | -7.5         | -7.5       | NULL        |
| -80      | 1           | -10.2       | -10.2        | -10.2      | -1          |
| 9        | -90         | 2.58        | 2.58         | 2.58       | 0           |
| -100     | 10          | -5.8        | -5.8         | -5.8       | -90         |
+----------+-------------+-------------+--------------+------------+-------------+

ABS

  • 構文

    bigint|double|decimal abs(<number>)
  • 説明

    numberの絶対値を計算します。

  • パラメーター

    number: 必須です。 値は、DOUBLE、BIGINT、またはDECIMAL型です。 入力値がSTRING型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

    説明

    入力値がBIGINT型であり、BIGINT型の最大値より大きい場合、DOUBLE型の値が返されます。 しかしながら、精度が失われる可能性がある。

  • 戻り値

    戻り値のデータ型は、入力パラメーターのデータ型によって異なります。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE、BIGINT、またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型の場合、DOUBLE型の値が返されます。

    • numberの値がnullに設定されている場合、nullが返されます。

    • 静的データの例

      -- The return value is null. 
      select abs(null);
      -- The return value is 1. 
      select abs(-1);
      -- The return value is 1.2. 
      select abs(-1.2);
      -- The return value is 2.0. 
      select abs("-2");
      -- The return value is 1.2232083745629837 e32. 
      select abs(122320837456298376592387456923748);
      -- Calculate the absolute value of the id field in tbl1. The following example shows the usage of an ABS function in SQL statements. Other built-in functions, except window functions and aggregate functions, are used in a similar way. 
      select abs(id) from tbl1;
    • 表データの例

      サンプルデータに基づいて絶対値を計算します。 例:

      select abs(bigint_data) as bigint_new, abs(double_data) as double_new, abs(decimal_data) as decimal_new, abs(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | 10         | 0.525      | 0.525       | 10.0       |
      | NULL       | 0.1        | 0.1         | 10.0       |
      | 1          | NULL       | 20.45       | 30.0       |
      | 4          | 0.89       | NULL        | 30.0       |
      | 50         | 1.0        | 1           | 50.0       |
      | 6          | 1.5        | 1.5         | 50.0       |
      | 70         | 7.5        | 7.5         | NULL       |
      | 1          | 10.2       | 10.2        | 1.0        |
      | 90         | 2.58       | 2.58        | 0.0        |
      | 10         | 5.8        | 5.8         | 90.0       |
      +------------+------------+-------------+------------+

ACOS

  • 構文

    double|decimal acos(<number>)
  • 説明

    numberの逆余弦を計算します。

  • パラメーター

    number: 必須です。 値の範囲は-1から1です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    戻り値のデータ型は、入力パラメーターのデータ型によって異なります。 値は0から π の範囲です。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値が-1から1の範囲に入らない場合、nullが返されます。 Hive互換データ型エディションが有効になっている場合、NaNが返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 0.5155940062460905. 
      select acos("0.87");
      -- The return value is 1.5707963267948966. 
      select acos(0);
      -- The return value is null. 
      select acos(null);
    • 表データの例

      サンプルデータに基づいて逆余弦を計算します。 例:

      select acos(bigint_data) as bigint_new, acos(double_data) as double_new, acos(decimal_data) as decimal_new, acos(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +-------------------+--------------------+--------------------+---------------------+
      | bigint_new        | double_new         | decimal_new        | string_new          |
      +-------------------+--------------------+--------------------+---------------------+
      | NULL              | 1.0180812136981134 | 1.0180812136981134 | NULL                |
      | NULL              | 1.6709637479564565 | 1.6709637479564565 | NULL                |
      | 3.141592653589793 | NULL               | NULL               | NULL                |
      | NULL              | 0.4734511572720662 | NULL               | NULL                |
      | NULL              | 3.141592653589793  | 3.141592653589793  | NULL                |
      | NULL              | NULL               | NULL               | NULL                |
      | NULL              | NULL               | NULL               | NULL                |
      | 0.0               | NULL               | NULL               | 3.141592653589793   |
      | NULL              | NULL               | NULL               | 1.5707963267948966  |
      | NULL              | NULL               | NULL               | NULL                |
      +-------------------+--------------------+--------------------+---------------------+

ATAN2

  • 構文

    double atan2(<expr1>, <expr2>)
  • 説明

    expr1とexpr2のアークタンジェントを計算します。

  • パラメーター

    • expr1: 必須です。 DOUBLE型の値。 入力値がSTRING型、BIGINT型、またはDECIMAL型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

    • expr2: 必須です。 DOUBLE型の値。 入力値がSTRING型、BIGINT型、またはDECIMAL型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLE型の値が返されます。 戻り値の範囲は -π/2から π/2です。 expr1またはexpr2の値がnullの場合、nullが返されます。

  • -- The return value is 0.0. 
    select atan2(0, 0);

ASIN

  • 構文

    double|decimal asin(<number>)
  • 説明

    numberのアークサインを計算します。

  • パラメーター

    number: 必須です。 値の範囲は-1から1です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    戻り値のデータ型は、入力パラメーターのデータ型によって異なります。 戻り値の範囲は -π/2から π/2です。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値が-1から1の範囲に入らない場合、nullが返されます。 Hive互換データ型エディションが有効になっている場合、NaNが返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 1.5707963267948966. 
      select asin(1);
      -- The return value is 1.5707963267948966. 
      select asin(-1);
      -- The return value is null. 
      select asin(null);
    • 表データの例

      サンプルデータに基づいてアークサインを計算します。 例:

      select asin(bigint_data) as bigint_new, asin(double_data) as double_new, asin(decimal_data) as decimal_new, asin(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +--------------------+---------------------+---------------------+---------------------+
      | bigint_new         | double_new          | decimal_new         | string_new          |
      +--------------------+---------------------+---------------------+---------------------+
      | NULL               | 0.5527151130967832  | 0.5527151130967832  | NULL                |
      | NULL               | -0.1001674211615598 | -0.1001674211615598 | NULL                |
      | -1.5707963267948966| NULL                | NULL                | NULL                |
      | NULL               | 1.0973451695228305  | NULL                | NULL                |
      | NULL               | -1.5707963267948966 | -1.5707963267948966 | NULL                |
      | NULL               | NULL                | NULL                | NULL                |
      | NULL               | NULL                | NULL                | NULL                |
      | 1.5707963267948966 | NULL                | NULL                | -1.5707963267948966 |
      | NULL               | NULL                | NULL                | 0.0                 |
      | NULL               | NULL                | NULL                | NULL                |
      +--------------------+---------------------+---------------------+---------------------+

ATAN

  • 構文

    double atan(<number>)
  • 説明

    numberのアークタンジェントを計算します。

  • パラメーター

    number: 必須です。 DOUBLE型の値。 入力値がSTRING型、BIGINT型、またはDECIMAL型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLE型の値が返されます。 戻り値の範囲は -π/2から π/2です。 numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 0.7853981633974483. 
      select atan(1);
      -- The return value is -0.7853981633974483. 
      select atan(-1);
      -- The return value is null. 
      select atan(null);
    • 表データの例

      サンプルデータに基づいてアークタンジェントを計算します。 例:

      select atan(bigint_data) as bigint_new, atan(double_data) as double_new, atan(decimal_data) as decimal_new, atan(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +---------------------+----------------------+----------------------+---------------------+
      | bigint_new          | double_new           | decimal_new          | string_new          |
      +---------------------+----------------------+----------------------+---------------------+
      | -1.4711276743037347 | 0.483447001567199    | 0.483447001567199    | 1.4711276743037347  |
      | NULL                | -0.09966865249116204 | -0.09966865249116204 | -1.4711276743037347 |
      | -0.7853981633974483 | NULL                 | 1.521935491607842    | 1.5374753309166493  |
      | 1.3258176636680326  | 0.7272626879966904   | NULL                 | -1.5374753309166493 |
      | -1.550798992821746  | -0.7853981633974483  | -0.7853981633974483  | 1.550798992821746   |
      | 1.4056476493802699  | 0.982793723247329    | 0.982793723247329    | -1.550798992821746  |
      | -1.5565115842075    | -1.4382447944982226  | -1.4382447944982226  | NULL                |
      | 0.7853981633974483  | -1.473069419436178   | -1.473069419436178   | -0.7853981633974483 |
      | -1.5596856728972892 | 1.2010277920014796   | 1.2010277920014796   | 0.0                 |
      | 1.4711276743037347  | -1.4000611153196139  | -1.4000611153196139  | -1.5596856728972892 |
      +---------------------+----------------------+----------------------+---------------------+

BIN

  • 構文

    string bin(<number>)
  • 説明

    numberのバイナリコードを計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 値は、BIGINT、INT、SMALLINT、またはTINYINT型です。

  • 戻り値

    STRING型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がBIGINT、INT、SMALLINT、またはTINYINT型でない場合、エラーが返されます。

    • numberの値が0の場合、0が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 0. 
      select bin(0);
      -- The return value is null. 
      select bin(null);
      -- The return value is 1100. 
      select bin(12);
    • 表データの例

      サンプルデータに基づいて、int_data列とbigint_data列の値のバイナリコードを計算します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select bin(int_data) as int_new, bin(bigint_data) as bigint_new from mf_math_fun_t;

      次の応答が返されます。

      +----------------------------------------------------------------------------+------------------------------------------------------------------+
      | int_new                                                                    | bigint_new                                                       |
      +----------------------------------------------------------------------------+------------------------------------------------------------------+
      | NULL                                                                       | 1111111111111111111111111111111111111111111111111111111111110110 |
      | 1111111111111111111111111111111111111111111111111111111111101100           | NULL                                                             |
      | 0                                                                          | 1111111111111111111111111111111111111111111111111111111111111111 |
      | 1111111111111111111111111111111111111111111111111111111111011000           | 100                                                              |
      | 101                                                                        | 1111111111111111111111111111111111111111111111111111111111001110 |
      | 1111111111111111111111111111111111111111111111111111111111000100           | 110                                                              |
      | 1111111111111111111111111111111111111111111111111111111111111111           | 1111111111111111111111111111111111111111111111111111111110111010 |
      | 1111111111111111111111111111111111111111111111111111111110110000           | 1                                                                |
      | 1001                                                                       | 1111111111111111111111111111111111111111111111111111111110100110 |
      | 1111111111111111111111111111111111111111111111111111111110011100           | 1010                                                             |
      +----------------------------------------------------------------------------+------------------------------------------------------------------+

CBRT

  • 構文

    double cbrt(<number>)
  • 説明

    numberの立方根を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 値は、BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、またはSTRING型です。

  • 戻り値

    DOUBLE型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がBIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、またはSTRING型でない場合、エラーが返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2.0. 
      select cbrt(8);
      -- The return value is null. 
      select cbrt(null);
    • 表データの例

      サンプルデータに基づいて、decimal_data列を除く列の値の平方根を計算します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select cbrt(int_data) as int_new, cbrt(bigint_data) as bigint_new, cbrt(double_data) as double_new, cbrt(float_data) as float_new, cbrt(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +---------------------+---------------------+----------------------+---------------------+---------------------+
      | int_new             | bigint_new          | double_new           | float_new           | string_new          |
      +---------------------+---------------------+----------------------+---------------------+---------------------+
      | NULL                | -2.1544346900318834 | 0.806714323012272    | 0.8067143108004823  | 2.1544346900318834  |
      | -2.7144176165949063 | NULL                | -0.46415888336127786 | -0.46415888566678   | -2.1544346900318834 |
      | 0.0                 | -1.0                | NULL                 | -1.0                | 3.107232505953859   |
      | -3.4199518933533937 | 1.5874010519681996  | 0.9619001716077046   | 0.961900166454112   | -3.107232505953859  |
      | 1.7099759466766968  | -3.6840314986403864 | -1.0                 | NULL                | 3.6840314986403864  |
      | -3.9148676411688634 | 1.8171205928321394  | 1.1447142425533317   | 1.1447142425533317  | -3.6840314986403864 |
      | -1.0                | -4.121285299808557  | -1.9574338205844317  | -1.9574338205844317 | NULL                |
      | -4.308869380063767  | 1.0                 | -2.168702885250197   | -2.1687028717323127 | -1.0                |
      | 2.080083823051904   | -4.481404746557165  | 1.3715339700741747   | 1.3715339565548288  | 0.0                 |
      | -4.641588833612778  | 2.1544346900318834  | -1.7967017791430528  | -1.7967017988380907 | -4.481404746557165  |
      +---------------------+---------------------+----------------------+---------------------+---------------------+

CEIL

  • 構文

    bigint ceil(<value>)
  • 説明

    valueを丸めて、最も近い整数を返します。

  • パラメーター

    value: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    BIGINT型の値が返されます。 numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2. 
      select ceil(1.1);
      -- The return value is -1. 
      select ceil(-1.1);
      -- The return value is null. 
      select ceil(null);
    • 表データの例

      サンプルデータに基づいて数値を切り上げます。 例:

      select ceil(bigint_data) as bigint_new, ceil(double_data) as double_new, ceil(decimal_data) as decimal_new, ceil(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10        | 1          | 1           | 10         |
      | NULL       | 0          | 0           | -10        |
      | -1         | NULL       | 21          | 30         |
      | 4          | 1          | NULL        | -30        |
      | -50        | -1         | -1          | 50         |
      | 6          | 2          | 2           | -50        |
      | -70        | -7         | -7          | NULL       |
      | 1          | -10        | -10         | -1         |
      | -90        | 3          | 3           | 0          |
      | 10         | -5         | -5          | -90        |
      +------------+------------+-------------+------------+

CONV

  • 構文

    string conv(<input>, bigint <from_base>, bigint <to_base>)
  • 説明

    ある数値システムから別の数値システムに数値を変換します。

  • パラメーター

    • input: 必須です。 値は変換する整数で、STRING型です。 入力値がBIGINT型またはDOUBLE型の場合、計算前に値は暗黙的にSTRING型の値に変換されます。

    • _baseから _base: 必須です。 これらのパラメータの値は10進数である。 値は、2、8、10、または16とすることができる。 入力値がSTRING型またはDOUBLE型の場合、計算前にBIGINT型の値に暗黙的に変換されます。

  • 戻り値

    STRING型の値が返されます。 戻り値は、次のルールによって異なります。

    • inputfrom_base、またはto_baseの値がnullの場合、nullが返されます。

    • 変換プロセスは64ビット精度で実行されます。 オーバーフローが発生した場合は、nullが返されます。

    • inputの値が負の値の場合、nullが返されます。 入力の値が10進数の場合は、数値系の変換の前に整数に変換されます。 小数部は省略されます。

    • 静的データの例

      -- The return value is 12. 
      select conv('1100', 2, 10);
      -- The return value is C. 
      select conv('1100', 2, 16);
      -- The return value is 171. 
      select conv('ab', 16, 10);
      -- The return value is AB. 
      select conv('ab', 16, 16);
      -- The return value is null. 
      select conv('1100', null, 10);
    • 表データの例

      サンプルデータに基づいて数値をバイナリ値に変換します。 例:

      select conv(bigint_data,10,2) as bigint_new, conv(double_data,10,2) as double_new, conv(decimal_data,10,2) as decimal_new, conv(string_data,10,2) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | NULL       | 0          | 0           | 1010       |
      | NULL       | NULL       | NULL        | NULL       |
      | NULL       | NULL       | 10100       | 11110      |
      | 100        | 0          | NULL        | NULL       |
      | NULL       | NULL       | NULL        | 110010     |
      | 110        | 1          | 1           | NULL       |
      | NULL       | NULL       | NULL        | NULL       |
      | 1          | NULL       | NULL        | NULL       |
      | NULL       | 10         | 10          | 0          |
      | 1010       | NULL       | NULL        | NULL       |
      +------------+------------+-------------+------------+

CORR

  • 構文

    double corr(<col1>, <col2>)
  • 説明

    2列のデータのピアソン相関係数を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    col1およびcol2: 必須です。 ピアソン相関係数が計算される2つの列の名前。 値は、DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、またはDECIMALタイプです。 col1列とcol2列のデータは、異なるデータ型にすることができます。

  • 戻り値

    DOUBLE型の値が返されます。 入力列の行内にnull値がある場合、その行は計算に関与しません。

  • サンプルデータに基づいて、データのdouble_data列とfloat_data列のピアソン相関係数を計算します。 例:

    select corr(double_data,float_data) from mf_math_fun_t;

    戻り値は1.0です。

COS

  • 構文

    double|decimal cos(<number>)
  • 説明

    ラジアン値であるnumberの余弦を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2.6794896585028633e-8. 
      select cos(3.1415926/2);
      -- The return value is -0.9999999999999986. 
      select cos(3.1415926);
      -- The return value is null. 
      select cos(null);
    • 表データの例

      サンプルデータに基づいてコサインを計算します。 例:

      select cos(bigint_data) as bigint_new, cos(double_data) as double_new, cos(decimal_data) as decimal_new, cos(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +---------------------+--------------------+----------------------+---------------------+
      | bigint_new          | double_new         | decimal_new          | string_new          |
      +---------------------+--------------------+----------------------+---------------------+
      | -0.8390715290764524 | 0.8653239416229412 | 0.8653239416229412   | -0.8390715290764524 |
      | NULL                | 0.9950041652780258 | 0.9950041652780258   | -0.8390715290764524 |
      | 0.5403023058681398  | NULL               | -0.02964340851507803 | 0.15425144988758405 |
      | -0.6536436208636119 | 0.6294120265736969 | NULL                 | 0.15425144988758405 |
      | 0.9649660284921133  | 0.5403023058681398 | 0.5403023058681398   | 0.9649660284921133  |
      | 0.960170286650366   | 0.0707372016677029 | 0.0707372016677029   | 0.9649660284921133  |
      | 0.6333192030862999  | 0.3466353178350258 | 0.3466353178350258   | NULL                |
      | 0.5403023058681398  | -0.7142656520272003| -0.7142656520272003  | 0.5403023058681398  |
      | -0.4480736161291701 | -0.8464080412157756| -0.8464080412157756  | 1.0                 |
      | -0.8390715290764524 | 0.8855195169413189 | 0.8855195169413189   | -0.4480736161291701 |
      +---------------------+--------------------+----------------------+---------------------+

COSH

  • 構文

    double|decimal cosh(<number>)
  • 説明

    numberの双曲線余弦を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2.5091784169949913. 
      select cosh(3.1415926/2);
      -- The return value is null. 
      select cosh(null);
    • 表データの例

      サンプルデータに基づいて双曲線余弦を計算します。 例:

      select cosh(bigint_data) as bigint_new, cosh(double_data) as double_new, cosh(decimal_data) as decimal_new, cosh(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +-----------------------+--------------------+--------------------+----------------------+
      | bigint_new            | double_new         | decimal_new        | string_new           |
      +-----------------------+--------------------+--------------------+----------------------+
      | 11013.232920103324    | 1.1410071063729532 | 1.1410071063729532 | 11013.232920103324   |
      | NULL                  | 1.0050041680558035 | 1.0050041680558035 | 11013.232920103324   |
      | 1.5430806348152437    | NULL               | 380445243.96844625 | 5343237290762.231    |
      | 27.308232836016487    | 1.42289270202111   | NULL               | 5343237290762.231    |
      | 2.592352764293536e21  | 1.5430806348152437 | 1.5430806348152437 | 2.592352764293536e21 |
      | 201.7156361224559     | 2.352409615243247  | 2.352409615243247  | 2.592352764293536e21 |
      | 1.2577193354595834e30 | 904.0214837702166  | 904.0214837702166  | NULL                 |
      | 1.5430806348152437    | 13451.593055733929 | 13451.593055733929 | 1.5430806348152437   |
      | 6.102016471589204e38  | 6.636456081840602  | 6.636456081840602  | 1.0                  |
      | 11013.232920103324    | 165.151293732197   | 165.151293732197   | 6.102016471589204e38 |
      +-----------------------+--------------------+--------------------+----------------------+

COT

  • 構文

    double|decimal cot(<number>)
  • 説明

    ラジアン値であるnumberのコタンジェントを計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2.6794896585028643E-8. 
      select cot(3.1415926/2);
      -- The return value is null. 
      select cot(null);
    • 表データの例

      サンプルデータに基づいてコタンジェントを計算します。 例:

      selectcot(bigint_data)asbigint_new,cot(double_data)asdouble_new,cot(decimal_data)asdecimal_new,cot(string_data)asstring_newfrommf_math_fun_t;

      次の応答が返されます。

      +-----------------------+--------------------+--------------------+----------------------+
      | bigint_new            | double_new         | decimal_new        | string_new           |
      +-----------------------+--------------------+--------------------+----------------------+
      | -1.54235104535692     | 1.7264594764178474 | 1.7264594764178474 | 1.54235104535692     |
      | NULL                  | -9.966644423259238 | -9.966644423259238 | -1.54235104535692    |
      | -0.6420926159343308   | NULL               | -0.02965644140592836| -0.15611995216165922|
      | 0.8636911544506167    | 0.8099792954471944 | NULL               | 0.15611995216165922  |
      | 3.6778144508505695    | -0.6420926159343308| -0.6420926159343308| -3.6778144508505695  |
      | -3.436353004180128    | 0.07091484430265245| 0.07091484430265245| 3.6778144508505695   |
      | -0.8183574478651038   | -0.36954725630901636| -0.36954725630901636| NULL               |
      | 0.6420926159343308    | -1.0205622016180353 | -1.0205622016180353 | -0.6420926159343308|
      | 0.5012027833801532    | -1.5893944776331337 | -1.5893944776331337 | 1.0                |
      | 1.54235104535692      | 1.9059736612916494  | 1.9059736612916494  | 0.5012027833801532 |
      +-----------------------+---------------------+---------------------+--------------------+

DEGREES

  • 構文

    double degrees(<number>) 
  • 説明

    ラジアン値を次数に変換します。

  • パラメーター

    number: 必須です。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。 この関数は、MaxCompute V2.0の追加関数です。

  • 戻り値

    DOUBLE型の値が返されます。 numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 90.0. 
      select degrees(1.5707963267948966);
      -- The return value is 0.0. 
      select degrees(0);
      -- The return value is null. 
      select degrees(null);
    • 表データの例

      サンプルデータに基づいて、すべての列に対応するすべての度を取得します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select degrees(int_data) as int_new, degrees(bigint_data) as bigint_new, degrees(double_data) as double_new, degrees(decimal_data) as decimal_new, degrees(float_data) as float_new, degrees(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
      | int_new             | bigint_new          | double_new          | decimal_new         | float_new           | string_new          |
      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
      | NULL                | -572.9577951308232  | 30.08028424436822   | 30.08028424436822   | 30.080282878330387  | 572.9577951308232   |
      | -1145.9155902616465 | NULL                | -5.729577951308232  | -5.729577951308232  | -5.729578036685597  | -572.9577951308232  |
      | 0.0                 | -57.29577951308232  | NULL                | 1171.6986910425335  | -57.29577951308232  | 1718.8733853924698  |
      | -2291.831180523293  | 229.1831180523293   | 50.99324376664326   | NULL                | 50.99324294702057   | -1718.8733853924698 |
      | 286.4788975654116   | -2864.7889756541163 | -57.29577951308232  | -57.29577951308232  | NULL                | 2864.7889756541163  |
      | -3437.7467707849396 | 343.77467707849394  | 85.94366926962348   | 85.94366926962348   | 85.94366926962348   | -2864.7889756541163 |
      | -57.29577951308232  | -4010.7045659157625 | -429.71834634811745 | -429.71834634811745 | -429.71834634811745 | NULL                |
      | -4583.662361046586  | 57.29577951308232   | -584.4169510334397  | -584.4169510334397  | -584.416940105137   | -57.29577951308232  |
      | 515.662015617741    | -5156.620156177409  | 147.8231111437524   | 147.8231111437524   | 147.82310677243132  | 0.0                 |
      | -5729.5779513082325 | 572.9577951308232   | -332.31552117587745 | -332.31552117587745 | -332.31553210418014 | -5156.620156177409  |
      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

E

  • 構文

    double e()
  • 説明

    eの値を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • 戻り値

    DOUBLE型の値が返されます。

  • -- The return value is 2.718281828459045. 
    select e();

EXP

  • 構文

    double|decimal exp(<number>)
  • 説明

    numberの指数値を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 4.810477252069109. 
      select exp(3.1415926/2);
      -- The return value is null. 
      select exp(null);
    • 表データの例

      サンプルデータに基づいて指数値を計算します。 例:

      select exp(bigint_data) as bigint_new, exp(double_data) as double_new, exp(decimal_data) as decimal_new, exp(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +-------------------------+-------------------------+-------------------------+-------------------------+
      | bigint_new              | double_new              | decimal_new             | string_new              |
      +-------------------------+-------------------------+-------------------------+-------------------------+
      | 0.000045399929762484854 | 1.6904588483790914      | 1.6904588483790914      | 22026.465794806718      |
      | NULL                    | 0.9048374180359595      | 0.9048374180359595      | 0.000045399929762484854 |
      | 0.36787944117144233     | NULL                    | 760890487.9368925       | 10686474581524.463      |
      | 54.598150033144236      | 2.4351296512898744      | NULL                    | 9.357622968840175e-14   |
      | 1.9287498479639178e-22  | 0.36787944117144233     | 0.36787944117144233     | 5.184705528587072e21    |
      | 403.4287934927351       | 4.4816890703380645      | 4.4816890703380645      | 1.9287498479639178e-22  |
      | 3.975449735908647e-31   | 0.0005530843701478336   | 0.0005530843701478336   | NULL                    |
      | 2.718281828459045       | 0.000037170318684126734 | 0.000037170318684126734 | 0.36787944117144233     |
      | 8.194012623990515e-40   | 13.197138159658358      | 13.197138159658358      | 1.0                     |
      | 22026.465794806718      | 0.0030275547453758153   | 0.0030275547453758153   | 8.194012623990515e-40   |
      +-------------------------+-------------------------+-------------------------+-------------------------+

FACTORIAL

  • 構文

    bigint factorial(<number>)
  • 説明

    numberの階乗を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 値はBIGINT、INT、SMALLINT、またはTINYINTタイプで、0から20の範囲です。

  • 戻り値

    BIGINT型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値が0の場合、1が返されます。

    • numberの値がnullの場合、または0から20の範囲に該当しない値の場合は、nullが返されます。

    • 静的データの例

      -- The return value is 120. 5!=5*4*3*2*1=120
      select factorial(5); 
      -- The return value is 1. 
      select factorial(0); 
      -- The return value is null. 
      select factorial(null);
    • 表データの例

      サンプルデータに基づいてint_data列とbigint_data列の値の階乗を計算します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select factorial(int_data) as int_new, factorial(bigint_data) as bigint_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+
      | int_new    | bigint_new |
      +------------+------------+
      | NULL       | NULL       |
      | NULL       | NULL       |
      | 1          | NULL       |
      | NULL       | 24         |
      | 120        | NULL       |
      | NULL       | 720        |
      | NULL       | NULL       |
      | NULL       | 1          |
      | 362880     | NULL       |
      | NULL       | 3628800    |
      +------------+------------+

フィルター

  • 構文

    array<T> filter(array<T> <a>, function<T,boolean> <func>)
  • パラメーター

    • a: 必須です。 このパラメーターは、配列を指定します。 array<T>Tは、配列内の要素のデータ型を指定します。 要素は任意のデータ型にすることができます。

    • func: 必須です。 このパラメーターには、Array aの要素をフィルター処理するために使用される組み込み関数、ユーザー定義関数、または式指定します。 値は、配列aの要素と同じデータ型である必要があります。 関数または式の出力結果はBOOLEAN型です。

  • 戻り値

    ARRAY型の値が返されます。

  • -- The return value is [2, 3]. 
    select filter(array(1, 2, 3), x -> x > 1);
    説明

    この例では、ハイフンとクロージングアングルブラケット (->) の組み合わせが使用されています。 Lambda関数でハイフンとクロージングアングルブラケット (->) の組み合わせを使用する方法の詳細については、「Lambda関数」をご参照ください。

FLOOR

  • 構文

    bigint floor(<number>)
  • 説明

    numberを丸め、numberの値以下の最も近い整数を返します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    BIGINT型の値が返されます。 numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 1. 
      select floor(1.2);
      -- The return value is 0. 
      select floor(0.1);
      -- The return value is -2. 
      select floor(-1.2);
      -- The return value is -1. 
      select floor(-0.1);
      -- The return value is 0. 
      select floor(0.0);
      -- The return value is 0. 
      select floor(-0.0);
      -- The return value is null. 
      select floor(null);
    • 表データの例

      サンプルデータに基づいて数値を切り下げます。 例:

      select floor(bigint_data) as bigint_new, floor(double_data) as double_new, floor(decimal_data) as decimal_new, floor(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10        | 0          | 0           | 10         |
      | NULL       | -1         | -1          | -10        |
      | -1         | NULL       | 20          | 30         |
      | 4          | 0          | NULL        | -30        |
      | -50        | -1         | -1          | 50         |
      | 6          | 1          | 1           | -50        |
      | -70        | -8         | -8          | NULL       |
      | 1          | -11        | -11         | -1         |
      | -90        | 2          | 2           | 0          |
      | 10         | -6         | -6          | -90        |
      +------------+------------+-------------+------------+

FORMAT_NUMBER

  • 構文

    string format_number(float|double|decimal <expr1>, <expr2>)
  • 説明

    数値を指定した形式の文字列に変換します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    • expr1: 必須です。 このパラメータは、フォーマットする式を指定します。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。

    • expr2: 必須です。 このパラメーターは、変換後の式の形式を指定します。 保持する小数点以下の桁数を指定できます。 また、#,###,###.# と同様の形式で表現することもできます。

  • 戻り値

    STRING型の値が返されます。 戻り値は、次のルールによって異なります。

    • expr2が0より大きい場合、値は小数点以下の指定された場所に丸められます。

    • expr2が0に等しい場合、値には小数点または小数部はありません。

    • expr2が0未満または340を超える場合、エラーが返されます。

    • expr1またはexpr2の値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 5.230. 
      select format_number(5.230134523424545456,3);
      -- The return value is 12,332.123. 
      select format_number(12332.123456, '#,###,###,###.###');
      -- The return value is null. 
      select format_number(null,3);
    • 表データの例

      サンプルデータに基づいて、すべての列の値を指定した小数点以下の桁数に保持します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +---------+------------+------------+-------------+-----------+------------+
      | int_new | bigint_new | double_new | decimal_new | float_new | string_new |
      +---------+------------+------------+-------------+-----------+------------+
      | NULL    | -10.0      | 0.53       | 0.5         | 1         | 10.0       |
      | -20.0   | NULL       | -0.10      | -0.1        | -0        | -10.0      |
      | 0.0     | -1.0       | NULL       | 20.5        | -1        | 30.0       |
      | -40.0   | 4.0        | 0.89       | NULL        | 1         | -30.0      |
      | 5.0     | -50.0      | -1.00      | -1.0        | NULL      | 50.0       |
      | -60.0   | 6.0        | 1.50       | 1.5         | 2         | -50.0      |
      | -1.0    | -70.0      | -7.50      | -7.5        | -8        | NULL       |
      | -80.0   | 1.0        | -10.20     | -10.2       | -10       | -1.0       |
      | 9.0     | -90.0      | 2.58       | 2.6         | 3         | 0.0        |
      | -100.0  | 10.0       | -5.80      | -5.8        | -6        | -90.0      |
      +---------+------------+------------+-------------+-----------+------------+

HEX

  • 構文

    string hex(<number>) 
  • 説明

    数値または文字列を16進数に変換します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。

  • 戻り値

    STRING型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値が0またはnullでない場合、STRING型の値が返されます。

    • numberの値が0の場合、0が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 0. 
      select hex(0);
      -- The return value is 616263. 
      select hex('abc');
      -- The return value is 11. 
      select hex(17);
      -- The return value is 3137. 
      select hex('17');
      -- An error is returned.  
      select hex(null);
    • 表データの例

      サンプルデータに基づいて、すべての列の数値を16進数に変換します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select hex(int_data) as int_new, hex(bigint_data) as bigint_new, hex(double_data) as double_new, hex(decimal_data) as decimal_new, hex(float_data) as float_new, hex(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------------+------------------+------------+-------------+------------+------------+
      | int_new          | bigint_new       | double_new | decimal_new | float_new  | string_new |
      +------------------+------------------+------------+-------------+------------+------------+
      | NULL             | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235  | 302E353235 | 3130       |
      | FFFFFFFFFFFFFFEC | NULL             | 2D302E31   | 2D302E31    | 2D302E31   | 2D3130     |
      | 0                | FFFFFFFFFFFFFFFF | NULL       | 32302E3435  | 2D31       | 3330       |
      | FFFFFFFFFFFFFFD8 | 4                | 302E3839   | NULL        | 302E3839   | 2D3330     |
      | 5                | FFFFFFFFFFFFFFCE | 2D312E30   | 2D31        | NULL       | 3530       |
      | FFFFFFFFFFFFFFC4 | 6                | 312E35     | 312E35      | 312E35     | 2D3530     |
      | FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35   | 2D372E35    | 2D372E35   | NULL       |
      | FFFFFFFFFFFFFFB0 | 1                | 2D31302E32 | 2D31302E32  | 2D31302E32 | 2D31       |
      | 9                | FFFFFFFFFFFFFFA6 | 322E3538   | 322E3538    | 322E3538   | 30         |
      | FFFFFFFFFFFFFF9C | A                | 2D352E38   | 2D352E38    | 2D352E38   | 2D3930     |
      +------------------+------------------+------------+-------------+------------+------------+

ISNAN

  • 構文

    boolean isnan(<expr>)
  • 説明

    exprの値がNaNかどうかをチェックします。

  • パラメーター

    expr: 必須です。 DOUBLE型の値。 入力値がSTRING型、BIGINT型、またはDECIMAL型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    • exprの値がNaNの場合、Trueが返されます。 それ以外の場合は、falseが返されます。

    • exprの値がnullの場合、Falseが返されます。

  • -- The return value is False. 
    SELECT isnan(100.1);

LN

  • 構文

    double|decimal ln(<number>)
  • 説明

    numberの自然対数を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値が負の値または0の場合、nullが返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 1.144729868791239. 
      select ln(3.1415926);
      -- The return value is null. 
      select ln(null);
    • 表データの例

      サンプルデータに基づいて自然対数値を計算します。 例:

      select ln(bigint_data) as bigint_new, ln(double_data) as double_new, ln(decimal_data) as decimal_new, ln(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +--------------------+----------------------+---------------------+---------------------+
      | bigint_new         | double_new           | decimal_new         | string_new          |
      +--------------------+----------------------+---------------------+---------------------+
      | NULL               | -0.6443570163905132  | -0.6443570163905132 | 2.302585092994046   |
      | NULL               | NULL                 | NULL                | NULL                |
      | NULL               | NULL                 | 3.017982882488811   | 3.4011973816621555  |
      | 1.3862943611198906 | -0.11653381625595151 | NULL                | NULL                |
      | NULL               | NULL                 | NULL                | 3.912023005428146   |
      | 1.791759469228055  | 0.4054651081081644   | 0.4054651081081644  | NULL                |
      | NULL               | NULL                 | NULL                | NULL                |
      | 0.0                | NULL                 | NULL                | NULL                |
      | NULL               | 0.9477893989335261   | 0.9477893989335261  | NULL                |
      | 2.302585092994046  | NULL                 | NULL                | NULL                |
      +--------------------+----------------------+---------------------+---------------------+

LOG

  • 構文

    double log(<base>, <x>)
  • 説明

    基数がbaseであるxの対数を計算します。

  • パラメーター

    • base: 必須です。 ベース番号。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

    • x: 必須です。 対数が計算される値。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLE型の値が返されます。 戻り値は、次のルールによって異なります。

    • baseまたはxの値がnullの場合、nullが返されます。

    • baseまたはxの値が負の値または0の場合、nullが返されます。

    • baseの値が1の場合、nullが返されます。 値1はゼロによる除算を引き起こす。

    • 静的データの例

      -- The return value is 4.0. 
      select log(2, 16);
      -- The return value is null. 
      select log(2, null);
    • 表データの例

      サンプルデータに基づいて、基数が2の列の対数値を計算します。 例:

      select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +--------------------+----------------------+--------------------+--------------------+
      | bigint_new         | double_new           | decimal_new        | string_new         |
      +--------------------+----------------------+--------------------+--------------------+
      | NULL               | -0.929610672108602   | -0.929610672108602 | 3.3219280948873626 |
      | NULL               | NULL                 | NULL               | NULL               |
      | NULL               | NULL                 | 4.354028938054387  | 4.906890595608519  |
      | 2.0                | -0.16812275880832692 | NULL               | NULL               |
      | NULL               | NULL                 | NULL               | 5.643856189774724  |
      | 2.584962500721156  | 0.5849625007211562   | 0.5849625007211562 | NULL               |
      | NULL               | NULL                 | NULL               | NULL               |
      | 0.0                | NULL                 | NULL               | NULL               |
      | NULL               | 1.3673710656485296   | 1.3673710656485296 | NULL               |
      | 3.3219280948873626 | NULL                 | NULL               | NULL               |
      +--------------------+----------------------+--------------------+--------------------+

LOG10

  • 構文

    double log10(<number>)
  • 説明

    基数が10のnumberの対数を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。

  • 戻り値

    DOUBLE型の値が返されます。 numberの値が0、負の値、またはnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is null. 
      select log10(null);
      -- The return value is null. 
      select log10(0);
      -- The return value is 0.9030899869919435. 
      select log10(8);
    • 表データの例

      サンプルデータに基づいて、基数が10のすべての列の値の対数を計算します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select log10(int_data) as int_new, log10(bigint_data) as bigint_new, log10(double_data) as double_new, log10(decimal_data) as decimal_new, log10(float_data) as float_new, log10(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
      | int_new            | bigint_new         | double_new          | decimal_new         | float_new             | string_new         |
      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
      | NULL               | NULL               | -0.2798406965940431 | -0.2798406965940431 | -0.27984071631668606  | 1.0                |
      | NULL               | NULL               | NULL                | NULL                | NULL                  | NULL               |
      | NULL               | NULL               | NULL                | 1.3106933123433606  | NULL                  | 1.4771212547196624 |
      | NULL               | 0.6020599913279623 | -0.0506099933550872 | NULL                | -0.050610000335573106 | NULL               |
      | 0.6989700043360187 | NULL               | NULL                | NULL                | NULL                  | 1.6989700043360185 |
      | NULL               | 0.7781512503836435 | 0.17609125905568124 | 0.17609125905568124 | 0.17609125905568124   | NULL               |
      | NULL               | NULL               | NULL                | NULL                | NULL                  | NULL               |
      | NULL               | 0.0                | NULL                | NULL                | NULL                  | NULL               |
      | 0.9542425094393249 | NULL               | 0.4116197059632301  | 0.4116197059632301  | 0.411619693120579     | NULL               |
      | NULL               | 1.0                | NULL                | NULL                | NULL                  | NULL               |
      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+

LOG2

  • 構文

    double log2(<number>)
  • 説明

    基数が2のnumberの対数を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。

  • 戻り値

    DOUBLE型の値が返されます。 numberの値が0、負の値、またはnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is null. 
      select log2(null);
      -- The return value is null. 
      select log2(0);
      -- The return value is 3.0. 
      select log2(8);
    • 表データの例

      サンプルデータに基づいて、基数が2のすべての列の対数を計算します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select log2(int_data) as int_new, log2(bigint_data) as bigint_new, log2(double_data) as double_new, log2(decimal_data) as decimal_new, log2(float_data) as float_new, log2(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
      | int_new            | bigint_new         | double_new           | decimal_new        | float_new            | string_new         |
      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
      | NULL               | NULL               | -0.929610672108602   | -0.929610672108602 | -0.9296107376258038  | 3.3219280948873626 |
      | NULL               | NULL               | NULL                 | NULL               | NULL                 | NULL               |
      | NULL               | NULL               | NULL                 | 4.354028938054387  | NULL                 | 4.906890595608519  |
      | NULL               | 2.0                | -0.16812275880832692 | NULL               | -0.16812278199699915 | NULL               |
      | 2.321928094887362  | NULL               | NULL                 | NULL               | NULL                 | 5.643856189774724  |
      | NULL               | 2.584962500721156  | 0.5849625007211562   | 0.5849625007211562 | 0.5849625007211562   | NULL               |
      | NULL               | NULL               | NULL                 | NULL               | NULL                 | NULL               |
      | NULL               | 0.0                | NULL                 | NULL               | NULL                 | NULL               |
      | 3.1699250014423126 | NULL               | 1.3673710656485296   | 1.3673710656485296 | 1.367371022986166    | NULL               |
      | NULL               | 3.3219280948873626 | NULL                 | NULL               | NULL                 | NULL               |
      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+

NEGATIVE

  • 構文

    TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
  • 説明

    exprの負の値を返します。

  • パラメーター

    expr: 必須です。 この値は、TINYINT、SMALLINT、INT、BIGINT、DOUBLE、またはDECIMAL型の式です。

  • 戻り値

    exprの負の値が返されます。

  • -- The return value is -1. 
    SELECT negative(1);

PI

  • 構文

    double pi()
  • 説明

    π の値を計算します。 この関数は、MaxCompute V2.0の追加関数です。

  • 戻り値

    DOUBLE型の値が返されます。

  • -- The return value is 3.141592653589793. 
    select pi();

POSITIVE

  • 構文

    TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
  • 説明

    exprの値を返します。

  • パラメーター

    expr: 必須です。 この値は、TINYINT、SMALLINT、INT、BIGINT、DOUBLE、またはDECIMAL型の式です。

  • 戻り値

    exprの値が返されます。

  • -- The return value is 1. 
    SELECT positive(1);

POW

  • 構文

    double|decimal pow(<x>, <y>)
  • 説明

    xy乗、つまりx ^ yを計算します。

  • パラメーター

    • x: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

    • y: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • xまたはyがDOUBLEまたはDECIMAL型の場合、同じ型の値が返されます。

    • xまたはyがSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • xまたはyの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 65536.0. 
      select pow(2, 16);
      -- The return value is null. 
      select pow(2, null);
    • 表データの例

      サンプルデータに基づいて、列の値の2乗を計算します。 例:

      select pow(bigint_data, 2) as bigint_new, pow(double_data, 2) as double_new, pow(decimal_data, 2) as decimal_new, pow(string_data, 2) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+----------------------+----------------------+------------+
      | bigint_new | double_new           | decimal_new          | string_new |
      +------------+----------------------+----------------------+------------+
      | 100.0      | 0.275625             | 0.275625             | 100.0      |
      | NULL       | 0.010000000000000002 | 0.010000000000000002 | 100.0      |
      | 1.0        | NULL                 | 418.2025             | 900.0      |
      | 16.0       | 0.7921               | NULL                 | 900.0      |
      | 2500.0     | 1.0                  | 1.0                  | 2500.0     |
      | 36.0       | 2.25                 | 2.25                 | 2500.0     |
      | 4900.0     | 56.25                | 56.25                | NULL       |
      | 1.0        | 104.03999999999999   | 104.03999999999999   | 1.0        |
      | 8100.0     | 6.6564000000000005   | 6.6564000000000005   | 0.0        |
      | 100.0      | 33.64                | 33.64                | 8100.0     |
      +------------+----------------------+----------------------+------------+

RADIANS

  • 構文

    double radians(<number>)
  • 説明

    次数をラジアン値に変換します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。

  • 戻り値

    DOUBLE型の値が返されます。 numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 1.5707963267948966. 
      select radians(90);
      -- The return value is 0.0. 
      select radians(0);
      -- The return value is null. 
      select radians(null);
    • 表データの例

      サンプルデータに基づいて、すべての列の値をラジアン値に変換します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select radians(int_data) as int_new, radians(bigint_data) as bigint_new, radians(double_data) as double_new, radians(decimal_data) as decimal_new, radians(float_data) as float_new, radians(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
      | int_new               | bigint_new            | double_new             | decimal_new            | float_new              | string_new            |
      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
      | NULL                  | -0.17453292519943295  | 0.00916297857297023    | 0.00916297857297023    | 0.009162978156851308   | 0.17453292519943295   |
      | -0.3490658503988659   | NULL                  | -0.0017453292519943296 | -0.0017453292519943296 | -0.0017453292780017621 | -0.17453292519943295  |
      | 0.0                   | -0.017453292519943295 | NULL                   | 0.3569198320328404     | -0.017453292519943295  | 0.5235987755982988    |
      | -0.6981317007977318   | 0.06981317007977318   | 0.015533430342749534   | NULL                   | 0.015533430093078181   | -0.5235987755982988   |
      | 0.08726646259971647   | -0.8726646259971648   | -0.017453292519943295  | -0.017453292519943295  | NULL                   | 0.8726646259971648    |
      | -1.0471975511965976   | 0.10471975511965977   | 0.02617993877991494    | 0.02617993877991494    | 0.02617993877991494    | -0.8726646259971648   |
      | -0.017453292519943295 | -1.2217304763960306   | -0.1308996938995747    | -0.1308996938995747    | -0.1308996938995747    | NULL                  |
      | -1.3962634015954636   | 0.017453292519943295  | -0.17802358370342158   | -0.17802358370342158   | -0.17802358037447025   | -0.017453292519943295 |
      | 0.15707963267948966   | -1.5707963267948966   | 0.045029494701453704   | 0.045029494701453704   | 0.04502949336987316    | 0.0                   |
      | -1.7453292519943295   | 0.17453292519943295   | -0.10122909661567112   | -0.10122909661567112   | -0.10122909994462247   | -1.5707963267948966   |
      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+

RAND

  • 構文

    double rand(bigint <seed>)
  • 説明

    DOUBLE型の乱数を返します。 値の範囲は0から1です。

パラメーター

  • seed: オプション。 値はBIGINT型です。 このパラメーターは、乱数を生成する際の開始点を決定するランダムシードを指定します。

    説明

    seedを使用して、乱数シーケンスを決定できます。 seedが決定された後、この関数の戻り値は固定されます。 実行環境が同じで、シード値が変更されない場合、戻り値は同じになります。 異なる結果を返す必要がある場合は、シード値を変更する必要があります。

    SQL文の前に次のパラメーターを追加できます。デフォルト値はfalseです。

    set odps.sql.executionengine.enable.rand.time.seed=true | false;
    • パラメーター値がfalseの場合、RAND関数は現在のInstanceIdを乱数として使用してシードを初期化します。これにより、関数のべき等性が保証されます。

    • パラメータ値がtrueの場合、RAND関数は現在のシステム時間をシードを初期化するための乱数として使用します。 しかし、RAND関数は、もはやべき等ではなく、再実行時に異なる結果をもたらすので、シャッフルキーとして使用することはできない。

  • 戻り値

    DOUBLE型の値が返されます。

  • -- The return value is 4.7147460303803655E-4. 
    select rand();
    -- The return value is 0.7308781907032909. 
    select rand(1);

ROUND

  • 構文

    double|decimal round(<number>[, bigint <decimal_places>])
  • 説明

    指定された小数点以下の桁に丸めた数値を返します。

  • パラメーター

    • number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

    • decimal_places: オプション。 値はBIGINT型の定数です。 このパラメータは、数値を四捨五入する小数点以下の桁を指定します。 このパラメーターが指定されていない場合、数値は1つの場所に丸められます。 デフォルト値は 0 です。

      説明

      deciment_placesの値は負にすることができます。 負の値は、小数点から左にカウントすることを示し、小数部は除外される。 deciment_placesが整数部分の長さを超える場合、0が返されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • deciment_placesがBIGINT型でない場合、エラーが返されます。

    • numberまたはdeciment_placesの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 125.0. 
      select round(125.315);
      -- The return value is 125.3. 
      select round(125.315, 1);
      -- The return value is 125.32. 
      select round(125.315, 2);
      -- The return value is 125.315. 
      select round(125.315, 3);
      -- The return value is -125.32. 
      select round(-125.315, 2);
      -- The return value is 100.0. 
      select round(123.345, -2);
      -- The return value is null. 
      select round(null);
      -- The return value is 123.345. 
      select round(123.345, 4);
      -- The return value is 0.0. 
      select round(123.345, -4);
    • 表データの例

      サンプルデータに基づいて、列内で指定した小数点以下の桁に丸められた数値を返します。 例:

      select round(bigint_data, 1) as bigint_new, round(double_data, 2) as double_new, round(decimal_data, 1) as decimal_new, round(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10.0      | 0.53       | 0.5         | 10.0       |
      | NULL       | -0.1       | -0.1        | -10.0      |
      | -1.0       | NULL       | 20.5        | 30.0       |
      | 4.0        | 0.89       | NULL        | -30.0      |
      | -50.0      | -1.0       | -1          | 50.0       |
      | 6.0        | 1.5        | 1.5         | -50.0      |
      | -70.0      | -7.5       | -7.5        | NULL       |
      | 1.0        | -10.2      | -10.2       | -1.0       |
      | -90.0      | 2.58       | 2.6         | 0.0        |
      | 10.0       | -5.8       | -5.8        | -90.0      |
      +------------+------------+-------------+------------+

SHIFTLEFT

  • 構文

    int shiftleft(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftleft(bigint <number1>, int <number2>)
  • 説明

    値を特定の桁数だけ左にシフトします (<<) 。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    • number1: 必須です。 値は、TINYINT、SMALLINT、INT、またはBIGINT型です。

    • number2: 必須です。 値はINT型です。

  • 戻り値

    INTまたはBIGINT型の値が返されます。 戻り値は、次のルールによって異なります。

    • number1の値がTINYINT、SMALLINT、INT、またはBIGINT型でない場合、エラーが返されます。

    • number2の値がINT型でない場合、エラーが返されます。

    • number1またはnumber2の値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 4. The following statement shifts the binary value of 1 two places to the left (1<<2,0001 shifted to be 0100). 
      select shiftleft(1,2); 
      -- The return value is 32. The following statement shifts the binary value of 4 three places to the left (4<<3,0100 shifted to be 100000). 
      select shiftleft(4,3);
      -- The return value is null. 
      select shiftleft(null,2);
    • 表データの例

      サンプルデータに基づいて、int_data列とbigint_data列の番号を特定の桁数だけシフトします。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select shiftleft(int_data, 1) as int_new, shiftleft(bigint_data, 1) as bigint_new from mf_math_fun_t;

      次の応答が返されます。

      +---------+------------+
      | int_new | bigint_new |
      +---------+------------+
      | NULL    | -20        |
      | -40     | NULL       |
      | 0       | -2         |
      | -80     | 8          |
      | 10      | -100       |
      | -120    | 12         |
      | -2      | -140       |
      | -160    | 2          |
      | 18      | -180       |
      | -200    | 20         |
      +---------+------------+

SHIFTRIGHT

  • 構文

    int shiftright(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftright(bigint <number1>, int <number2>)
  • 説明

    値を特定の桁数 (>>) だけシフトします。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    • number1: 必須です。 値は、TINYINT、SMALLINT、INT、またはBIGINT型です。

    • number2: 必須です。 値はINT型です。

  • 戻り値

    INTまたはBIGINT型の値が返されます。 戻り値は、次のルールによって異なります。

    • number1の値がTINYINT、SMALLINT、INT、またはBIGINT型でない場合、エラーが返されます。

    • number2の値がINT型でない場合、エラーが返されます。

    • number1またはnumber2の値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 1. The following statement shifts the binary value of 4 two places to the right (4>>2,0100 shifted to be 0001). 
      select shiftright(4,2);
      -- The return value is 4. The following statement shifts the binary value of 32 three places to the right (32>>3,100000 shifted to be 0100). 
      select shiftright(32,3);
      -- The return value is null. 
      select shiftright(null,3);
    • 表データの例

      サンプルデータに基づいて、int_data列とbigint_data列の番号を特定の桁数だけシフトします。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select shiftright(int_data, 1) as int_new, shiftright(bigint_data, 1) as bigint_new from mf_math_fun_t;

      次の応答が返されます。

      +---------+------------+
      | int_new | bigint_new |
      +---------+------------+
      | NULL    | -5         |
      | -10     | NULL       |
      | 0       | -1         |
      | -20     | 2          |
      | 2       | -25        |
      | -30     | 3          |
      | -1      | -35        |
      | -40     | 0          |
      | 4       | -45        |
      | -50     | 5          |
      +---------+------------+

SHIFTRIGHTUNSIGNED

  • 構文

    int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftrightunsigned(bigint <number1>, int <number2>)
  • 説明

    符号なしの値を特定の桁数 (>>>) だけシフトします。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    • number1: 必須です。 値は、TINYINT、SMALLINT、INT、またはBIGINT型の整数です。

    • number2: 必須です。 値はINT型の整数です。

  • 戻り値

    INTまたはBIGINT型の値が返されます。 戻り値は、次のルールによって異なります。

    • number1の値がTINYINT、SMALLINT、INT、またはBIGINT型でない場合、エラーが返されます。

    • number2の値がINT型でない場合、エラーが返されます。

    • number1またはnumber2の値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2. The following statement shifts the binary unsigned value of 8 two places to the right (8>>>2,1000 shifted to be 0010). 
      select shiftrightunsigned(8,2);
      -- The return value is 1073741820. The following statement shifts the binary value of -14 two places to the right (-14>>>2, 11111111 11111111 11111111 11110010 shifted to be 00111111 11111111 11111111 11111100). 
      select shiftrightunsigned(-14,2);
      -- The return value is null. 
      select shiftrightunsigned(-14,null);
    • 表データの例

      int_data列とbigint_data列の符号なしの値を、サンプルデータに基づいて特定の桁数だけ右にシフトします。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select shiftrightunsigned(int_data, 1) as int_new, shiftrightunsigned(bigint_data, 1) as bigint_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+---------------------+
      | int_new    | bigint_new          |
      +------------+---------------------+
      | NULL       | 9223372036854775803 |
      | 2147483638 | NULL                |
      | 0          | 9223372036854775807 |
      | 2147483628 | 2                   |
      | 2          | 9223372036854775783 |
      | 2147483618 | 3                   |
      | 2147483647 | 9223372036854775773 |
      | 2147483608 | 0                   |
      | 4          | 9223372036854775763 |
      | 2147483598 | 5                   |
      +------------+---------------------+

SIGN

  • 構文

    double sign(<number>)
  • 説明

    入力値の符号を返します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、またはSTRING型の値。

  • 戻り値

    DOUBLE型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値が正の値の場合、1.0が返されます。

    • numberの値が負の値の場合、-1.0が返されます。

    • numberの値が0の場合、0.0が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is -1.0. 
      select sign(-2.5);
      -- The return value is 1.0. 
      select sign(2.5);
      -- The return value is 0.0. 
      select sign(0);
      -- The return value is null. 
      select sign(null);
    • 表データの例

      サンプルデータに基づいて、すべての列の数字の符号を取得します。 例:

      -- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
      set odps.sql.type.system.odps2=true;
      select sign(int_data) as int_new, sign(bigint_data) as bigint_new, sign(double_data) as double_new, sign(decimal_data) as decimal_new, sign(float_data) as float_new, sign(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+------------+------------+-------------+------------+------------+
      | int_new    | bigint_new | double_new | decimal_new | float_new  | string_new |
      +------------+------------+------------+-------------+------------+------------+
      | NULL       | -1.0       | 1.0        | 1           | 1.0        | 1.0        |
      | -1.0       | NULL       | -1.0       | -1          | -1.0       | -1.0       |
      | 0.0        | -1.0       | NULL       | 1           | -1.0       | 1.0        |
      | -1.0       | 1.0        | 1.0        | NULL        | 1.0        | -1.0       |
      | 1.0        | -1.0       | -1.0       | -1          | NULL       | 1.0        |
      | -1.0       | 1.0        | 1.0        | 1           | 1.0        | -1.0       |
      | -1.0       | -1.0       | -1.0       | -1          | -1.0       | NULL       |
      | -1.0       | 1.0        | -1.0       | -1          | -1.0       | -1.0       |
      | 1.0        | -1.0       | 1.0        | 1           | 1.0        | 0.0        |
      | -1.0       | 1.0        | -1.0       | -1          | -1.0       | -1.0       |
      +------------+------------+------------+-------------+------------+------------+

SIN

  • 構文

    double|decimal sin(<number>)
  • 説明

    ラジアン値であるの正弦を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is -0.3048106211022167. 
      select sin(60);
      -- The return value is null. 
      select sin(null);
    • 表データの例

      サンプルデータに基づいて列の値の正弦を計算します。 例:

      select sin(bigint_data) as bigint_new, sin(double_data) as double_new, sin(decimal_data) as decimal_new, sin(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +----------------------+----------------------+----------------------+----------------------+
      | bigint_new           | double_new           | decimal_new          | string_new           |
      +----------------------+----------------------+----------------------+----------------------+
      | 0.5440211108893698   | 0.5012130046737979   | 0.5012130046737979   | -0.5440211108893698  |
      | NULL                 | -0.09983341664682815 | -0.09983341664682815 | 0.5440211108893698   |
      | -0.8414709848078965  | NULL                 | 0.9995605376022045   | -0.9880316240928618  |
      | -0.7568024953079282  | 0.7770717475268238   | NULL                 | 0.9880316240928618   |
      | 0.26237485370392877  | -0.8414709848078965  | -0.8414709848078965  | -0.26237485370392877 |
      | -0.27941549819892586 | 0.9974949866040544   | 0.9974949866040544   | 0.26237485370392877  |
      | -0.7738906815578891  | -0.9379999767747389  | -0.9379999767747389  | NULL                 |
      | 0.8414709848078965   | 0.6998746875935423   | 0.6998746875935423   | -0.8414709848078965  |
      | -0.8939966636005579  | 0.5325349075556212   | 0.5325349075556212   | 0.0                  |
      | -0.5440211108893698  | 0.46460217941375737  | 0.46460217941375737  | -0.8939966636005579  |
      +----------------------+----------------------+----------------------+----------------------+

SINH

  • 構文

    double|decimal sinh(<number>)
  • 説明

    numberの双曲線正弦を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 5.343237290762231E12. 
      select sinh(30);
      -- The return value is null. 
      select sinh(null);
    • 表データの例

      サンプルデータに基づいて、列内の値の双曲線正弦を計算します。 例:

      select sinh(bigint_data) as bigint_new, sinh(double_data) as double_new, sinh(decimal_data) as decimal_new, sinh(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------------------+----------------------+----------------------+-----------------------+
      | bigint_new             | double_new           | decimal_new          | string_new            |
      +------------------------+----------------------+----------------------+-----------------------+
      | -11013.232874703393    | 0.5494517420061382   | 0.5494517420061382   | 11013.232874703393    |
      | NULL                   | -0.10016675001984403 | -0.10016675001984403 | -11013.232874703393   |
      | -1.1752011936438014    | NULL                 | 380445243.96844625   | 5343237290762.231     |
      | 27.28991719712775      | 1.0122369492687646   | NULL                 | -5343237290762.231    |
      | -2.592352764293536e21  | -1.1752011936438014  | -1.1752011936438014  | 2.592352764293536e21  |
      | 201.71315737027922     | 2.1292794550948173   | 2.1292794550948173   | -2.592352764293536e21 |
      | -1.2577193354595834e30 | -904.0209306858466   | -904.0209306858466   | NULL                  |
      | 1.1752011936438014     | -13451.593018563612  | -13451.593018563612  | -1.1752011936438014   |
      | -6.102016471589204e38  | 6.560682077817757    | 6.560682077817757    | 0.0                   |
      | 11013.232874703393     | -165.1482661774516   | -165.1482661774516   | -6.102016471589204e38 |
      +------------------------+----------------------+----------------------+-----------------------+

SQRT

  • 構文

    double|decimal sqrt(<number>)
  • 説明

    numberの平方根を計算します。

  • パラメーター

    number: 必須です。 値はDOUBLEまたはDECIMAL型です。 値は0より大きくなければなりません。 値が0未満の場合、nullが返されます。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 2.0. 
      select sqrt(4);
      -- The return value is null. 
      select sqrt(null);
    • 表データの例

      サンプルデータに基づいて、列内の値の平方根を計算します。 例:

      select sqrt(bigint_data) as bigint_new, sqrt(double_data) as double_new, sqrt(decimal_data) as decimal_new, sqrt(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +--------------------+--------------------+-------------------+--------------------+
      | bigint_new         | double_new         | decimal_new       | string_new         |
      +--------------------+--------------------+-------------------+--------------------+
      | NULL               | 0.724568837309472  | 0.724568837309472 | 3.1622776601683795 |
      | NULL               | NULL               | NULL              | NULL               |
      | NULL               | NULL               | 4.522167621838006 | 5.477225575051661  |
      | 2.0                | 0.9433981132056604 | NULL              | NULL               |
      | NULL               | NULL               | NULL              | 7.0710678118654755 |
      | 2.449489742783178  | 1.224744871391589  | 1.224744871391589 | NULL               |
      | NULL               | NULL               | NULL              | NULL               |
      | 1.0                | NULL               | NULL              | NULL               |
      | NULL               | 1.606237840420901  | 1.606237840420901 | 0.0                |
      | 3.1622776601683795 | NULL               | NULL              | NULL               |
      +--------------------+--------------------+-------------------+--------------------+

TAN

  • 構文

    double|decimal tan(<number>)
  • 説明

    ラジアン値であるnumberのタンジェントを計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is -6.405331196646276. 
      select tan(30);
      -- The return value is null. 
      select tan(null);
    • 表データの例

      サンプルデータに基づいて、列内の値のタンジェントを計算します。 例:

      select tan(bigint_data) as bigint_new, tan(double_data) as double_new, tan(decimal_data) as decimal_new, tan(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +----------------------+----------------------+----------------------+----------------------+
      | bigint_new           | double_new           | decimal_new          | string_new           |
      +----------------------+----------------------+----------------------+----------------------+
      | -0.6483608274590866  | 0.5792200822893652   | 0.5792200822893652   | 0.6483608274590866   |
      | NULL                 | -0.10033467208545055 | -0.10033467208545055 | -0.6483608274590866  |
      | -1.5574077246549023  | NULL                 | -33.71948732190433   | -6.405331196646276   |
      | 1.1578212823495775   | 1.2345994590490046   | NULL                 | 6.405331196646276    |
      | 0.27190061199763077  | -1.5574077246549023  | -1.5574077246549023  | -0.27190061199763077 |
      | -0.29100619138474915 | 14.101419947171719   | 14.101419947171719   | 0.27190061199763077  |
      | -1.2219599181369434  | -2.706013866772691   | -2.706013866772691   | NULL                 |
      | 1.5574077246549023   | -0.979852083895097   | -0.979852083895097   | -1.5574077246549023  |
      | 1.995200412208242    | -0.6291704256385503  | -0.6291704256385503  | 0.0                  |
      | 0.6483608274590866   | 0.5246662219468002   | 0.5246662219468002   | 1.995200412208242    |
      +----------------------+----------------------+----------------------+----------------------+

TANH

  • 構文

    double|decimal tanh(<number>)
  • 説明

    numberの双曲線正接を計算します。

  • パラメーター

    number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • numberの値がnullの場合、nullが返されます。

    • 静的データの例

      -- The return value is 1.0. 
      select tanh(30);
      -- The return value is null. 
      select tanh(null);
    • 表データの例

      サンプルデータに基づいて、列内の値の双曲線正接を計算します。 例:

      select tanh(bigint_data) as bigint_new, tanh(double_data) as double_new, tanh(decimal_data) as decimal_new, tanh(string_data) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +---------------------+----------------------+----------------------+---------------------+
      | bigint_new          | double_new           | decimal_new          | string_new          |
      +---------------------+----------------------+----------------------+---------------------+
      | -0.9999999958776927 | 0.48154979836430806  | 0.48154979836430806  | 0.9999999958776927  |
      | NULL                | -0.09966799462495582 | -0.09966799462495582 | -0.9999999958776927 |
      | -0.7615941559557649 | NULL                 | 1.0                  | 1.0                 |
      | 0.999329299739067   | 0.7113937318189625   | NULL                 | -1.0                |
      | -1.0                | -0.7615941559557649  | -0.7615941559557649  | 1.0                 |
      | 0.9999877116507956  | 0.9051482536448664   | 0.9051482536448664   | -1.0                |
      | -1.0                | -0.9999993881955461  | -0.9999993881955461  | NULL                |
      | 0.7615941559557649  | -0.9999999972367348  | -0.9999999972367348  | -0.7615941559557649 |
      | -1.0                | 0.9885821584459533   | 0.9885821584459533   | 0.0                 |
      | 0.9999999958776927  | -0.9999816679925603  | -0.9999816679925603  | -1.0                |
      +---------------------+----------------------+----------------------+---------------------+

TRUNC

  • 構文

    double|decimal trunc(<number>[, bigint <decimal_places>])
  • 説明

    numberの入力値を指定した小数点以下の桁まで切り捨てます。

    説明

    Hive互換データ型エディションが使用されている場合、この関数は数学関数ではありません。 日付値を変換するために使用されます。 関連する日付関数の詳細については、「DATETRUNC」をご参照ください。 ビジネス要件に基づいて、MaxComputeプロジェクトのデータ型エディションを設定する必要があります。 データ型のエディションの詳細については、「データ型のエディション」をご参照ください。

  • パラメーター

    • number: 必須です。 DOUBLEまたはDECIMAL型の値。 入力値がSTRING型またはBIGINT型の場合は、計算前に暗黙的にDOUBLE型の値に変換されます。

    • decimal_places: オプション。 値はBIGINT型の定数です。 このパラメータは、数値が切り捨てられる位置を指定します。 このパラメーターが指定されていない場合、番号は1の場所に切り捨てられます。 deciment_placesは負の値にすることができます。これは、数値が小数点から左に切り捨てられ、小数部分が除外されることを示します。 deciment_placesが整数部分の長さを超える場合、0が返されます。

  • 戻り値

    DOUBLEまたはDECIMAL型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値がDOUBLE型またはDECIMAL型の場合、同じ型の値が返されます。

    • numberの値がSTRING型またはBIGINT型の場合、DOUBLE型の値が返されます。

    • deciment_placesがBIGINT型でない場合、エラーが返されます。

    • numberまたはdeciment_placesの値がnullの場合、nullが返されます。

    説明
    • DOUBLE型の値が返されると, 戻り値が正しく表示されないことがあります。 この問題はすべてのシステムに存在します。 詳細については、この例の「trunc(125.815,1) 」をご参照ください。

    • 数は指定された位置からゼロで埋められます。

    • 静的データの例

      -- The return value is 125.0. 
      select trunc(125.815,0);
      -- The return value is 125.80000000000001. 
      select trunc(125.815,1);
      -- The return value is 125.81. 
      select trunc(125.815,2);
      -- The return value is 125.815. 
      select trunc(125.815,3);
      -- The return value is -125.81. 
      select trunc(-125.815,2);
      -- The return value is 120.0. 
      select trunc(125.815,-1);
      -- The return value is 100.0. 
      select trunc(125.815,-2);
      -- The return value is 0.0. 
      select trunc(125.815,-3);
      -- The return value is 123.345. 
      select trunc(123.345,4);
      -- The return value is 0.0. 
      select trunc(123.345,-4);
      -- The return value is null. 
      select trunc(123.345,null);
    • 表データの例

      サンプルデータに基づいて、列内の数値を指定した小数点以下の桁まで切り捨てます。 例:

      select trunc(bigint_data, 1) as bigint_new, trunc(double_data,1) as double_new, trunc(decimal_data, 1) as decimal_new, trunc(string_data, 1) as string_new from mf_math_fun_t;

      次の応答が返されます。

      +------------+---------------------+-------------+------------+
      | bigint_new | double_new          | decimal_new | string_new |
      +------------+---------------------+-------------+------------+
      | -10.0      | 0.5                 | 0.5         | 10.0       |
      | NULL       | -0.1                | -0.1        | -10.0      |
      | -1.0       | NULL                | 20.4        | 30.0       |
      | 4.0        | 0.8                 | NULL        | -30.0      |
      | -50.0      | -1.0                | -1          | 50.0       |
      | 6.0        | 1.5                 | 1.5         | -50.0      |
      | -70.0      | -7.5                | -7.5        | NULL       |
      | 1.0        | -10.200000000000001 | -10.2       | -1.0       |
      | -90.0      | 2.5                 | 2.5         | 0.0        |
      | 10.0       | -5.800000000000001  | -5.8        | -90.0      |
      +------------+---------------------+-------------+------------+

UNHEX

  • 構文

    binary unhex(string <number>)
  • 説明

    16進数の文字列を文字列に変換します。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    number: 必須です。 値は16進数の文字列です。

  • 戻り値

    BINARY型の値が返されます。 戻り値は、次のルールによって異なります。

    • numberの値が0の場合、エラーが返されます。

    • numberの値がnullの場合、nullが返されます。

  • -- The return value is abc. 
    select unhex('616263');
    -- The return value is abc. 
    select unhex(616263);
    -- The return value is null. 
    select unhex(null);

WIDTH_BUCKET

  • 構文

    width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)
  • 説明

    バケットの数と、バケットの許容範囲の最小値と最大値を指定します。 これにより、バケット範囲が同じサイズの間隔に分割された等幅バケットを構築できます。 特定の式の値が含まれるバケットのIDを返します。 この関数は、MaxCompute V2.0データ型エディションのDECIMAL(precision、scale) 、BIGINT、INT、FLOAT、DOUBLE、およびDECIMALのデータ型をサポートします。 詳細については、「MaxCompute V2.0データ型エディション」をご参照ください。 この関数は、MaxCompute V2.0の追加関数です。

  • パラメーター

    • expr: 必須です。 このパラメーターには、一致するバケットIDを識別する式を指定します。

    • min_value: 必須です。 このパラメータは、バケットの許容範囲の最小値を指定します。

    • max_value: 必須です。 このパラメータは、バケットの許容範囲の最大値を指定します。 値はmin_valueより大きくなければなりません。

    • num_buckets: 必須です。 このパラメータは、バケットの数を指定します。 値は0より大きくなければなりません。

  • 戻り値

    BIGINT型の値が返されます。 値の範囲は0からnum_buckets + 1です。 戻り値は、次のルールによって異なります。

    • exprの値がmin_valueの値より小さい場合、0が返されます。

    • exprの値がmax_valueの値より大きい場合、num_buckets + 1の値が返されます。

    • exprの値がnullの場合、nullが返されます。 それ以外の場合は、値が含まれるバケットのIDが返されます。 バケットIDは、次の式に基づいて命名される。バケットID = floor(num_buckets × (expr - min_value)/(max_value - min_value) + 1)

    • min_valuemax_value、またはnum_bucketsの値がnullの場合、nullが返されます。

    • 例1: すべての入力パラメーターの値がnullではありません。 例を次に示します。

      select key,value,width_bucket(value,100,500,5) as value_group
      from values 
          (1,99),
          (2,100),
          (3,199),
          (4,200),
          (5,499),
          (6,500),
          (7,501),
          (8,NULL)
      as t(key,value);

      次の応答が返されます。

      +-------+--------+-------------+
      | key   | value  | value_group |
      +-------+--------+-------------+
      | 1     | 99     | 0           |
      | 2     | 100    | 1           |
      | 3     | 199    | 2           |
      | 4     | 200    | 2           |
      | 5     | 499    | 5           |
      | 6     | 500    | 6           |
      | 7     | 501    | 6           |
      | 8     | NULL   | NULL        |
      +-------+--------+-------------+
    • 例2: 入力パラメーターの値がnullです。 例を次に示します。

      select key,value,width_bucket(value,100,500,null) as value_group
      from values
          (1,99),
          (2,100),
          (3,199),
          (4,200),
          (5,499),
          (6,500),
          (7,501),
          (8,NULL)
      as t(key,value);

      次の応答が返されます。

      +------+-------+-------------+
      | key  | value | value_group |
      +------+-------+-------------+
      | 1    | 99    | NULL        |
      | 2    | 100   | NULL        |
      | 3    | 199   | NULL        |
      | 4    | 200   | NULL        |
      | 5    | 499   | NULL        |
      | 6    | 500   | NULL        |
      | 7    | 501   | NULL        |
      | 8    | NULL  | NULL        |
      +------+-------+-------------+

関連ドキュメント