関数

式で使用できる関数には様々なタイプがあります。

トピック:

分析関数

分析関数では、予測、トレンド線やクラスタなどのモデルを使用してデータを調査できます。または、分析関数をワークブック・エディタにドラッグ・アンド・ドロップできます。

または、予測、トレンド線およびクラスタをワークブック・エディタのデータ・パネルの「分析」タブで選択して、ワークブックに追加できます。ビジュアライゼーションへの統計分析関数の追加を参照してください。

関数 説明 構文

CLUSTER

CLUSTER((product, company), (billed_quantity, revenue), 'clusterName', 'algorithm=k-means;numClusters=%1;maxIter=%2;useRandomSeed=FALSE;enablePartitioning=TRUE', 5, 10)

K平均法または階層的クラスタリングを使用する1つ以上の入力式に基づいてレコード・セットをグループに集めます。

CLUSTER((dimension_expr1 , ... dimension_exprN), (expr1, ... exprN), output_column_name, options, [runtime_binded_options])

FORECAST

日ごとの収益予測の例

この例では、日ごとの収益予測を選択しています。

FORECAST("A - Sample Sales"."Base Facts"."1- Revenue" Target,
("A - Sample Sales"."Time"."T00 Calendar Date"),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

年および四半期ごとの収益予測の例

この例では、年および四半期ごとの収益予測を選択しています。

FORECAST("A - Sample Sales"."Base Facts"."1- Revenue",
("A - Sample Sales"."Time"."T01 Year" timeYear, "A - Sample Sales"."Time"."T02 Quarter" TimeQuarter),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

指数平滑法(ETS)または季節性ARMIAやARIMAを使用して、seriesに対して指定されたメジャーの時系列モデルを作成します。この関数は、numPeriods引数で指定された一連の期間の予測を出力します。

次の追加のFORECAST関数のオプションも参照してください。

FORECAST(measure, ([series]), output_column_name, options,[runtime_binded_options])])

ここで:

  • measureは、収益データなど、予測するメジャーを表します。

  • seriesは、予測モデルの作成に使用される時間粒度を表します。seriesは1つ以上の時間ディメンション列のリストです。seriesを省略すると、問合せから時間粒度が決定されます。

  • output_column_nameは、forecastlowhighおよびpredictionIntervalの有効な列名を表します。

  • optionsは、セミコロン(;)で区切られた名前/値のペアの文字列リストを表します。runtime_binded_optionsに指定される%1 ... %Nを値に含めることができます。

  • runtime_binded_optionsは、列およびオプションのカンマ区切りリストを表します。これらの列およびオプションの値は、個別の問合せ実行時に評価および解決されます。

次の追加のFORECAST関数のオプションも参照してください。

OUTLIER

OUTLIER((product, company), (billed_quantity, revenue), 'isOutlier', 'algorithm=kmeans')

K平均法、階層的クラスタリングまたは多変量外れ値検出アリゴリズムを使用する1つ以上の入力式に基づいて、レコードを外れ値として分類します。

OUTLIER((dimension_expr1 , ... dimension_exprN), (expr1, ... exprN), output_column_name, options, [runtime_binded_options])

REGR

REGR(revenue, (discount_amount), (product_type, brand), 'fitted', '')

線形モデルに適合させて、適合した値またはモデルを返します。この関数は、2つのメジャーに線形曲線を適合するために使用できます。

REGR(y_axis_measure_expr, (x_axis_expr), (category_expr1, ..., category_exprN), output_column_name, options, [runtime_binded_options])

TRENDLINE

TRENDLINE(revenue, (calendar_year, calendar_quarter, calendar_month) BY (product), 'LINEAR', 'VALUE')

ビジュアライゼーションを表示する際に、「統計の追加」プロパティを使用してトレンド線を適用することをお薦めします。ビジュアライゼーション・プロパティの調整を参照してください。

線形、多項式または指数モデルに適合させて、適合した値またはモデルを返します。numeric_exprはトレンドのY値を表し、series (時間列)はX値を表します。

TRENDLINE(numeric_expr, ([series]) BY ([partitionBy]), model_type, result_type)

FORECAST関数のオプション 次の表は、FORECAST関数とともに使用できるオプションを示しています。

オプション名 説明
numPeriods 整数 予測する期間の数
predictionInterval 0から100。高い値で高い信頼度を指定します。 予測の信頼度レベル。
modelType

ETS (指数平滑法)

SeasonalArima

ARIMA

予測に使用するモデル。
useBoxCox

TRUE

FALSE

