ASTERIAのGravio(ノードコンピューティングプラットフォーム)でアクションフローを設定する際に使える関数の詳細な解説です。Pre MappingsとPost Mappingsの式の右辺やトリガーの式で利用できます。
| 関数名 | 引数 | 説明 | 例 |
|---|---|---|---|
| Len | Len(s) | 文字列の長さ(バイト数)を返す。sが配列やObjectの場合は要素数を返す。 | Len(“abc012漢字”) -> 11 |
| Contains | Contains(s, substr) | sの中にsubstrが含まれているかBoolで返す | Contains(“abc012漢字”, “漢字”) -> true |
| RuneCount | RuneCount(s) | sの文字列の文字数を返す | RuneCount(“abc012漢字”) -> 8 |
| HasPrefix | HasPrefix(s, prefix) | sがprefixで始まるかBoolで返す | HasPrefix(“https://www.asteria.com/”, “https://”) -> true |
| HasSuffix | HasSuffix(s, suffix) | sがsuffixで終わるかBoolで返す | |
| FirstIndex | FirstIndex(s, substr) | sの中で最初に現れるsubstrの位置を返す。ない場合は-1 | FirstIndex(“abc012漢字”, “漢字”) -> 6 |
| Join | Join(a, sep) | aの配列要素をsepを挟んで1つの文字列にする。 | Join([“abc”,”def”], “-“) -> “abc-def” |
| LastIndex | LastIndex(s, substr) | sの中で最後に現れるsubstrの位置を返す。ない場合は-1 | |
| Repeat | Repeat(s, count) | sをcount回繰り返した文字列を返す | Repeat(“abc012漢字”, 3) -> “abc012漢字abc012漢字abc012漢字” |
| Replace | Replace(s, old, new[, n]) | sの中でold文字列をnew文字列にn回目まで置換する。nが0より小さい時は全て(デフォルトは-1)。 | |
| Split | Split(s, sep[, n]) | sをsepで最大n個の要素に区切り配列で返す。nが0より小さい時は全て(デフォルトは-1) | Split(“a,b,c”, “,”) -> [“a”, “b”, “c”] |
| ToLower | ToLower(s) | sを小文字に変換する | |
| ToUpper | ToUpper(s) | sを大文字に変換する | |
| Trim | Trim(s[, cutset]) | sの頭と最後のcutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字 | Trim(“ abc “) -> “abc” |
| TrimLeft | TrimLeft(s[, cutset]) | sの頭cutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字 | |
| TrimRight | TrimRight(s[, cutset]) | sの最後のcutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字 | |
| TrimPrefix | TrimPrefix(s, prefix) | sがprefixではじまっていたら、それを取り除いた文字列を返す。始めていない場合はsをそのまま返す | TrimPrefix(“https://www.asteria.com”, “https://”) -> “www.asteria.com” |
| TrimSuffix | TrimSuffix(s, suffix) | sがsuffixでおわっていたら、それを取り除いた文字列を返す。終わっていない場合はsをそのまま返す | |
| JSONPath | JSONPath(path, s) | sからpathで指定して値を文字列で返す。 | JSONPath(“$.store.book[*].author”, cv.Payload) |
| Sprintf | Sprintf(format, s) | 書式付の文字列を整形し文字列を返します。書式は%に続いて変換指定子とオプションでフラグ、幅、精度で指定できます | Sprintf(“メッセージ件数: %d”, ToInt(cv.Payload)) |
| IFS | IFS (条件1, 値1[, 条件2, 値2, …]) | 条件を1から順に評価し合致した値を返す。条件にtrueと指定すると必ず合致するので、最後の条件にtrueを指定すると、それ以外すべてという条件を指定できます。 | IFS (ToFloat(cv.Payload) >= 10, “10以上です”, true, “10未満です”) |
| Left | Left(s, len) | sの先頭からlen文字数を取り出す。lenは漢字などの文字も1文字と数える | |
| Right | Right(s, len) | sの末尾からlen文字数を取り出す。lenは漢字などの文字も1文字と数える | |
| Mid | Mid(s, start, len) | sのstart位置からlen文字数を取り出す。startは先頭の位置を1とし、漢字などの文字も1文字とみなし位置を指定します。lenは漢字などの文字も1文字と数える | |
| Substring | Substring(s, start[, end]) | sのstart位置からend位置までの文字列を取り出す。start/endは先頭の位置を0とし、漢字などの文字も1文字とみなし位置を指定する | |
| Slice | Slice(s[, start[, end]]) | sのstart位置からend位置までの文字列を取り出す。start/endは先頭の位置を0とし、漢字などの文字も1文字とみなし位置を指定する。start/endに負の値を指定した場合は末尾から位置指定とみなす |
JSONPath()の使用例を解説します。センサーデータ(@cv.Payload@)やトリガー条件で実行するアクションの引数(@tv.Data@)がJSON形式の場合にJSONPath()を使用して値を参照することができます。
例えば store -> bicycle -> color を参照する場合には
cv.Payload.store.bicycle.color
と記述することができますがJSONPath()を使用した場合には
JSONPath("$.store.bicycle.color", cv.Payload)
と記述することもできます。
JSONPathの第一引数 path の構文要素:
| path | 説明 |
|---|---|
| $ | ルート オブジェクト/エレメント |
| @ | カレント オブジェクト/エレメント |
| . or [] | 子オペレーター |
| .. | 再帰下降 |
| * | ワイルドカード |
| [] | 添え字演算子 (ネイティブの配列演算子) |
| [,] | ユニオン演算子(代替名または配列インデックスをセットとして使用できます) |
| [start:end:step] | 配列スライス演算子 |
| ?() | フィルタ(スクリプト)式 |
| () | 基盤となるスクリプトエンジンを使用したスクリプト式 |
JSONPathの第一引数 path の使用例:
| 例 | 説明 |
|---|---|
| $.store.book[*].author | store内のbook配列のすべての author |
| $..author | すべてのauthor |
| $.store.* | store内のbook配列とbicycle |
| $.store..price | store内のすべてのprice |
| $..book[2] | 3番目のbook |
| $..book[(@.length-1)]$..book[-1:] | 最後のbook |
| $..book[0,1]$..book[:2] | book配列の最初の2つのbook |
| $..book[?(@.isbn)] | book配列のすべてのisbn |
| $..book[?(@.price<10)] | book配列のpriceが10より小さいもの |
| $..* | すべてのノード/エレメント |
書式付の文字列を整形し文字列を返します。書式は%に続いて変換指定子とオプションでフラグ、幅、精度で指定できます。
変換指定子:
| 変換指定子 | 説明 |
|---|---|
| %b | 整数2進数 |
| %d | 整数10進数 |
| %x %X | 16進数 |
| %e %E | 浮動小数、科学的表記法 |
| %f %F | 浮動小数、指数のない表記 |
| %g %G | 浮動小数、指数が大きい場合は%e、それ以外が%f |
| %s | 文字列 |
| %% | %そのものの文字 |
フラグ:
| フラグ | 説明 |
|---|---|
| + | 符号つき |
| - | 左寄せ |
| 0 | 幅未満のときはスペースではなく0を埋める |
幅、精度:
| 幅、精度 | 説明 |
|---|---|
| %f | デフォルトの幅と精度 |
| %9f | 幅9 |
| %.2f | 精度2 |
| %9.2f | 幅9、精度2 |
例:
Sprintf("メッセージ件数: %d", ToInt(cv.Payload))
Sprintf("浮動小数の小数点第二位まで: %.2f", cv.Payload)
以下の関数が利用できます。
| 関数名 | 引数 | 説明 |
|---|---|---|
| ToBool | ToBool(a) | Bool型へ変換 |
| ToInt | ToInt(a) | 整数型へ変換 |
| ToFloat | ToFloat(a) | 浮動小数型へ変換 |
| ToString | ToString(a) | 文字列型へ変換 |
| ToDate | ToDate(a) | 日時型へ変換 |
| ToBinary | ToBinary(a) | バイト列へ変換 |
| ToJSON | ToJSON(a) | JSON配列型またはJSON Object型へ変換 |
以下の関数が利用できます。
| 関数名 | 引数 | 説明 | 例 |
|---|---|---|---|
| URLPathEscape | URLPathEscape(s) | sをURLパスセグメントに安全に配置できる文字列にエスケープする | URLPathEscape(“test 1?test2 test3”) -> “test1%3Ftest2%20test3” |
| URLPathUnescape | URLPathUnescape(s) | URLPathEscapeでエスケープされた文字列をもとに戻す | |
| URLQueryEscape | URLQueryEscape(s) | sをURLクエリに安全に配置できる文字列にエスケープする | URLQueryEscape(“test 1?test2 test3”) -> “test1%3Ftest2+test3” |
| URLQueryUnescape | URLQueryUnescape(s) | URLQueryEscapeでエスケープされた文字列をもとに戻す | |
| MD5 | MD5 | バイト列bのMD5を返す | |
| SHA1 | SHA1 | バイト列bのSHA1を返す | |
| SHA256 | SHA256 | バイト列bのSHA256を返す | |
| BASE64 | BASE64 | バイト列bのBASE64を返す。padでtrueを指定すると=パディングが行われる(デフォルトはtrue) | |
| DecodeBASE64 | DecodeBASE64(s[, pad]) | BASE64sをデコードする。padでtrueを指定すると=パディングが行われたBASE64と解釈する(デフォルトはtrue) | |
| BASE64URL | BASE64URL | バイト列bをURLまたはファイル名で使用されるBASE64を返す。padでtrueを指定すると=パディングが行われる(デフォルトはtrue) | |
| DecodeBASE64URL | DecodeBASE64URL(s[, pad]) | BASE64sをデコードする。padでtrueを指定すると=パディングが行われたBASE64と解釈する(デフォルトはtrue) |
以下の関数が利用できます。
| 関数名 | 引数 | 説明 | 例 |
|---|---|---|---|
| Now | Now([timezone]) | 今現在の日時の日時型を返す | |
| Year | Year(t[, timezone]) | 日時型tの年を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。 | |
| Month | Month(t[, timezone]) | 日時型tの月を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。 | |
| Day | Day(t[, timezone]) | 日時型tの日を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。 | |
| Hour | Hour(t[, timezone]) | 日時型tの時を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。 | |
| Minute | Minute(t[, timezone]) | 日時型tの分を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。 | |
| Second | Second(t[, timezone]) | 日時型tの秒を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。 | |
| Weekday | Weekday(t[, timezone]) | 日時型tの曜日を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。(0は日曜日) | |
| ToLocal | ToLocal(t) | 日時型tをシステムタイムゾーンに変換する | |
| ToUTC | ToUTC(t) | 日時型tをUTCに変換する | |
| ToTimezone | ToTimezone(t, timezone) | 日時型tを指定されたタイムゾーンに変換する | ToTimezone(Now(), “America/New_York”) |
| DateFormat | DateFormat(t, layout) | 日時型tを指定されたレイアウトで文字列に変換する | DateFormat(Now(), “02 Jan 06 15:04 JST”) |
| DateParse | DateParse(layout, s[, timezone]) | sをlayoutに沿って解釈し日時型を返す | |
| AddDuration | AddDuration(t, s) | 日時型tに指定されたsを加算する。sが整数の場合にはミリ秒とし、文字列の場合は整数に単位を指定する。単位は時”h”、分”m”、秒”s”、ミリ秒”ms”、マイクロ秒”us”、ナノ秒”ns”が指定できます | AddDuration(Now(), 100) AddDuration(Now(), “1h”) |
| AddDate | AddDate(t, y, m, d) | 日時型tに指定されたy(年)、m(月)、d(日)を加算する | AddDate(Now(),0, 0, 7) |
DateFormat, DateParseで指定するレイアウトの例:
| 形式 | レイアウト |
|---|---|
| Layout | “01/02 03:04:05PM ‘06 +0900” |
| ANSIC | “Mon Jan _2 15:04:05 2006” |
| UnixDate | “Mon Jan _2 15:04:05 JST 2006” |
| RubyDate | “Mon Jan 02 15:04:05 +0900 2006” |
| RFC822 | “02 Jan 06 15:04 JST” |
| RFC822Z | “02 Jan 06 15:04 +0900” |
| RFC850 | “Monday, 02-Jan-06 15:04:05 JST” |
| RFC1123 | “Mon, 02 Jan 2006 15:04:05 JST” |
| RFC1123Z | “Mon, 02 Jan 2006 15:04:05 +0900” |
| RFC3339 | “2006-01-02T15:04:05Z07:00” |
| RFC3339Nano | “2006-01-02T15:04:05.999999999Z07:00” |
| Generic | “20060102” |
使用例:
データを保存するファイル名を現在の7日前の日付で作成する
DateFormat(AddDate(Now("Asis/Tokyo"),0,0,-7),"20060102")+".CSV"
以下の関数が利用できます。
| 関数名 | 引数 | 説明 |
|---|---|---|
| Env | Env(s) | 環境変数を返す |
以下の関数が利用できます。
| 関数名 | 引数 | 説明 | 例 |
|---|---|---|---|
| RegexMatch | RegexMatch(re, s) | 正規表現reとsがマッチするかBoolで返す | RegexMatch(“G.*o”, “Gravio Hub Kit”) -> true |
| RegexFind | RegexFind(re, s) | 正規表現reとsがマッチした最初の文字列を返す | RegexFind(“i.”, “Gravio HubKit”) -> “io” |
| RegexFindSubmatch | RegexFindSubmatch(re, s) | 正規表現reとsがマッチした最初の文字列と括弧で囲まれた部分式があれば配列で返す | RegexFindSubmatch(“(G.o)(H.t)”, “Gravio HubKit”) -> [“Gravio HubKit”, “Gravio”, “HubKit”] |
| RegexFindAll | RegexFindAll(re, s[, n]) | 正規表現reとsがマッチした全ての文字列を配列で返す | RegexFindAll(“i.”, “Gravio Hub Kit”) -> [“io”, “it”] |
| RegexReplace | RegexReplace(re, s, repl) | 正規表現reとsがマッチしたreplに置換した文字列を返す。replでは$1のような部分式を使用できる。 | |
| UUID | UUID | UUID文字列を返す。sepはセパレータ(デフォルトは空文字列) |
以下の関数が利用できます。
| 関数名 | 引数 | 説明 |
|---|---|---|
| Abs | Abs(v) | 絶対値を返します |
| Acos | Acos(v) | 逆余弦を返します |
| Acosh | Acosh(v) | 逆双曲線余弦を返します |
| Asin | Asin(v) | 逆正弦を返します |
| Asinh | Asinh(v) | 逆双曲線正弦を返します |
| Atan | Atan(v) | 逆正接を返します |
| Atan2 | Atan2(y, x) | y/xの逆正接を返します |
| Atanh | Atanh(v) | 逆双曲線正接を返します |
| Cbrt | Cbrt(v) | 立方根を返します |
| Ceil | Ceil(v) | 小数点以下を切り上げた値を返します |
| Copysign | Copysign(x, y) | 大きさxで符号yの値を返します |
| Cos | Cos(v) | 余弦を返します |
| Cosh | Cosh(v) | 双曲線余弦を返します |
| Erf | Erf(v) | 誤差関数を返します |
| Erfc | Erfc(v) | 相補誤差関数を返します |
| Exp | Exp(x) | 自然対数eのx乗を返します |
| Exp2 | Exp2(x) | 2のx乗を返します |
| Expm1 | Expm1(x) | 自然対数eのx乗から1を引いた値を返します |
| Floor | Floor(v) | 小数点以下を切り捨てた値を返します |
| Hypot | Hypot(x, y) | Sqrt(xx + yy)を返します |
| Inf | Inf(sign) | sign>=0の時、正の無限大を返し、sign<0の時、負の無限大を返します |
| IsInf | IsInf(v, sign) | signの符号に応じて無限大であるかを返します |
| IsNaN | IsNaN(v) | 正規の値ではないNot a Numberであるかを返します |
| Log | Log(v) | 自然対数を返します |
| Log10 | Log10(v) | 10を底とした対数を返します |
| Log1p | Log1p(v) | +1した自然対数を返します |
| Log2 | Log2(v) | 2を底とした対数を返します |
| Max | Max(v1[, v2, v3, …]) | 指定された値で最大の値を返します |
| Min | Min(v1[, v2, v3, …]) | 指定された値で最小の値を返します |
| NaN | NaN() | 正規の値ではないNot a Numberを返します |
| PI | PI() | 円周率を返します |
| Pow | Pow(x, y) | xのy乗を返します |
| Round | Round(v[, n]) | 小数点以下を四捨五入した値を返します。nを指定すると小数点第n位で四捨五入します |
| Signbit | Signbit(v) | 値が負であるかを返します |
| Sin | Sin(v) | 正弦を返します |
| Sinh | Sinh(v) | 双曲線正弦を返します |
| Sqrt | Sqrt(v) | 平方根を返します |
| Random | Random([max]) | 乱数を返します。引数がなければ、0以上1未満の浮動小数を返し、引数を指定すると、指定された値を整数の最大値とみなし、0以上指定最大値未満の整数を返します |
| Tan | Tan(v) | 正接を返します |
| Tanh | Tanh(v) | 双曲線正接を返します |
| Trunc | Trunc(v[, n]) | 小数部を切り捨て整数値を返します。nを指定すると小数点第n位で切り捨てます |
| Degrees | Degrees(v) | ラジアンを度に変換します |
| Radians | Radians(v) | 度をラジアンに変換します |
| FtoC | FtoC(v) | 華氏を摂氏に変換します |
| CtoF | CtoF(v) | 摂氏を華氏に変換します |
| GtoLBM | GtoLBM(v) | グラムをポンドに変換します |
| LBMtoG | LBMtoG(v) | ポンドをグラムに変換します |
| GtoOZM | GtoOZM(v) | グラムをオンスに変換します |
| OZMtoG | OZMtoG(v) | オンスをグラムに変換します |
| MtoIN | MtoIN(v) | メートルをインチに変換します |
| INtoM | INtoM(v) | インチをメートルに変換します |
| MtoFT | MtoFT(v) | メートルをフィートに変換します |
| FTtoM | FTtoM(v) | フィートをメートルに変換します |