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

Simple Log Service:数学関数

最終更新日:Jun 22, 2026

このトピックでは、数学関数の基本的な構文について説明し、例を示します。

次の表に、Simple Log Service (SLS) がサポートする数学関数を示します。

説明
  • 次の演算子をサポートしています:

    +-*/%

    デフォルトでは、 / 演算子は結果の小数部を破棄します。小数部を保持するには、x*1.0/y などの操作を使用します。

  • Log Service の分析ステートメントでは、文字列を単一引用符 ('') で囲む必要があります。Log Service は、引用符で囲まれていないテキスト、または二重引用符 ("") で囲まれたテキストをフィールド名または列名として解釈します。たとえば、'status' は文字列 'status' を表し、status または "status" はログフィールド status を表します。

関数

構文

説明

SQL

SPL

abs 関数

abs(x)

x の絶対値を返します。

acos 関数

acos(x)

x のアークコサインを返します。

asin 関数

asin(x)

x のアークサインを返します。

atan 関数

atan(x)

x のアークタンジェントを返します。

atan2 関数

atan2(x, y)

yx で除算した値のアークタンジェントを返します。

cbrt 関数

cbrt(x)

x の立方根を返します。

ceil 関数

ceil(x)

x を最も近い整数に切り上げます。

この関数は ceiling 関数のエイリアスです。

ceiling 関数

ceiling(x)

x を最も近い整数に切り上げます。

cos 関数

cos(x)

x のコサインを返します。

cosh 関数

cosh(x)

x の双曲線コサインを返します。

cosine_similarity 関数

cosine_similarity(x, y)

xy のコサイン類似度を返します。

×

degrees 関数

degrees(x)

角度をラジアンから度に変換します。

e 関数

e()

自然対数の基数である e の値を返します。

exp 関数

exp(x)

e の x 乗を返します。

×

floor 関数

floor(x)

x を最も近い整数に切り捨てます。

from_base 関数

from_base(x, y)

基数 y の文字列 x を数値に変換します。

ln 関数

ln(x)

x の自然対数を返します。

infinity 関数

infinity()

正の無限大を表す値を返します。

is_nan 関数

is_nan(x)

x が非数 (NaN) かどうかを確認します。

log2 関数

log2(x)

x の底 2 の対数を返します。

log10 関数

log10(x)

x の底 10 の対数を返します。

log 関数

log(x, y)

x の底 y の対数を返します。

×

mod 関数

mod(x, y)

xy で除算したときの剰余を返します。

nan 関数

nan()

NaN 値を返します。

pi 関数

pi()

円周率 π の値を小数点以下 15 桁まで返します。

pow 関数

pow(x, y)

xy 乗を返します。

この関数は power 関数のエイリアスです。

power 関数

power(x, y)

xy 乗を返します。

radians 関数

radians(x)

角度を度からラジアンに変換します。

rand 関数

rand()

乱数を返します。

random 関数

random()

範囲 [0, 1) の乱数を返します。

random(x)

範囲 [0, x) の乱数を返します。

round 関数

round(x)

x を最も近い整数に丸めます。

round(x, n)

x を小数点以下 n 桁に丸めます。

sign 関数

sign(x)

x の符号を 1、0、-1 のいずれかで返します。

×

sin 関数

sin(x)

x のサインを返します。

sqrt 関数

sqrt(x)

x の平方根を返します。

tan 関数

tan(x)

x のタンジェントを返します。

tanh 関数

tanh(x)

x の双曲線タンジェントを返します。

to_base 関数

to_base(x, y)

数値 x を基数 y の文字列表現に変換します。

×

truncate 関数

truncate(x)

x の小数部を削除します。

width_bucket 関数

width_bucket(x, bound1, bound2, numBuckets)

等幅のバケットに分割された範囲内で、x が属するバケットを返します。

×

width_bucket(x, bins)

配列を使用してバケットの範囲を指定し、x が属するバケットを返します。

×

Abs 関数

Abs 関数は、 x の絶対値を計算します。

構文

abs(x)

パラメーター

パラメーター

説明

x

パラメーターには、smallint、integer、real、tinyint、bigint、double、または decimal を指定できます。

戻り値のデータ型

入力パラメーターと同じデータ型を返します。

-25 の絶対値を計算します。

  • クエリと分析文

    * | select abs(-25)
  • クエリと分析結果: 25

acos 関数

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

構文

acos(x)

パラメーター

パラメーター

説明