TRUEの場合は、Box-Cox変換を使用します。
lambdaValue 該当なし

Box-Cox変換パラメータ。

NULLの場合またはuseBoxCoxFALSEの場合は無視されます。

それ以外の場合は、モデルが評価される前にデータが変換されます。

trendDamp

TRUE

FALSE

これは、指数平滑法モデルに固有です。

TRUEの場合は、減衰トレンドを使用します。FALSEまたはNULLの場合は、非減衰トレンドを使用します。

errorType

該当なし

これは、指数平滑法モデルに固有です。
trendType

N (なし)

A (加算)

M (乗算)

Z (自動選択)

これは、指数平滑法モデルに固有です
seasonType

N (なし)

A (加算)

M (乗算)

Z (自動選択)

これは、指数平滑法モデルに固有です
modelParamIC

ic_auto

ic_aicc

ic_bic

ic_auto (デフォルト)

モデル選択で使用される情報基準(IC)。

変換関数

変換関数は、ある形式から別の形式に値を変換します。

関数 説明 構文

CAST

CAST(hiredate AS CHAR(40)) FROM employee

式またはnullリテラルのデータ型を別のデータ型に変更します。たとえば、customer_name (CHARまたはVARCHARのデータ型)またはbirthdate (日時リテラル)をキャストできます。

Dateデータ型に変更する場合は、CASTを使用します。

TODATEは使用しないでください。

CAST(expr AS type)

IFNULL

IFNULL(Sales, 0)

ある式がnull値と評価されるかどうかをテストし、評価された場合は、指定された値をその式に割り当てます。

IFNULL(expr, value)

INDEXCOL

SELECT INDEXCOL(VALUEOF ("NQ_SESSION"."GEOGRAPHY_LEVEL"), Country, State, City), Revenue FROM Sales

外部情報を使用して、サインイン・ユーザーが表示するのに適切な列を戻します。

INDEXCOL([integer literal], [expr1] [, [expr2], ?-])

NULLIF

SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID" FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name, "Old Job ID";

2つの式を比較します。それらが等しい場合、関数によりNULLが戻されます。それらが等しくない場合、関数により最初の式が戻されます。最初の式には、リテラルのNULLを指定できません。

NULLIF([expression], [expression])

To_DateTime

SELECT To_DateTime ('2009-03-0301:01:00', 'yyyy-mm-dd hh:mi:ss') FROM sales

DateTime書式の文字列リテラルをDateTimeデータ型に変換します。

To_DateTime([expression], [literal])

VALUEOF

SalesSubjectArea.Customer.Region = VALUEOF("Region Security"."REGION")

フィルタでセマンティック・モデル変数の値を参照します。

expr変数をVALUEOF関数の引数として使用します。静的モデル変数は名前で参照します。

VALUEOF(expr)

日付抽出関数

これらの関数は、タイムスタンプ値の計算または切捨てを行って、最も近い指定した期間(時間、日、週、月、四半期など)にします。

計算されたタイムスタンプを使用して、異なるグレインを使用してデータを集計できます。たとえば、EXTRACTDAY()関数を受注日に適用して、注文が発生した日の午前0時のタイムスタンプを計算すると、データを日別に集計できます。

関数 説明 構文

日を抽出

EXTRACTDAY("Order Date")
  • 2/22/1967 3:02:01 AMは、2/22/1967 12:00:00 AMを返します。
  • 9/2/2022 10:38:21 AMは、9/2/2022 12:00:00 AMを返します。

入力値が発生した日の午前0時(午前12時)のタイムスタンプを返します。たとえば、入力タイムスタンプが2月22日午前3時02分01秒の場合、関数は2月22日午前12時00分00秒のタイムスタンプを返します。

EXTRACTDAY(expr)

時間を抽出

EXTRACTHOUR("Order Date")
  • 2/22/1967 3:02:01 AMは、2/22/1967 3:00:00 AMを返します。
  • 6/17/1999 11:18:30 PMは、6/17/1999 11:00:00 PMを返します。

入力値が発生した時刻の時間の開始のタイムスタンプを返します。たとえば、入力タイムスタンプが午後11時18分30秒の場合、関数は午後11時00分00秒のタイムスタンプを返します。

EXTRACTHOUR (expr)

日の時間を抽出

EXTRACTHOUROFDAY("Order Date")
  • 2014/09/24 10:58:00は、2000/01/01 10:00:00を返します。
  • 2014/08/13 11:10:00は、2000/01/01 11:00:00を返します

