3.5. スカラー関数
Data Virtualization は、ビルトインのスカラー機能を多数提供します。詳細は、「 DML コマンド 」および「 データタイプ 」を参照してください。さらに、Data Virtualization はユーザー定義の関数または UDF の機能を提供します。UDF の追加に関する詳細は、『Translator Development Guide』の「 User-defined functions 」を参照してください。UDF を追加したら、他の関数を呼び出すのと同じ方法で呼び出すことができます。
3.5.1. 数値関数 リンクのコピーリンクがクリップボードにコピーされました!
数値関数は数値を返します(整数、long、float、ダブル、大きな整数、大きい 10 進数)。通常、これらは文字列を取りますが、数値は入力として取ります。
機能 | 定義 | データタイプ制約 |
---|---|---|
+ - * / | 標準の数値演算子 | x in {integer, long, float, double, biginteger, bigdecimal}, return type is x [a] |
ABS(x) | x の絶対値 | 上記の標準的な数値演算子を参照してください。 |
ACOS(x) | arc cosine of x | x in {double, bigdecimal}, return type is double |
ASIN(x) | x のアーティファクト | x in {double, bigdecimal}, return type is double |
ATAN(x) | x の ArC tangent | x in {double, bigdecimal}, return type is double |
ATAN2(x,y) | x および y の ArC tangent | X, y in {double, bigdecimal}, return type is double |
CEILING(x) | x の Ceiling | X in {double, float}, return type is double |
COS(x) | cosine of x | x in {double, bigdecimal}, return type is double |
COT(x) | x の Cotangent of x | x in {double, bigdecimal}, return type is double |
DEGREES(x) | x degrees を radians に変換する | x in {double, bigdecimal}, return type is double |
EXP(x) | e^x | X in {double, float}, return type is double |
FLOOR(x) | x floor of x | X in {double, float}, return type is double |
FORMATBIGDECIMAL(x, y) | y 形式を使用した x のフォーマット | X は大きい 10 進数で、y は文字列で、文字列を返します。 |
FORMATBIGINTEGER(x, y) | y 形式を使用した x のフォーマット | X は大型整数で、y は文字列で、文字列を返します。 |
FORMATDOUBLE(x, y) | y 形式を使用した x のフォーマット | X は double で、y は文字列を返します。文字列を返します。 |
FORMATFLOAT(x, y) | y 形式を使用した x のフォーマット | X は浮動小数点、y は文字列で、文字列を返します。 |
FORMATINTEGER(x, y) | y 形式を使用した x のフォーマット | X は整数で、y は文字列です。文字列を返します。 |
FORMATLONG(x, y) | y 形式を使用した x のフォーマット | X は long、y は文字列で、文字列を返します。 |
LOG(x) | x(ベース e)の自然なログ | X in {double, float}, return type is double |
LOG10(x) | Log of x(base 10) | X in {double, float}, return type is double |
MOD(x, y) | modulus(x / y のメイン元) | x in {integer, long, float, double, biginteger, bigdecimal}, return type is x と同じです。 |
PARSEBIGDECIMAL(x, y) | y 形式を使用した x の解析 | X、y は文字列で、大きい 10 進数を返します。 |
PARSEBIGINTEGER(x, y) | y 形式を使用した x の解析 | X、y は文字列で、大きな整数を返します。 |
PARSEDOUBLE(x, y) | y 形式を使用した x の解析 | X、y は文字列で、ダブルを返します。 |
PARSEFLOAT(x, y) | y 形式を使用した x の解析 | X、y は文字列で、浮動小数点を返します。 |
PARSEINTEGER(x, y) | y 形式を使用した x の解析 | X、y は文字列で、整数を返します。 |
PARSELONG(x, y) | y 形式を使用した x の解析 | X、y は文字列で、long を返します。 |
PI() | Pi の値 | 戻り値は double です |
POWER(x,y) | X から y の電源へ | x in {double, bigdecimal, biginteger}, return is the same type as x |
RADIANS(x) | x radians をレベルに変換する | x in {double, bigdecimal}, return type is double |
RAND() | 必要時にクエリーで確立されたジェネレーターやシステムクロックで初期化されたジェネレーターを使用して、乱数を返します。 | double を返します。 |
RAND(x) | x でシードされた新しいジェネレーターを使用して乱数を返します。通常、これは初期化クエリーで呼び出される必要があります。これは、Data Virtualization RAND 関数によって返されるランダムな値にのみ影響し、ソースによって評価される RAND 関数からの値は影響を与えません。 | X は整数で、二重を返します。 |
ROUND(x,y) | y の位置に丸めた x を丸めます。負の値は、y を小数点の左側にある場所を示します。 | x in {integer, float, double, bigdecimal} y は整数で、戻り値は x と同じタイプです。 |
SIGN(x) | x > 0 の場合は 1、x = 0 の場合は 0(x < 0 の場合は -1) | x in {integer, long, float, double, biginteger, bigdecimal}, return type is integer |
SIN(x) | x の Sine 値 | x in {double, bigdecimal}, return type is double |
SQRT(x) | x の平方ルート | x in {long, double, bigdecimal}, return type is double |
TAN(x) | x の Tangent | x in {double, bigdecimal}, return type is double |
BITAND(x, y) | x と y のビット単位の AND | X, y in {integer}, return type is integer |
HadoopTOR(x, y) | x および y のビット単位の OR | X, y in {integer}, return type is integer |
giveTXOR(x, y) | x および y のビット単位の XOR | X, y in {integer}, return type is integer |
BITNOT(x) | x をビットにしない | {integer} の x 戻り値の型は整数です。 |
[a] 非あいまいな関数関数の精度とスケールは、Java のものと一致します。大きな 10 進数操作の結果は、単位を除き Java に一致します。ただし、max(16, dividend.scale + divisor.precision + 1)の推奨スケールを使用し、スケールを max(dividend.scale, normalized scale)に設定して末尾のゼロを削除します。
文字列からの数値データ型の解析
Data Virtualization は、文字列の数字を解析するのに使用できる関数のセットを提供します。各文字列に文字列の形式を指定する必要があります。これらの関数は、java.text.DecimalFormat クラスによって確立された規則を使用して、これらの関数で使用することのできる形式を定義します。Sun Java の URL で Sun Java Web サイトにアクセスすると、このクラスが数値の文字列形式を定義する方法が確認できます。
たとえば、これらの関数呼び出しを java.text.DecimalFormat 規則に準拠するフォーマット文字列とともに使用して、文字列を解析し、必要なデータタイプを返すことができます。
入力文字列 | 関数呼び出しのフォーマット文字列 | 出力値 | 出力データタイプ |
---|---|---|---|
'$25.30' | parseDouble(cost, '$,0.00;($,0.00)') | 25.3 | double |
'25%' | parseFloat(percent, ',#0%') | 25 | float |
'2,534.1' | parseFloat(total, ',0.;-,0.') | 2534.1 | float |
'1.234E3' | parseLong(amt, '0.###E0') | 1234 | Long |
'1,234,567' | parseInteger(total, ',0;-,0') | 1234567 | integer |
数値データ型を文字列としてフォーマットする
Data Virtualization は、数値のデータタイプを文字列に変換するために使用できる関数のセットを提供します。各文字列にフォーマットを指定する必要があります。これらの関数は、java.text.DecimalFormat クラス内で確立された規則を使用して、これらの関数で使用することのできる形式を定義します。Sun Java の URL で Sun Java Web サイトにアクセスすると、このクラスが数値の文字列形式を定義する方法が確認できます。
たとえば、java.text.DecimalFormat 規則に準拠するフォーマット文字列を使用して、これらの関数呼び出しを使用し、数値のデータ型を文字列にフォーマットできます。
入力値 | 入力データタイプ | 関数呼び出しのフォーマット文字列 | 出力文字列 |
---|---|---|---|
25.3 | double | formatDouble(cost, '$,0.00;($,0.00)') | '$25.30' |
25 | float | formatFloat(percent, ',#0%') | '25%' |
2534.1 | float | formatFloat(total, ',0.;-,0.') | '2,534.1' |
1234 | Long | formatLong(amt, '0.###E0') | '1.234E3' |
1234567 | integer | formatInteger(total, ',0;-,0') | '1,234,567' |