x

このパラメーターは、範囲 [-1, 1] の double である必要があります。

値がこの範囲外の場合、この関数は NaN を返します。

戻り値のデータ型

double 型。

この例では、pi()/4 のアークコサインを計算します。

  • クエリ文

    * | SELECT acos(pi()/4)
  • クエリと分析結果:クエリは 0.6674572160283838 を返します。

asin 関数

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

構文

asin(x)

パラメーター

パラメーター

説明

x

[-1, 1] の範囲の double 値です。

値がこの範囲外の場合、この関数は NaN を返します。

戻り値のデータ型

double

π/4 のアークサインを計算します。

  • クエリと分析文

    * | SELECT asin(pi()/4)
  • クエリと分析結果:0.9033391101131845

Atan 関数

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

構文

atan(x)

パラメーター

パラメーター

説明

x

値は double である必要があります。

戻り値のデータ型

double の値を返します。

この例では、円周率 / 4 のアークタンジェントを計算します。

  • クエリ文

    * | SELECT atan(pi()/4)
  • クエリ結果: 0.6657737500283538

atan2 関数

yx で割った値のアークタンジェントを計算します。

構文

atan2(y, x)

パラメーター

パラメーター

説明

y

double 型の値です。

x

double 型の値です。

戻り値のデータ型

double 型の値を返します。

π を 6 で割った値のアークタンジェントを計算します。

  • クエリ文

    * | SELECT atan2(pi(),6)
  • クエリ結果:戻り値は 0.48234790710102495 です。

Cbrt 関数

x の立方根を計算します。

構文

cbrt(x)

パラメーター

パラメーター

説明

x

double 値です。

戻り値のデータ型

double 値を返します。

100 の立方根を計算します。

  • クエリ文:

    * | select cbrt(100)
  • クエリ結果:4.641588833612779

Ceil 関数

Ceil 関数は、 x を最も近い整数に切り上げます。Ceil 関数は、 ceiling 関数のエイリアスです。

構文

ceil(x)

パラメーター

パラメーター

説明

x

tinyint、 smallint、 integer、 real、 bigint、 double、または decimal データ型の値です。

  • x が正の数の場合、関数は 0 から離れる方向に値を切り上げます。

  • x が負の数の場合、関数は 0 に近づく方向に値を切り上げます。

戻り値のデータ型

戻り値は、パラメーターと同じデータ型です。

request_time フィールドの値を最も近い整数に切り上げます。

  • サンプルフィールド:

    request_time:9.3
  • クエリ文:

    * | SELECT ceil(request_time) AS request_time
  • クエリ結果: request_time カラムの値は 10.0 です。

天井関数

天井関数は、x を自身以上の最小の整数に丸めます。

構文

ceiling(x)

パラメーター

パラメーター

説明

x

tinyint、smallint、integer、real、bigint、double、または DECIMAL 型の値です。

  • x が正の数の場合、この関数は値を 0 から離れる方向に丸めます。

  • x が負の数の場合、この関数は値を 0 に向かう方向に丸めます。

戻り値のデータ型

パラメーターと同じデータ型です。

request_time フィールドの値を、自身以上の最小の整数に丸めます。

  • サンプルフィールド:

    request_time:9.3
  • クエリと分析文:

    * | SELECT ceiling(request_time) AS request_time
  • クエリと分析結果: request_time カラムの値は 10.0 です。

Cos 関数

x のコサインを計算します。

構文

cos(x)

パラメーター

パラメーター

説明

x

パラメーターは double 型である必要があります。

戻り値のデータ型

double 型を返します。

30 度のコサインを計算します。

  • クエリと分析文:

    * | SELECT cos(pi()/6)
  • クエリと分析結果:0.8660254037844387

cosh 関数

cosh 関数は、x の双曲線余弦を計算します。

構文

cosh(x)

パラメーター

パラメーター

説明

x

double 型の値です。

戻り値のデータ型

double 型の値を返します。

値 pi()/6 の双曲線余弦を計算します。

  • クエリと分析文

    * | SELECT cosh(pi()/6)
  • クエリと分析結果: 1.1402383210764287

cosine_similarity 関数

この関数は、xy の間のコサイン類似度を計算します。

構文

cosine_similarity(x, y)

パラメーター

パラメーター

説明

x

マップ (varchar, double) 型です。

y

マップ (varchar, double) 型です。

戻り値のデータ型

double 値を返します。