年、月、日、分および秒のデフォルト値を使用して、時間が入力値の時間と等しいタイムスタンプを返します。

EXTRACTHOUROFDAY(expr)

ミリ秒を抽出

EXTRACTMILLISECOND("Order Date")
  • 1997/01/07 15:32:02.150は、1997/01/07 15:32:02.150を返します。
  • 1997/01/07 18:42:01.265は、1997/01/07 18:42:01.265を返します。
入力値のミリ秒を含むタイムスタンプを返します。たとえば、入力タイムスタンプが15時32分02.150秒の場合、関数は15時32分02.150秒のタイムスタンプを返します。

EXTRACTMILLISECOND(expr)

分を抽出

EXTRACTMINUTE("Order Date")
  • 6/17/1999 11:18:00 PMは、6/17/1999 11:18:00 PMを返します。
  • 9/2/2022 10:38:21 AMは、9/2/2022 10:38:00 AMを返します。

入力値が発生した時刻の分の開始のタイムスタンプを返します。たとえば、入力タイムスタンプが午前11時38分21秒の場合、関数は午前11時38分00秒のタイムスタンプを返します。

EXTRACTMINUTE (expr)

月を抽出

EXTRACTMONTH("Order Date")
  • 2/22/1967 3:02:01 AMは、2/1/1967 12:00:00 AMを返します。
  • 6/17/1999 11:18:00 PMは、6/1/1999 12:00:00 AMを返します。

入力値が発生した月の最初の日のタイムスタンプを返します。たとえば、入力タイムスタンプが2月22日の場合、関数は2月1日のタイムスタンプを返します。

EXTRACTMONTH(expr)

四半期を抽出

EXTRACTQUARTER("Order Date")
  • 2/22/1967 3:02:01 AMは、第1会計四半期の初日である1/1/1967 12:00:00 AMを返します。
  • 6/17/1999 11:18:00 PMは、第2会計四半期の初日である4/1/1999 12:00:00 AMを返します。

  • 9/2/2022 10:38:21 AMは、第3会計四半期の初日である7/1/2022 12:00:00 AMを返します。

    ヒント: QUARTER (expr)は、返されたタイムスタンプから四半期の序数のみを計算する場合に使用します。

入力値が発生した四半期の最初の日のタイムスタンプを返します。たとえば、入力タイムスタンプが第3会計四半期に発生した場合、関数は7月1日のタイムスタンプを返します。

EXTRACTQUARTER(expr)

秒を抽出

EXTRACTSECOND("Order Date")
  • 1997/01/07 15:32:02.150は、1997/01/07 15:32:02を返します。
  • 1997/01/07 20:44:18.163は、1997/01/07 20:44:18を返します。

入力値のタイムスタンプを返します。たとえば、入力タイムスタンプが15時32分02.150秒の場合、関数は15時32分02秒のタイムスタンプを返します。

EXTRACTSECOND(expr)

週を抽出

EXTRACTWEEK("Order Date")
  • 2014/09/24 10:58:00は、2014/09/21を返します。

  • 2014/08/13 11:10:00は、2014/08/10を返します。

入力値が発生した週の最初の曜日(日曜日)の日付を返します。たとえば、入力タイムスタンプが9月24日水曜日の場合、関数は9月21日日曜日のタイムスタンプを返します。

ノート: 週の最初の日(つまり日曜日)が前年に該当し、集計に悪影響を及ぼす可能性がある場合、関数は前年の週の最初の日ではなく、当年の週の7日目(つまり土曜日)を返します。たとえば、1/1/24、1/2/24および1/3/24はすべてSunday 12/29/23ではなく、Saturday 1/6/24に集約されます。

EXTRACTWEEK(expr)

年を抽出

EXTRACTYEAR("Order Date")
  • 1967/02/22 03:02:01は、1967/01/01 00:00:00を返します。
  • 1999/06/17 23:18:00は、1999/01/01 00:00:00を返します。

入力値が発生した年の1月1日のタイムスタンプを返します。たとえば、入力タイムスタンプが1967年に発生した場合、関数は1967年1月1日のタイムスタンプを返します。

EXTRACTYEAR (expr)

サブジェクト領域での日付ディメンションの使用に関するヒント

ここでは、サブジェクト領域の日付を計算で使用する際に結果を最善のものにするためのヒントをいくつか示します。

計算へのサブジェクト領域の日付の追加

日付をサブジェクト領域から計算に直接ドラッグし、これを文字列または整数として処理した場合、エラーが発生します。これは、基礎となる日付値がタイムスタンプであるため発生します。

