GlideDBFunctionBuilder - スコープ対象、グローバル
GlideDBFunctionBuilder API は、データベースで SQL 操作を実行する関数をビルドするメソッドを提供します。
これらのメソッドは、レコードデータに対して SQL 操作を実行するリレーショナルデータベース管理システム (RDBMS) 関数をビルドする方法を提供します。これらのメソッドは、スコープ指定されたサーバースクリプトとグローバルサーバースクリプトの両方で使用できます。
- GlideDBFunctionBuilder コンストラクターと関連メソッドを使用して関数を構築します。
- 関数を作成したら、GlideRecord クラスの addFunction() メソッドを使用して、現在のレコードに関数を適用します。
- GlideRecord クラスの addQuery() メソッドを使用して、関数をクエリに追加します。
- getValue() や getElement() などの既存の GlideRecord API メソッドを使用して、関数の結果を取得します。
例:
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
dbFunction = functionBuilder.field('short_description'); // column: Name of the table column to search.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column to search
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
}
関数フィールドの詳細については、「 Function field」を参照してください。
スコープ対象 GlideDBFunctionBuilder - GlideDBFunctionBuilder()
GlideDBFunctionBuilder オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
var builder = new GlideDBFunctionBuilder();
スコープ対象 GlideDBFunctionBuilder - andFunc(expr1, expr2, ...)
新しい AND 式を開始します。パラメーターとして指定されたすべての式が true の場合にのみ true を返します。少なくとも 1 つのブール値の式をパラメーターとして指定する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| 式 | ブール値の GlideFunction 式 | 現在、この基準を満たす Glide 関数には、and()、or()、compare() が含まれます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 結果の GlideFunction 式。 |
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。
var expr = new GlideDBFunctionBuilder()
.andFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
gs.info("Expression: " + expr);
出力:
Expression: glidefunction:and(compare(first_name,'=','John'),compare(active,'=','1'))
スコープ対象 GlideDBFunctionBuilder - add()
2 つ以上の整数フィールドの値を加算します。
field(文字列 field) メソッドを使用して、操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
スコープ対象 GlideDBFunctionBuilder - build()
GlideDBFunctionBuilder オブジェクトによって定義されたデータベース関数を構築します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
gs.info(myAddingFunction);
*** Script: glidefunction:add(order,priority)スコープ対象 GlideDBFunctionBuilder - coalesce()
任意の数のカンマ区切りフィールドを入力として取得し、最初の空でない値を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| argument | 文字列 | 定数値 (文字列、オブジェクト、ブーリアン) またはフィールドを含むリスト。許可される形式: glidefunction:coalesce(<string, string, string, etc.>) 引数には任意の数のパラメーターを含めることができますが、少なくとも 1 つのパラメーターを定義する必要があります。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 引数リストの最初の値は null 以外です。null 以外の値がない場合は、null が返されます。関数オブジェクトの作成時に引数が指定されていない場合は、「無効な関数」が文字列として返されます。 |
次の要求例は、closed_at、resolved_at、および sys_updated_on フィールドに従って null 値を返す結合ガイド関数を形成する方法を示しています。
var gr = new GlideRecord('incident');
var func = "glidefunction:coalesce(closed_at, resolved_at,sys_updated_on)";
gr.addFunction(func);
gr.query();
while(gr.next())
gs.info(gr.getValue(func));
このスクリプトは、インシデントテーブルの各インシデントレコードについて、このリストのフィールド [closed_at、resolved_at、sys_updated_on] から最初の null 以外の値を返し 、gs.info とともに出力します。
2016-12-14 02:46:44
2018-01-09 22:55:16
2018-01-07 22:54:55
2018-01-13 23:02:54
2018-01-09 23:12:02
スコープ付き GlideDBFunctionBuilder - compare(exp1, op, exp2)
2 つの式の比較を実行する新しい COMPARE 式を開始します。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp1 | 文字列 | 左の比較式。定数、フィールドへの参照、または別の Glide 関数にすることができます。 |
| 操作 | 文字列 | 引用符で囲まれた比較演算子。指定できる値:
|
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数にすることができます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 結果の GlideFunction 式。 |
次の例は、compare() 操作を使用して glidefunction 式をビルドする方法を示しています。compare() を呼び出した後、3 つの必須パラメーターのそれぞれを指定するために 3 つの追加呼び出しを行う必要があり、endfun() を 1 回呼び出すことで完了します。以下では、2つの別々の compare() 式を作成し、 それらをor() 式のパラメーターとして提供します。
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
出力:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
スコープ対象 GlideDBFunctionBuilder - concat()
2 つ以上のフィールドの値を連結します。
field(文字列 field) メソッドを使用して、操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myConcatFunction = functionBuilder.concat();
myConcatFunction = functionBuilder.field('short_description');
myConcatFunction = functionBuilder.field('caller_id.name');
myConcatFunction = functionBuilder.build();
スコープ対象 GlideDBFunctionBuilder - constant(文字列 constant)
関数で使用する定数値を定義します。dayofweek() メソッドで使用する場合、文字列は日曜日または月曜日のどちらを週の最初の日として使用するかを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| constant | 文字列 | 関数で使用される定数値。 dayofweek() メソッドとともに使用する場合、この値は週が日曜日または月曜日のどちらから始まるかを定義します。
この定義により、dayofweek() メソッドは指定された日付から正しい曜日を返すことができます。1 または 2 以外の値が指定された場合、dayofweek() メソッドは日曜日を週の最初の日として使用します。 |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my');
dbFunction = functionBuilder.field('short_description');
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var g = new GlideRecord('incident');
g.addFunction(dbFunction);
g.addQuery("short_description", "CONTAINS", "my");
g.setLimit(20);
g.query();
while(g.next()) {
gs.info(g.short_description + "\n position('my', short_description): " + g.getValue(dbFunction));
}
スコープ対象 GlideDBFunctionBuilder - datediff()
指定された開始日時と終了日時を使用して期間を決定します。
field(文字列 field) メソッドを使用して、開始日時フィールドと終了日時フィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myDateDiffFunction = functionBuilder.datediff();
myDateDiffFunction = functionBuilder.field('sys_updated_on');
myDateDiffFunction = functionBuilder.field('opened_at');
myDateDiffFunction = functionBuilder.build();
スコープ対象 GlideDBFunctionBuilder - dayofweek()
指定された日付の曜日を表す整数を返します。
field(文字列フィールド) メソッドを使用して、特定の日時を定義します。週が日曜日または月曜日のどちらで始まるかを定義するには、constant(文字列 constant) メソッドを使用します。
このメソッドは、MySQL、Oracle、および Microsoft SQL Server データベースでのみ使用できます。Oracle データベースを使用する場合、NLS_TERRITORY 設定は日曜日を週の最初の日とするテリトリーに設定する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 整数 | 週の最初の日が constant(文字列 constant) メソッドで日曜日に設定されている場合、戻り値は次の曜日に関連付けられます。
週の最初の日が月曜日に設定されている場合:
constant(文字列 constant) メソッドに 1 または 2 以外の値が指定された場合、dayofweek() メソッドは日曜日を週の最初の日として使用します。 |
var functionBuilder = new GlideDBFunctionBuilder();
var dayOfWeekFunction = functionBuilder.dayofweek();
dayOfWeekFunction = functionBuilder.field('opened_at');
dayOfWeekFunction = functionBuilder.constant('2');
dayOfWeekFunction = functionBuilder.build();
var now_GR = new GlideRecord('incident');
now_GR.addFunction(dayOfWeekFunction);
now_GR.query();
while(now_GR.next())
gs.log(now_GR.getValue(dayOfWeekFunction));
スコープ対象 GlideDBFunctionBuilder - divide()
ある整数フィールドの値を別の整数フィールドの値で除算します。
field(文字列 field) メソッドを使用して、操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myDivideFunction = functionBuilder.divide();
myDivideFunction = functionBuilder.field('order');
myDivideFunction = functionBuilder.field('priority');
myDivideFunction = functionBuilder.build();
スコープ対象 GlideDBFunctionBuilder - field(文字列 field)
SQL 操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| フィールド | 文字列 | SQL 操作を実行するフィールド。 |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
スコープ対象 GlideDBFunctionBuilder - length()
フィールド内のコード単位数を決定します。
field(文字列 field) メソッドを使用して、操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myLengthFunction = functionBuilder.length();
myLengthFunction = functionBuilder.field('short_description');
myLengthFunction = functionBuilder.build();
スコープ対象 GlideDBFunctionBuilder - multiply()
2 つの整数フィールドの値を乗算します。
field(文字列 field) メソッドを使用して、操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var myMultiplyFunction = functionBuilder.multiply();
myMultiplyFunction = functionBuilder.field('order');
myMultiplyFunction = functionBuilder.field('priority');
myMultiplyFunction = functionBuilder.build();
スコープ付き GlideDBFunctionBuilder - orFunc(式)
パラメーターとして指定された式の少なくとも 1 つが true の場合に true を返す新しい OR 式を開始します。
少なくとも 1 つのブール値の式をパラメーターとして指定する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| 式 | ブール値の GlideFunction 式 | 現在、この基準を満たす Glide 関数には、and()、or()、compare() が含まれます。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 結果の GlideFunction 式。 |
次の例は、or() 操作を使用して glidefunction 式をビルドする方法を示しています。式は、 first_name フィールドが「John」であるか、 active フィールドが true の場合に true を返します。結果の式文字列は、glidefunction 式が受け入れられる場所であればどこでも使用できます。
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
gs.info("Expression: " + expr);
出力:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
スコープ対象 GlideDBFunctionBuilder - position()
テーブルの列内で指定された文字列が最初に出現したものを返します。
必要に応じて、文字列内の場所を指定して検索を開始できます。このメソッドは、MySQL の LOCATE(substring, str, position) に相当します。
この方法を使用して、データアナリストによる興味深いデータポイントやカスタムレポートを見つけることができます。通常、この方法は、データウェアハウスや、柔軟性の低いシステムにデータを抽出、変換、ロード (ETL) する場合に使用します。
このメソッドを辞書レコードで使用するには、 glidefunction:position(<serarch_term>,<column>) を使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| search_term | 文字列 | 指定されたテーブル列で検索するテキスト。 |
| ] 列に移動する | 文字列 | 検索するテーブル列の名前。テーブルは、関連する GlideRecord オブジェクトで指定されます。 |
| start_position | [Number (番号)] | オプション。検索を開始する列テキスト内の位置。 デフォルト値:1 |
| タイプ | 説明 |
|---|---|
| なし | 指定した検索語が最初に出現する位置。 関連付けられたテキストで検索用語が見つからない場合は 0 を返します。必要な引数が NULL の場合は NULL を返します。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
dbFunction = functionBuilder.field('short_description'); // column: Name of the table column to search.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column to search
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
}
出力:
*** Script: glidefunction:position('my',short_description)
*** Script: Wireless access is down in my area
position('my', short_description): 28
*** Script: Printer in my office is out of toner
position('my', short_description): 12
*** Script: Reset my password
position('my', short_description): 7
*** Script: I can't launch my VPN client since the last software update
position('my', short_description): 16
*** Script: Missing my home directory
position('my', short_description): 9
*** Script: Seem to have an issue with my hard drive...
position('my', short_description): 28
*** Script: Please remove the latest hotfix from my PC
position('my', short_description): 38
*** Script: I can't get my weather report
position('my', short_description): 13
*** Script: Reset my password
position('my', short_description): 7
*** Script: my PDF docs are all locked from editing
position('my', short_description): 1
*** Script: My desk phone does not work
position('my', short_description): 1
*** Script: Can't log into SAP from my laptop today
position('my', short_description): 25
*** Script: My computer is not detecting the headphone device
position('my', short_description): 1
*** Script: My disk is still having issues. Can't delete a file
position('my', short_description): 1
*** Script: The USB port on my PC stopped working
position('my', short_description): 17
スコープ付き GlideDBFunctionBuilder - substring()
指定された場所から始まるテーブルの指定された列からサブ文字列を返します。
必要に応じて、テキスト抽出を停止する文字列内の場所を指定することもできます。このメソッドは、MySQL の LOCATE(substring, str, position) に相当します。
この方法は、データベースレベルでは JavaScript の方法と似ています。この方法を使用して、データアナリスト向けの興味深いデータポイントやカスタムレポートを見つけることができます。通常、この方法は、データウェアハウスや、柔軟性の低いシステムにデータを抽出、変換、ロード (ETL) する場合に使用します。
辞書レコードでこのメソッドを使用するには、glidefunction:substring(<field>,<start_position>,<end_position>) を使用します
| 名前 | タイプ | 説明 |
|---|---|---|
| フィールド | 文字列 | テキストを取得するテーブル内の列の名前。テーブルは、関連する GlideRecord オブジェクトで指定されます。 |
| start_position | [Number (番号)] | テキストの抽出を開始する列テキスト内の位置。 |
| end_position | [Number (番号)] | オプション。テキストの抽出を停止する列テキスト内の場所。 デフォルト:指定した列のテキストの末尾。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 指定されたテーブル列から抽出されたテキスト。 |
次のコード例は、このメソッドを呼び出す方法を示しています。
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.substring();
dbFunction = functionBuilder.field('short_description'); // field: Column within the table to obtain the substring
dbFunction = functionBuilder.constant(0); // start_position: Location in the column text to start extracting text
dbFunction = functionBuilder.constant(20); // end_position: Location in the column text to stop extracting text.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column from which to extract the text
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n substring(short_description, 0, 20): " + gr_incident.getValue(dbFunction));
}
出力:
*** Script: glidefunction:substring(short_description,'0','20')
*** Script: Wireless access is down in my area
substring(short_description, 0, 20): Wireless access is
*** Script: Printer in my office is out of toner
substring(short_description, 0, 20): Printer in my offic
*** Script: Reset my password
substring(short_description, 0, 20): Reset my password
*** Script: I can't launch my VPN client since the last software update
substring(short_description, 0, 20): I can't launch my V
*** Script: Missing my home directory
substring(short_description, 0, 20): Missing my home dir
*** Script: Seem to have an issue with my hard drive...
substring(short_description, 0, 20): Seem to have an iss
*** Script: Please remove the latest hotfix from my PC
substring(short_description, 0, 20): Please remove the l
*** Script: I can't get my weather report
substring(short_description, 0, 20): I can't get my weat
*** Script: Reset my password
substring(short_description, 0, 20): Reset my password
*** Script: my PDF docs are all locked from editing
substring(short_description, 0, 20): my PDF docs are all
*** Script: My desk phone does not work
substring(short_description, 0, 20): My desk phone does
*** Script: Can't log into SAP from my laptop today
substring(short_description, 0, 20): Can't log into SAP
*** Script: My computer is not detecting the headphone device
substring(short_description, 0, 20): My computer is not
*** Script: My disk is still having issues. Can't delete a file
substring(short_description, 0, 20): My disk is still ha
*** Script: The USB port on my PC stopped working
substring(short_description, 0, 20): The USB port on my
スコープ対象 GlideDBFunctionBuilder - subtract()
1 つの整数フィールドの値を別の整数フィールドから減算します。
field(文字列 field) メソッドを使用して、操作が実行されるフィールドを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var functionBuilder = new GlideDBFunctionBuilder();
var mySubtractFunction = functionBuilder.subtract();
mySubtractFunction = functionBuilder.field('order');
mySubtractFunction = functionBuilder.field('priority');
mySubtractFunction = functionBuilder.build();