2 つのベクトル間のコサイン類似度を計算します。

  • クエリ

    * | SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0]))
  • 戻り値は 1.0 です。

degrees 関数

degrees 関数は、角度をラジアンから度に変換します。

構文

degrees(x)

パラメーター

パラメーター

説明

x

double 値として指定される、ラジアン単位の角度。

戻り値のデータ型

度単位の等価な角度を double 値として返します。

円周率 π ラジアンを度に変換します。

  • クエリ文

    * | SELECT degrees(pi())
  • クエリと分析の結果:結果は 180.0 です。

e 関数

e 関数は、自然対数の底である e の値を返します。

構文

e()

戻り値のデータ型

double 値です。

e の値を返します。

  • クエリ

    * | SELECT e()
  • クエリと分析の結果:戻り値は 2.718281828459045 です。

exp 関数

e の x 乗を計算します。

構文

exp(x)

パラメーター

パラメーター

説明

x

double 値。

戻り値のデータ型

double 値です。

e の 3 乗を計算します。

  • クエリと分析文

    * | SELECT exp(3)
  • クエリと分析結果:戻り値は 20.085536923187669 です。

floor 関数

floor 関数は、x 以下の最大の整数値を返します。

構文

floor(x)

パラメーター

パラメーター

説明

x

値は、tinyint、smallint、integer、real、bigint、double、または decimal 型のいずれかです。

  • x が正の数の場合、関数は 0 に向かって切り捨てます。

  • x が負の数の場合、関数は 0 から離れる方向に切り捨てます。

戻り値のデータ型

double 型の値を返します。

request_time フィールドの値を整数に切り捨てます。

  • サンプルフィールド

    request_time:10.3
  • クエリ文

    * | SELECT floor(request_time) AS request_time
  • クエリと分析結果:request_time 列の値は 10.0 です。

from_base 関数

from_base 関数は、基数 y で表された文字列 x を数値に変換します。

構文

from_base(x, y)

パラメーター

引数

説明

x

varchar 型の文字列です。

y

数値の基数です。値は 2~36 の bigint である必要があります。

戻り値のデータ型

bigint を返します。

2 進数文字列 '1101' を 10 進数に変換します。

  • クエリ文

    * | SELECT  from_base('1101',2)
  • 結果: 戻り値は 13 です。

ln 関数

ln 関数は、x の自然対数を計算します。

構文

ln(x)

パラメーター

パラメーター

説明

x

0 より大きい double 値。

戻り値のデータ型

double 値。

この例では、2 の自然対数を計算します。

  • クエリと分析文

    * | SELECT ln(2)
  • クエリと分析結果: 0.6931471805599453 が返されます。

infinity 関数

infinity 関数は、正の無限大を返します。

構文

infinity()

戻り値のデータ型

double

正の無限大を返します。

  • クエリと分析文

    * | SELECT infinity()
  • クエリと分析結果: Infinity

is_nan 関数

is_nan 関数は、x が NaN (非数) の場合は true を返し、それ以外の場合は false を返します。

構文

is_nan(x)

パラメーター

パラメーター

説明

x

double 値。

戻り値のデータ型

ブール値を返します。

status フィールドの値が NaN かどうかを確認します。

  • クエリと分析文

    * | SELECT is_nan(status)
  • クエリと分析結果: false が返されます。

log2 関数

log2 関数は、2 を底とするx の対数を計算します。

構文

log2(x)

パラメーター

パラメーター

説明

x

double 値。

戻り値のデータ型

double 値を返します。

2 を底とする 100 の対数を計算します。

  • クエリと分析文:

    * | SELECT log2(100)
  • クエリと分析結果:戻り値は 6.643856189774725 です。

log10 関数

log10 関数は、x の 10 を底とする対数を計算します。

構文

log10(x)

パラメーター

パラメーター

説明

x

double 値。

戻り値のデータ型

double 型の値を返します。

この例では、100 の 10 を底とする対数を計算します。

  • クエリと分析文

    * | SELECT log10(100)
  • クエリと分析結果: 2.0

log 関数

log 関数は、x の、y を底とする対数を計算します。

構文

log(x, y)

パラメーター

パラメーター

説明

x

値は double 型である必要があります。

y

値は double 型である必要があります。

戻り値のデータ型

double 型の値を返します。

5 を底とする 100 の対数を計算します。

  • クエリ

    * | SELECT log(100,5)
  • 結果: 2.8613531161467867

mod 関数