かわりに、日付抽出関数のいずれかを使用して、日付を解釈します。

たとえば、次のようなサブジェクト領域の日付があります。
GUID-39C55B3A-A055-45D3-9904-948680247C08-default.pngの説明が続きます
.pngの説明

これらのサブジェクト領域の日付から月を抽出するには、ExtractMonthOfYear関数を使用します。

case when monthname(ExtractMonthOfYear("Date")) in ('Jan' ,'Feb', 'Mar') 
THEN 'Q1' 
ELSE 'Rest of the year' END

表示関数

表示関数は、問合せの結果セットを操作します。

関数 説明 構文

BottomN

BottomN(Sales, 10)

式の下位n件の値を、最低から最高の順にランク付けして返します。

BottomN([NumericExpression], [integer])

FILTER

FILTER(Sales USING Product = 'widget')

特定の事前集計済フィルタを使用して式を計算します。

FILTER(measure USING filter_expr)

MAVG

MAVG(Sales, 10)

現在の行を含めて、結果セットのデータの最後のn行の移動平均を計算します。

MAVG([NumericExpression], [integer])

MSUM

SELECT Month, Revenue, MSUM(Revenue, 3) as 3_MO_SUM FROM Sales

現在の行を含めて、データの最後のn行の移動合計を計算します。

最初の行の合計は、最初の行の数値式と同じです。2番目の行の合計は、最初の2つの行のデータ合計を取得することで計算され、同様に続いて実行されます。n 番目の行に到達すると、合計は最後のn行のデータに基づいて計算されます。

MSUM([NumericExpression], [integer])

NTILE

NTILE(Sales, 100)

ユーザー指定範囲内での値のランクを判別します。範囲内のランクを示す整数が返されます。この例では、1から100までの範囲(最低がsale = 1で最高がsale = 100)を示しています。

NTILE([NumericExpresssion], [integer])

PERCENTILE

PERCENTILE(Sales)

数値式引数に一致する各値のパーセント・ランクを計算します。パーセンタイル・ランクの範囲は、0(1番目のパーセンタイル)から1(100番目のパーセンタイル)です。

PERCENTILE([NumericExpression])

RANK

RANK(Sales)

数値式引数に一致する各値のランクを計算します。最も高い数にはランク1が割り当てられ、次に続くランクには2、3、4などの連続した整数が割り当てられます。ある値が等しい場合、同じランクが割り当てられます(例: 1、1、1、4、5、5、7...)。

RANK([NumericExpression])

RCOUNT

SELECT month, profit, RCOUNT(profit) FROM sales WHERE profit > 200

入力として一連のレコードを取得して、見つかったレコード数をカウントします。

RCOUNT([NumericExpression])

RMAX

SELECT month, profit, RMAX(profit) FROM sales

入力として一連のレコードを取得して、そこまでに処理されたレコードに基づいて最大値を表示します。指定するデータ型はソートできるデータ型である必要があります。

RMAX([NumericExpression])

RMIN

SELECT month, profit, RMIN(profit) FROM sales

入力として一連のレコードを取得して、そこまでに処理されたレコードに基づいて最小値を表示します。指定するデータ型はソートできるデータ型である必要があります。

RMIN([NumericExpression])

RSUM

SELECT month, revenue, RSUM(revenue) as RUNNING_SUM FROM sales

そこまでに処理されたレコードに基づいて累計を計算します。

最初の行の合計は、最初の行の数値式と同じです。2番目の行の合計は、最初の2つの行のデータ合計を取得することで計算され、同様に続いて実行されます。

RSUM([NumericExpression])

TOPN

TOPN(Sales, 10)

式の上位n件の値を、最高から最低の順にランク付けして返します。

TOPN([NumericExpression], [integer])

表示関数の使用に関するヒント

  • FILTER - サブジェクト領域を使用してレポートを作成している場合、計算で階層列を直接フィルタするのではなく、サブジェクト領域で定義されている階層を使用します。つまり、サブジェクト領域にTime\Fiscal Year\Fiscal Quarterの階層がある場合、次を避けます:

    filter (<measure> using fiscal_quarter = 'Q4')

    filter (<measure> using fiscal_quarter = 'Q3')

    filter (<measure> using fiscal_year = 'FY24')

評価関数

評価関数は、式を渡して高度な計算を取得するために使用できるデータベース関数です。

埋込みデータベース関数には、1つ以上の列が必要になる場合があります。これらの列は、関数内で%1 ... %Nによって参照されます。実際の列は、関数の後にリストする必要があります。

関数 説明 構文

EVALUATE

SELECT EVALUATE('instr(%1, %2)', address, 'Foster City') FROM employees

パラメータとして(オプションで)参照列を使用する、指定されたデータベース関数をデータベースに渡して評価します。

EVALUATE([string expression], [comma separated expressions])

EVALUATE_AGGR

EVALUATE_AGGR('REGR_SLOPE(%1, %2)', sales.quantity, market.marketkey)

パラメータとして(オプションで)参照列を使用する、指定されたデータベース関数をデータベースに渡して評価します。この関数は、GROUP BY句を使用する集計関数を対象としています。

EVALUATE_AGGR('db_agg_function(%1...%N)' [AS datatype] [, column1, columnN])

算術関数

ここで説明する算術関数では、数学的な操作を実行します。

関数 説明 構文

ABS

ABS(Profit)

数値式の絶対値を計算します。

exprは、数値に評価される任意の式です。

ABS(expr)

ACOS

ACOS(1)

数値式のアークコサインを計算します。

exprは、数値に評価される任意の式です。

ACOS(expr)

ASIN

ASIN(1)

数値式のアークサインを計算します。

exprは、数値に評価される任意の式です。

ASIN(expr)

ATAN

ATAN(1)

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

exprは、数値に評価される任意の式です。

ATAN(expr)

ATAN2

ATAN2(1, 2)

y/xのアークタンジェントを計算します。ここでyは最初の数値式、xは2番目の数値式です。

ATAN2(expr1, expr2)

CEILING

CEILING(Profit)

整数以外の数値式を最も近い整数に切り上げます。数式が整数に評価される場合、CEILING関数はその整数を返します。

CEILING(expr)

COS

COS(1)

数値式のコサインを計算します。

exprは、数値に評価される任意の式です。

COS(expr)

COT

COT(1)

数値式のコタンジェントを計算します。

exprは、数値に評価される任意の式です。

COT(expr)

DEGREES

DEGREES(1)

式をラジアンから次数に変換します。

exprは、数値に評価される任意の式です。

DEGREES(expr)

EXP

EXP(4)

値を指定された値でべき乗します。eのn乗を計算します。ここでeは自然対数の底です。

EXP(expr)

ExtractBit

Int ExtractBit(1, 5)

整数内の特定の位置にあるビットを取得します。そのビットに対応する0か1の整数が返されます。

ExtractBit([Source Number], [Digits])

FLOOR

FLOOR(Profit)

整数以外の数値式を最も近い整数に切り下げます。数式が整数に評価される場合、FLOOR関数はその整数を返します。

FLOOR(expr)

LOG

LOG(1)

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

exprは、数値に評価される任意の式です。

LOG(expr)

LOG10

LOG10(1)

式の十進法の対数を計算します。

exprは、数値に評価される任意の式です。

LOG10(expr)

MOD

MOD(10, 3)

最初の数値式を2番目の数値式で除算し、商の剰余を返します。

MOD(expr1, expr2)

PI

PI()

PIの定数値を戻します。

PI()

POWER

POWER(Profit, 2)

最初の数値式を使用して、これを2番目の数値式で指定された累乗にします。

POWER(expr1, expr2)

RADIANS

RADIANS(30)

式を次数からラジアンに変換します。

exprは、数値に評価される任意の式です。

RADIANS(expr)

RAND

RAND()

0から1の擬似乱数を返します。

RAND()

RANDFromSeed

RAND(2)

シード値に基づいた擬似乱数を返します。特定のシード値に対して、乱数の同一のセットが生成されます。

RAND(expr)

ROUND

ROUND(2.166000, 2)

数値式をn桁の精度で丸めます。

exprは、数値に評価される任意の式です。

integerは、丸める精度の桁数を表す任意の正の整数です。

ROUND(expr, integer)

SIGN

SIGN(Profit)

次が返されます。

  • 数値式が正数に評価される場合は、1

  • 数値式が負数に評価される場合は、-1

  • 数値式がゼロに評価される場合は、0

SIGN(expr)

SIN

SIN(1)

数値式のサインを計算します。

SIN(expr)

SQRT

SQRT(7)

数値式引数の平方根を計算します。数式は、負数でない数値に評価される必要があります。

SQRT(expr)

TAN

TAN(1)

数値式のタンジェントを計算します。

exprは、数値に評価される任意の式です。

TAN(expr)

TRUNCATE

TRUNCATE(45.12345, 2)

小数部分を切り捨て、小数点から指定した数の桁数を返します。