mod 関数は、xy で除算したときの剰余を返します。

構文

mod(x, y)

パラメーター

パラメーター

説明

x

tinyint, smallint, integer, real, bigint, double, または decimal 型の値です。

y

tinyint, smallint, integer, real, bigint, double, または decimal 型の値です。

戻り値のデータ型

戻り値のデータ型は、入力パラメーターと同じです。

100 を 30 で除算したときの剰余を計算します。

  • クエリ文

    * | SELECT mod(100,30)
  • クエリと分析の結果: 10 を返します。

nan 関数

nan 関数は、NaN (非数) を返します。

構文

nan()

戻り値のデータ型

Double

NaN 値を返します。

  • クエリ文

    * | SELECT nan()
  • クエリ結果: 戻り値は NaN です。

PI 関数

この関数は、円周率の値を小数点以下 15 桁の精度で返します。

構文

pi()

戻り値のデータ型

double 型の値を返します。

この例では、円周率の値を返します。

  • クエリと分析文:

    * | SELECT pi()
  • クエリと分析結果:3.141592653589793

pow 関数

pow 関数は、xy 乗を返します。power 関数のエイリアスです。

構文

pow(x, y)

パラメーター

パラメーター

説明

x

double 値。

y

double 値。

戻り値のデータ型

double 値を返します。

2 の 5 乗を計算します。

  • クエリ文:

    * | SELECT pow(2,5)
  • クエリと分析結果: 32.0

POWER 関数

xy 乗を返します。

構文

power(x, y)

パラメーター

パラメーター

説明

x

double 値です。

y

double 値です。

戻り値のデータ型

double 値です。

2 の 5 乗を計算します。

  • クエリと分析文

    * | SELECT power(2,5)
  • クエリと分析結果: 32.0 を返します。

radians 関数

角度を度からラジアンに変換します。

構文

radians(x)

パラメーター

パラメーター

説明

x

double 型である必要があります。

戻り値のデータ型

double を返します。

180 度をラジアンに変換します。

  • クエリ文

    * | SELECT radians(180)
  • クエリ結果: 3.141592653589793

rand 関数

rand 関数は乱数を返します。

構文

rand()

戻り値のデータ型

double

次のクエリは乱数を返します。

  • クエリ文

    * | select rand()
  • クエリと分析の結果: 0.8742241064002435 などのランダムな値を返します。

RANDOM 関数

RANDOM 関数は、[0, x) の範囲で乱数を返します。

構文

  • [0, 1.0) の範囲でランダムな倍精度値を返します。

    random()
  • [0, x) の範囲でランダムな整数を返します。

    random(x)

パラメーター

パラメーター

説明

x

tinyint、smallint、整数、または bigint 値です。

戻り値のデータ型

入力パラメーターと同じデータ型の値を返します。

[0, 100) の範囲で乱数を生成します。

  • クエリ文

    * | select random(100)
  • クエリ結果: ランダムな整数。 例: 44

ROUND 関数

ROUND 関数は、x を丸める関数です。 n を指定した場合、x を小数点以下 n 桁に丸めます。 n を省略した場合は、x を最も近い整数に丸めます。

構文

  • x を最も近い整数に丸めます。

    round(x)
  • x を小数点以下 n 桁に丸めます。

    round(x, n)

パラメーター

パラメーター

説明

x

tinyint、smallint、整数、または bigint 値です。

n

保持する小数点以下の桁数です。

戻り値のデータ型

戻り値はパラメーター x と同じデータ型です。

この例では、今日のページビュー (PV) を昨日のものと比較し、その変化をパーセンテージで表します。

  • クエリ文

    * | SELECT diff [1] AS today, round((diff [3] -1.0) * 100, 2) AS growth FROM (SELECT compare(pv, 86400) as diff FROM (SELECT COUNT(*) as pv FROM website_log))
  • クエリは、today の値として 1564075.0 を、growth の値として -22.11 を返します。

SIGN 関数

SIGN 関数は、x の符号を 1、0、または -1 として返します。

構文

sign(x)

パラメーター

パラメーター

説明

x

評価する数値式です。データ型は、integer、smallint、tinyint、real、double、bigint、または DECIMAL(p,s) です。

  • x が正の数の場合、関数は 1 を返します。

  • x が 0 の場合、関数は 0 を返します。

  • x が負の数の場合、関数は -1 を返します。

戻り値のデータ型

入力パラメーターと同じデータ型を返します。