exprは、数値に評価される任意の式です。

integerは、小数位の右側から返す文字数を表す任意の正の整数です。

TRUNCATE(expr, integer)

集計実行関数

集計実行関数は、複数の値に対して操作を実行しサマリー結果を作成します。

関数 説明 構文

MAVG

 

現在の行を含めて、結果セットのデータの最後のn行の移動平均を計算します。

exprは、数値に評価される任意の式です。integerは、任意の正の整数です。最後のn行のデータ平均を表します。

MAVG(expr, integer)

MSUM

select month, revenue, MSUM(revenue, 3) as 3_MO_SUM from sales_subject_area

現在の行を含めて、データの最後のn行の移動合計を計算します。

exprは、数値に評価される任意の式です。integerは、任意の正の整数です。データの最後のn行の合計を表します。

MSUM(expr, integer)

RSUM

SELECT month, revenue, RSUM(revenue) as RUNNING_SUM from sales_subject_area

そこまでに処理されたレコードに基づいて累計を計算します。

exprは、数値に評価される任意の式です。

RSUM(expr)

RCOUNT

select month, profit, RCOUNT(profit) from sales_subject_area where profit > 200

入力として一連のレコードを取得して、見つかったレコード数をカウントします。

exprは、任意のデータ型の式です。

RCOUNT(expr)

RMAX

SELECT month, profit,RMAX(profit) from sales_subject_area

入力として一連のレコードを取得して、そこまでに処理されたレコードに基づいて最大値を表示します。

exprは、任意のデータ型の式です。

RMAX(expr)

RMIN

select month, profit,RMIN(profit) from sales_subject_area

入力として一連のレコードを取得して、そこまでに処理されたレコードに基づいて最小値を表示します。

exprは、任意のデータ型の式です。

RMIN(expr)

空間関数

空間関数により、データをモデル化するときに地理的分析を実行できます。たとえば、2つの地理的なエリア(形状または多角形と呼ばれる)間の距離を計算できます。

注:

これらの空間関数は、ビジュアライゼーション・ワークブックのカスタム計算では使用できません。
関数 説明 構文
GeometryArea

GeometryArea(Shape)

形状が占有するエリアを計算します。

GeometryArea(Shape)

GeometryDistance

GeometryDistance(TRIP_START, TRIP_END)

2つの形状間の距離を計算します。

GeometryDistance(Shape 1, Shape 2)

GeometryLength

GeometryLength(Shape)

形状の外周を計算します。

GeometryLength(Shape)

GeometryRelate

GeometryRelate(TRIP_START, TRIP_END)

1つの形状が他の形状の内側にあるかどうかを特定します。TRUEまたはFALSEを文字列(varchar)として返します。

GeometryRelate(Shape 1, Shape 2)

GeometryWithinDistance

GeometryWithinDistance(TRIP_START, TRIP_END, 500)

2つの形状が、指定された互いの距離以内に存在しているかどうかを特定します。TRUEまたはFALSEを文字列(varchar)として返します。

GeometryWithinDistance(Shape1, Shape2, DistanceInFloat)

文字列関数

文字列関数は様々な文字操作を実行します。これらは文字列に対して動作します。

関数 説明 構文

ASCII

ASCII('a')

シングル・キャラクタ文字列を、0から255までの対応するASCIIコードに変換します。文字式が複数の文字に評価される場合は、式の最初の文字に対応するASCIIコードが返されます。

exprは、文字列に評価される任意の式です。

ASCII(expr)

BIT_LENGTH

BIT_LENGTH('abcdef')

指定した文字列の長さをビット単位で返します。各Unicode文字の長さは2バイトです(16ビットに相当)。

exprは、文字列に評価される任意の式です。

BIT_LENGTH(expr)

CHAR

CHAR(35)

0から255の間の数値を対応するASCIIコードの文字値に変換します。

exprは、0から255までの数値に評価される任意の式です。

CHAR(expr)

CHAR_LENGTH

CHAR_LENGTH(Customer_Name)

指定した文字列の長さを文字数で返します。先頭と末尾の空白は、文字列の長さとして計算されません。

exprは、文字列に評価される任意の式です。

CHAR_LENGTH(expr)

CONCAT

SELECT DISTINCT CONCAT ('abc', 'def') FROM employee

2つの文字列を連結します。

exprsは、カンマで区切られた文字列に評価される式です。

CONCATでは、フォーマットされたデータではなくRAWデータを使用する必要があります。

CONCAT(expr1, expr2)

INSERT

SELECT INSERT('123456', 2, 3, 'abcd') FROM table

指定した文字列を別の文字列の指定した場所に挿入します。

expr1は、文字列に評価される任意の式です。ターゲットの文字列を示します。

integer1は、2番目の文字列が挿入される、ターゲットの文字列の先頭からの文字数を表す任意の正の整数です。

integer2は、2番目の文字列によって置換される、ターゲットの文字数を表す任意の正の整数です。

expr2は、文字列に評価される任意の式です。ターゲットの文字列に挿入される文字列を示します。

INSERT(expr1, integer1, integer2, expr2)

LEFT

SELECT LEFT('123456', 3) FROM table

文字列の左側から、指定された文字数を返します。

exprは、文字列に評価される任意の式です

integerは、文字列の左側から返す文字数を表す任意の正の整数です。

LEFT(expr, integer)

LENGTH

LENGTH(Customer_Name)

指定した文字列の長さを文字数で返します。末尾の空白文字を除いた長さが返されます。

exprは、文字列に評価される任意の式です。

LENGTH(expr)

LOCATE

LOCATE('d' 'abcdef')

別の文字列での文字列の数値位置を返します。文字列が検索される文字列で見つからない場合、関数は値0を返します。

expr1は、文字列に評価される任意の式です。検索する文字列を示します。

expr2は、文字列に評価される任意の式です。

検索される文字列を示します。

LOCATE(expr1, expr2)

LOCATEN

LOCATEN('d' 'abcdef', 3)

LOCATEと同様に、別の文字列での文字列の数値位置を返します。LOCATENには、検索の開始位置を指定できる整数の引数が含まれます。

expr1は、文字列に評価される任意の式です。検索する文字列を示します。

expr2は、文字列に評価される任意の式です。検索される文字列を示します。

integerは、文字列の検索を開始する位置を表す任意の正(ゼロ以外)の整数です。

LOCATEN(expr1, expr2, integer)

LOWER

LOWER(Customer_Name)

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

exprは、文字列に評価される任意の式です。

LOWER(expr)

OCTET_LENGTH

OCTET_LENGTH('abcdef')

指定した文字列のバイト数を返します。

exprは、文字列に評価される任意の式です。

OCTET_LENGTH(expr)

POSITION

POSITION('d', 'abcdef')

文字式でのstrExpr1の数値位置を返します。strExpr1が見つからない場合、関数は0を返します。

expr1は、文字列に評価される任意の式です。ターゲット文字列で検索する文字列を示します。たとえば、"d"などです。

expr2は、文字列に評価される任意の式です。検索されるターゲット文字列を示します。たとえば、"abcdef"などです。

POSITION(expr1, expr2)

REPEAT

REPEAT('abc', 4)

指定した式をn回繰り返します。

exprは、文字列に評価される任意の式です

integerは、文字列を繰り返す回数を表す任意の正の整数です。

REPEAT(expr, integer)

REPLACE

REPLACE('abcd1234', '123', 'zz')

指定した文字式の1つ以上の文字を、別の1つ以上の文字で置換します。

expr1は、文字列に評価される任意の式です。これは、文字が置換される文字列です。

expr2は、文字列に評価される任意の式です。この2番目の文字列は、1番目の文字列で置換される文字を示します。

expr3は、文字列に評価される任意の式です。この3番目の文字列は、1番目の文字列内に代入する文字を指定します。

REPLACE(expr1, expr2, expr3)

RIGHT

SELECT RIGHT('123456', 3) FROM table

文字列の右側から、指定した数の文字を返します。

exprは、文字列に評価される任意の式です。

integerは、文字列の右側から返す文字数を表す任意の正の整数です。

RIGHT(expr, integer)

SPACE

SPACE(2)

空白を挿入します。

integerは、挿入するスペースの数を示す任意の正の整数です。

SPACE(expr)

SUBSTRING

SUBSTRING('abcdef' FROM 2)

固定文字数から元の文字列の新しい文字列を作成します。

exprは、文字列に評価される任意の式です。

startPosは、文字列の左の先頭(結果の先頭)からの文字数を表す任意の正の整数です。

SUBSTRING([SourceString] FROM [StartPostition])

SUBSTRINGN

SUBSTRING('abcdef' FROM 2 FOR 3)

SUBSTRINGと同様に、固定文字数から元の文字列の新しい文字列を作成します。

SUBSTRINGNには、新しい文字列の長さを文字数で指定できる整数の引数が含まれます。

exprは、文字列に評価される任意の式です。