数値 10 の符号を計算します。

  • クエリ文

    * | SELECT sign(10)
  • クエリ結果:戻り値は 1 です。

sin 関数

この関数は、x のサインを計算します。

構文

sin(x)

パラメーター

パラメーター

説明

x

角度をラジアン単位で表す double 値。

戻り値のデータ型

double 値を返します。

この例では、90 度 (π/2 ラジアン) のサインを計算します。

  • クエリと分析文

    * | select sin(pi()/2)
  • クエリと分析結果:1.0 が返されます。

Sqrt 関数

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

構文

sqrt(x)

パラメーター

パラメーター

説明

x

double 型の値です。

戻り値のデータ型

double 型の値を返します。

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

  • クエリと分析のステートメント

    * | select sqrt(100)
  • クエリと分析の結果: 10.0 です。

tan 関数

tan 関数は、x のタンジェントを計算します。

構文

tan(x)

パラメーター

パラメーター

説明

x

倍精度の値

戻り値のデータ型

倍精度の値

30 度のタンジェントを計算します。

  • クエリ文

    * | SELECT tan(pi()/6)
  • クエリ結果: 0.5773502691896257

tanh 関数

tanh 関数は、x の双曲線正接を計算します。

構文

tanh(x)

パラメーター

パラメーター

説明

x

double 型である必要があります。

戻り値のデータ型

double 型の値を返します。

この例では、π/6 ラジアン (30 度) の双曲線正接を計算します。

  • クエリ

    * | SELECT tanh(pi()/6)
  • クエリ結果: 0.4804727781564516 が返されます。

to_base 関数

この関数は、bigint x を基数 y の文字列表現に変換します。

構文

to_base(x, y)

パラメーター

パラメーター

説明

x

変換する bigint です。

y

出力文字列の基数です。値は 2 から 36 までの (両端を含む) bigint である必要があります。

戻り値のデータ型

varchar 型の値を返します。

180 をバイナリ文字列に変換します。

  • クエリ文

    * | SELECT  to_base(180, 2)
  • クエリ結果: 10110100

truncate 関数

truncate 関数は、x の小数部を切り捨てます。

構文

truncate(x)

パラメーター

パラメーター

説明

x

double 値です。

戻り値のデータ型

double 値を返します。

11.11 の小数部を切り捨てます。

  • クエリ文

    * | SELECT  truncate(11.11)
  • クエリ結果: 11.0

width_bucket 関数

width_bucket 関数は、値 x に対するバケット番号を返します。

構文

  • 数値範囲を指定された数の等幅のバケットに分割し、x のバケット番号を返します。

    width_bucket(x, bound1, bound2, numBuckets)
  • 指定されたバケット境界の配列に基づいて、x のバケット番号を返します。

    width_bucket(x, bins)

パラメーター

パラメーター

説明

x

バケットに分類するための値です。この値は double 型である必要があります。

bound1

数値範囲の下限を指定します。

bound2

数値範囲の上限を指定します。

numBuckets

バケットの数です。値は 0 より大きい整数である必要があります。

bins

double 型の配列 bins を使用して、バケットの範囲を指定します。

戻り値のデータ型

bigint 型の値を返します。

説明
  • x が指定された範囲内にある場合、x が属するバケットが返されます。

  • x が下限値を下回る場合、関数は 0 を返します。

  • x が上限値以上の場合、関数は numBuckets+1 を返します。

  • 例 1: 数値範囲 [10, 80) を 7 つの等幅バケットに分割し、request_time フィールドの各値のバケット番号を返します。

    • クエリ文

      * | SELECT request_time, width_bucket(request_time, 10, 80,7) AS numBuckets
    • クエリと分析の結果: クエリは request_timenumBuckets 列を返します。これらの列は、各リクエスト時間に対応するバケット番号を示します。たとえば、request_time26.0 の場合、numBuckets2 で、request_time49.0 の場合、numBuckets4 です。

  • 例 2: 配列を使用してバケット境界を定義し、request_time フィールドの各値のバケット番号を返します。

    • クエリ文

      * | SELECT request_time, width_bucket(request_time, array[10,20,30,40,50,60,70,80]) AS numBuckets
    • クエリと分析の結果: クエリは request_timenumBuckets 列を返します。これらの列は、カスタム境界配列に基づいて各リクエスト時間に割り当てられるバケット番号を示します。たとえば、request_time26.0 の場合、numBuckets2 で、request_time54.0 の場合、numBuckets5 です。