startPosは、文字列の左の先頭(結果の先頭)からの文字数を表す任意の正の整数です。

SUBSTRING(expr FROM startPos FOR length)

TrimBoth

Trim(BOTH '_' FROM '_abcdef_')

文字列から指定した先頭および末尾の文字列を削除します。

charは、任意の単一文字です。文字の指定(および必須の一重引用符)を省略すると、空白文字がデフォルトで使用されます。

exprは、文字列に評価される任意の式です。

TRIM(BOTH char FROM expr)

TRIMLEADING

TRIM(LEADING '_' FROM '_abcdef')

文字列から指定した先頭の文字列を削除します。

charは、任意の単一文字です。文字の指定(および必須の一重引用符)を省略すると、空白文字がデフォルトで使用されます。

exprは、文字列に評価される任意の式です。

TRIM(LEADING char FROM expr)

TRIMTRAILING

TRIM(TRAILING '_' FROM 'abcdef_')

文字列から指定した末尾の文字列を削除します。

charは、任意の単一文字です。文字の指定(および必須の一重引用符)を省略すると、空白文字がデフォルトで使用されます。

exprは、文字列に評価される任意の式です。

TRIM(TRAILING char FROM expr)

UPPER

UPPER(Customer_Name)

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

exprは、文字列に評価される任意の式です。

UPPER(expr)

文字列関数の使用に関するヒント

ここでは、ワークブックで文字列関数を使用する際に、結果を最善のものにするためのヒントをいくつかご紹介します。

複数の値の連結:

LISTAGGを使用して、複数の値を1つのセルおよび1行に連結します。

listagg(<column to concatenate> by <grouping column>)

結果の文字列が長すぎる場合はon overflow truncateを追加し、値が一意ではない場合はdistinctを追加します。

例:

listagg(distinct City_ID by STATE on overflow truncate)

システム関数

USERシステム関数は、セッションに関連する値を返します。たとえば、サインインしたユーザーのユーザー名です。

関数 説明 構文

DATABASE

 

ログオンしているサブジェクト領域の名前を返します。

DATABASE()

USER

 

ログオンしているセマンティック・モデルのユーザー名を返します。

USER()

時系列関数

時系列関数では、時間ディメンションに基づいてデータを集計および予測できます。たとえば、AGO関数を使用して、1年前からの収益を計算できます。

時間ディメンションのメンバーは、関数のレベル以下である必要があります。そのため、指定されたレベル以下のメンバーを一意に識別する1つ以上の列が、問合せに計画されている必要があります。

関数 説明 構文

AGO

SELECT Year_ID, AGO(sales, year, 1)

過去の指定された期間のメジャーの集計値を計算します。たとえば、1年前の月次収益を計算するには、AGO(Revenue, Year, 1, SHIP_MONTH)を使用します。前四半期の四半期収益を計算するには、AGO(Revenue, Quarter, 1)を使用します。

AGO(MEASURE, TIME_LEVEL, OFFSET)

ここで:

  • MEASUREは、計算するメジャー(たとえば、収益)を表します。
  • TIME_LEVELは、期間を表しており、年、四半期、月、週、または日である必要があります。
  • OFFSETは、さかのぼって計算する期間の数(たとえば、1年の場合は1)を表します。

PERIODROLLING

SELECT Month_ID, PERIODROLLING (monthly_sales, -1, 1)

x単位の時間から始まり、現在の時刻からy単位の時間で終わる期間のメジャーの合計を計算します。たとえば、PERIODROLLINGを使用して、現在の四半期前の四半期で始まり、現在の四半期後の四半期で終わる期間の売上を計算できます。

PERIODROLLING(measure, x [,y])

ここで:

  • MEASUREは、メジャー列の名前を表します。
  • Xは、現在の時刻からのオフセットを表す整数です。
  • Yは、この関数が計算する時間単位の数を表す整数です。
  • HIERARCHYは、YRMONDAYなど、時間ウィンドウの計算に使用する時間ディメンション内の階層の名前を表すオプションの引数です。

TODATE

SELECT Year_ID, Month_ID, TODATE (sales, year)

期間の開始から最新の期間までのメジャーの集計値を計算します。たとえば、年度開始から現在の計算。

たとえば、過去1年間の売上を計算するには、TODATE(sales, year)を使用します。

TODATE(MEASURE, TIME_LEVEL)

ここで:

  • MEASUREは、少なくとも1つのメジャー列(たとえば、売上)を参照する式を表します。
  • TIME_LEVELは、期間を表しており、年、四半期、月、週、または日である必要があります。