計算式パネルで使用される構文 - 計算値

計算値作成ページでMETRON構文を使った計算式の構築について説明します。

計算式パネルを使用すると、複数の変数を関連付ける計算値を構築するための数式を書くことができます。使用可能なさまざまな式や関数について理解を深め、METRON EOMプラットフォームで使用される構文に関するヘルプを利用するには、[?] ボタンをクリックしてください。 

EOMプラットフォームでは、次のような演算を行うことができます:

  • 四則演算
  • 数値比較
  • ロジカル演算子
  • ビット演算子
  • 三項演算子
  • 文字列操作
  • データ構造

EVA-L Syntax

EVA-L v2.0.2

基本

データ型

nil

値が存在しないことを表します

数値

例: 103, 2.5, .5, 1_000

ブール値

true, false

文字列

例: "hello", 'hello'

配列

例: [1, 2, 3]

ディクショナリ

例: {x: 2, y: 1}

 

変数

変数の値は、関連する識別子を通して参照することができます。識別子はデータソースに存在する系列の値を参照するだけではなく、定数(後に説明)の場合にも使用されます。

演算子

演算子は通常、2つの変数の間に記号を配置することで表現されます。
例: 1 + 2

その他の構文を持つ演算子については、このドキュメントでさらに詳しく説明します。
例: !演算子(NOT演算子)は、単一の変数の先頭に記号が付きます。例: !x.

関数

関数は"f"または"lib.F"のような形で提供されます。前者は直接アクセスできる関数で、後者は個別のライブラリの中に存在する関数です(ここではlibはライブラリ名の一例)。

関数は、括弧の間に引数を渡すことで呼び出されます。
例:f(a, b)

括弧と演算処理の優先順位

括弧はより一般的に、用語や変数をグループ化するために使うことができる。
(1 + 2)は1 + 2と同じ式である。

括弧は、異なる演算のどちらを優先するかを明確にするのに役立ちます。

  • 2 * 3 + 4 -> 10

  • 2 * (3 + 4) -> 14

プロパティへのアクセス

配列のインデックス

配列の要素には、ブラケット記法を使ってインデックスでアクセスできます。インデックスは0から始まります。

  • arr[0] -> 1

  • arr[1] -> 2

インデックスは0以上、かつ最後のインデックス以下でなければなりません。

定数

TODO: when implemented

演算子

TODO: examples in each

算術演算子

 

 

記号

足し算

+

 

引き算

-

 

掛け算

*

 

割り算

/

 

剰余演算(余り)

%

10 % 3 -> 1、10 % -3 -> 1、-10 % -3 -> -1、-10 % 3 -> -1

べき乗

**

2 ** 3 -> 8

 

 数値比較演算子

 

 

記号

左辺と右辺の値が同じ

==

左辺と右辺が異なる

!=

左辺より右辺が大きい

<

左辺が右辺よりも大きい

>

左辺より右辺が大きいか同じ

<=

左辺が右辺より大きいか同じ

>=

 
論理演算子
 

記号

&& または and

true && true -> true、true && false -> false

|| または or

true || true -> true、true || false -> true、false || true->true、false || false->false

! またはnot

!true -> false

 

ビット演算子

 

 

記号

NOT

~

~4 -> -5

AND

&

10 & 3 -> 2

OR

|

10 | 3->11

XOR

^

10 ^ 3 -> 9

シフト演算で左へずらす

<<

10 << 3 -> 80

シフト演算で右へずらす

>>

10 >> 3 -> 1

 

三項演算子

x ? y : z の形の条件式です。
"x"を評価し、trueであれば"y"、そうでない場合は"z"を返します。

例: 
(1 > 3) ? "a" : "b" 
-> "b"

nilは許可されていない為、評価は失敗します。nil の扱いについては、ライブラリ > デフォルト値 のセクションをご参照ください。

文字列操作演算子

 
 

 

記号

結合

(数字の足し算と同じ記号ですが、この場合は2つの文字列を使用します。)

"a" + "b" -> "ab"

特定の文字列が含まれているか判定

contains

"abcd" contains "bc" -> true

始まりの文字列を判定

startsWith

"ab" startWith "a" -> true

終わりの文字列を判定

endsWith

"ab" endsWith "b" -> true

 

データ構造 メンバーシップ演算子

"in"および"not"演算子が配列およびディクショナリに対して利用可能です。 
例:

  • 2 in [1, 2, 3] -> true

  • "foo" in {foo: 1, bar: 2} -> true

  • "baz" not in {foo: 1, bar: 2} -> true

データ構造 範囲演算子

例: 1..3 -> [1, 2, 3]

ライブラリ

デフォルト値

値がnilとなった場合に代替値が必要な場面で使用します。
default(x, y) または x != nil ? x : y

系列に補間が適用されている場合、"nil"は存在しないため、デフォルト関数が代替値を返すことはありません。

Math

ネームスペース: math

- 定数

記号

説明

math.PI

円周率π. https://oeis.org/A000796

math.E

オイラーの定数. https://oeis.org/A001113

 

- 算術演算関数

 

関数

説明

絶対値

math.Abs(x)

Abs は x の絶対値を返します。

math.Abs(-42) -> 42

平方根

math.Sqrt(x)

Sqrt は x の平方根を返します。

math.Sqrt(256) -> 16

四捨五入

math.Round(x)

Round は最も近い整数に四捨五入した値を返します。

math.Round(99.6) -> 100

切り上げ

math.Ceil(x)

Ceil は x 以上の最小の整数を返します。

math.Ceil(0.42) -> 1

切り捨て

math.Floor(x)

Floor は x 以下の最大の整数を返します。

math.Floor(-0.42) -> -1

 

- 対数関数

 

 

関数

説明

自然指数関数

math.Exp(x)

Exp は然対数の底(ネイピア数)eのx乗を返します。

math.Exp(1.44) -> 4.220695816996552

自然対数

math.Ln(x)

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

math.Ln(1.44) -> 0.36464311358790924

10進対数

math.Log(x)

Log は x の 10 進対数を返します。

math.Log(1.44) -> 0.15836249209524964

 

- 三角関数

 

 

関数

説明

サイン

math.Sin(x)

Sinはラジアン単位でxのサインを返します。

math.Sin(0.28) -> 0.27635564856411376

アークサイン

math.Asin(x)

Asinはラジアン単位でxのアークサインを返します。

math.Asin(0.28) -> 0.28379410920832787

コサイン

math.Cos(x)

Cosはラジアン単位でxのコサインを返します。

math.Cos(0.28) -> 0.9610554383107709

アークコサイン

math.Acos(x)

Acosはラジアン単位でxのアークコサインを返します。

math.Acos(0.28) -> 1.2870022175865687

タンジェント

math.Tan(x)

tanはラジアン単位でxのタンジェントを返します。

math.Tan(0.28) -> 0.28755432574197687

アークタンジェント

math.Atan(x)

Atanはラジアン単位でxのアークタンジェントを返します。

math.Atan(0.28) -> 0.2730087030867106

 

- 比較関数

 

 

関数

説明

最小値

math.Min(x, y, ...)

Minは与えられたすべての引数の中から最も小さい値を返します。

math.Min(99.9, 1.3, -55.3, -0.3) -> -55.3

最大値

math.Max(x, y, ...)

Maxは与えられたすべての引数の中から最も大きい値を返します。

math.Max(99.9, 1.3, -55.3, -0.3) -> 99.9

 
 

Time

ネームスペース: time

提供されたデータの各ポイントは、データが記録された時刻を表す"t"と呼ばれる"time"オブジェクト を含んでいます。これは、データベース(またはその他のソース)から提供されるユニックス・ナノ秒のタイムスタンプの形式です。
時刻は、適切な場所の時刻を使用して変換されるため、複数のソースからのデータを処理することができます。

定数

 

 

記号

説明

1月

time.JANUARY

1月に対応する整数

1

2月

time.FEBRUARY

2月に対応する整数

2

3月

time.MARCH

3月に対応する整数

3

4月

time.APRIL

4月に対応する整数

4

5月

time.MAY

5月に対応する整数

5

6月

time.JUNE

6月に対応する整数

6

7月

time.JULY

7月に対応する整数

7

8月

time.AUGUST

8月に対応する整数

8

9月

time.SEPTEMBER

9月に対応する整数

9

10月

time.OCTOBER

10月に対応する整数

10

11月

time.NOVEMBER

11月に対応する整数

11

12月

time.DECEMBER

12月に対応する整数

12

 

曜日

 

 

記号

説明

日曜日

time.SUNDAY

日曜日に対応する整数

1

月曜日

time.MONDAY

月曜日に対応する整数

2

火曜日

time.TUESDAY

火曜日に対応する整数

3

水曜日

time.WEDNESDAY

水曜日に対応する整数

4

木曜日

time.THURSDAY

木曜日に対応する整数

5

金曜日

time.FRIDAY

金曜日に対応する整数

6

土曜日

time.SATURDAY

土曜日に対応する整数

7

 
季節
 

 

記号

説明

time.WINTER

冬に対応する整数. 12月1日から2月28日まで

1

time.SPRING

春に対応する整数. 3月1日から5月31日まで

2

time.SUMMER

夏に対応する整数. 6月1日から8月31日まで

3

time.AUTUMN

秋に対応する整数. 9月1日から11月30日まで

4

 
関数

基本関数

 

 

関数

説明

( t = 1998-07-12 20:02:42.000000385 +0000 UTCの場合)

ナノ秒

time.Nanosecond()

Nanosecondは、tで指定された秒数内のナノ秒オフセットを[0, 999999999]の範囲で返します。

time.Nanosecond() -> 385

time.Second()

Second は、t で指定した分以内の秒オフセットを [0, 59] の範囲で返します。

time.Second() -> 42

time.Minute()

Minute は、t で指定された時間内の分オフセットを [0, 59] の範囲で返します。

time.Minute() -> 02

time.Hour()

Hourは、tで指定された日内の時間を[0, 23]の範囲で返します。

time.Hour() -> 20

time.Day()

Day は、t で指定された月の日を返します。

time.Day() -> 12

time.Week()

Weekは、tが発生するISO 8601の年と週の番号を返します。週番号の範囲は1から53までです。n年の1月1日から1月3日まではn-1年の52週目または53週目に属する可能性があり、12月29日から12月31日まではn+1年の1週目に属する可能性があります。

time.Week() -> 28

time.Month()

Monthは、tで指定された年の月を返します。

time.Month() -> time.JULY

time.Year()

Yearはtで指定された年を返します

time.Year() -> 1998

 

拡張関数

 

 

関数

説明

(t = 1998-07-12 20:02:42.000000385 +0000 UTCの場合)

月の週

time.WeekOfMonth()

WeekOfMonth は、ISO 8601 の計算に基づき、tで指定された月の週を返します。

time.WeekOfMonth() -> 2

年の日

time.DayOfYear()

DayOfYearは、tで指定された年の曜日を、閏年でない場合は[1, 365]の範囲で、閏年の場合は[1, 366]の範囲で返します。

time.DayOfYear() -> 193

週の曜日

time.DayOfWeek()

DayOfWeekは、tで指定された曜日を返します。

time.DayOfWeek() -> time.Sunday

週末判定

time.IsWeekend()

IsWeekendは、tで指定された曜日が土曜日か日曜日であればtrueを返し、そうでなければfalseを返します。

time.IsWeekend() -> true

 

季節に関する関数

 

 

関数

説明

(t = 1998-07-12 20:02:42.000000385 +0000 UTCの場合)

季節

time.Season()

Seasonはtで指定された季節を返します。

time.Season() -> time.SUMMER

季節が冬か確認

time.IsWinter()

IsWinterは、tで指定された季節が冬であればtrueを、そうでなければfalseを返します。

time.IsWinter() -> false

季節が春か確認

time.IsSpring()

IsSpringは、tで指定された季節が春であればtrueを、そうでなければfalseを返します。

time.IsSpring() -> false

季節が夏か確認

time.IsSummer()

IsSummerは、tで指定された季節が夏であればtrueを、そうでなければfalseを返します。

time.IsSummer() -> true

季節が秋か確認

time.IsAutumn()

IsAutumnは、tで指定された季節が秋であればtrueを、そうでなければfalseを返します。

time.IsAutumn() -> false

 

日付作成関数

 

 

関数

説明

日付指定

time.Date(year, month, day, hour, min, sec, nsec)

Date は、指定された年、月、日、時、分、秒、ナノ秒に対応する時刻を返します。

time.Date(1998, time.JULY, 12, 20, 02, 42, 385) -> 1998-07-12 20:02:42.000000385 +0000 UTC

UNIXナノ秒から

time.DateFromUnixNano(nanosec_timestamp)

DateFromUnixNano は、指定された Unix のナノ秒タイムスタンプに対応する時刻を返します。

time.DateFromUnixNano(900273762000000385) -> 1998-07-12 20:02:42.000000385 +0000 UTC

パース(文字列から抽出)

time.Parse(datetime_string)

Parseは、dd/mm/yyyyまたはdd/mm/yyyy hh:mm:ssレイアウトを使用してフォーマットされた文字列を解析し、それが表す時間値を返します。

time.Parse("12/07/1998") -> 1998-07-12 00:00:00.000000000 +0000 UTCtime.Parse("12/07/1998 20:02:42") -> 1998-07-12 20:02:42.000000000 +0000 UTC

 

比較関数

  

 

関数

説明

(t = 1998-07-12 20:02:42.000000385 +0000 UTCの場合)

以前

time.Before()

beforeは、時刻tが引数の日時より前かどうかを返します。

time.Before(time.Date(2020, time.JULY, 10, 12, 0, 0, 0)) -> false

以降

time.After()

beforeは、時刻tが引数の日時より後かどうかを返します。

time.After(time.Date(2020, time.JULY, 10, 12, 0, 0, 0)) -> true

等しい

time.Equal()

Equalは、tと引数の日時が同じ時刻を表しているかどうかを返します。2つの時刻が異なる場所にあっても等しいことがあります。例えば、6:00 +0200と4:00 UTCは等しいです。ほとんどのコードでは、==の代わりにEqualを使用する必要があります。

time.After(time.Date(2020, time.JULY, 10, 12, 0, 0, 0)) -> false

 

フォーマット関数

  

 

関数

説明

(t = 1998-07-12 20:02:42.000000385 +0000 UTCの場合)

RFC3339

time.Rfc3339()

Rfc3339は、RFC3339に従ってフォーマットされた時間値のテキスト表現を返します。

time.Rfc3339() -> 1998-07-12T20:02:42Z

UNIX ナノ秒

time.UnixNano()

UnixNanoは、1970年1月1日UTCからの経過ナノ秒数であるUnix時間としてtを返します。ナノ秒単位のUnix時間がint64(1678年以前の日付または2262年以降の日付)で表現できない場合、結果は未定義となります。これは、ゼロTimeでUnixNanoを呼び出した結果が未定義であることを意味することに注意してください。結果はtに関連付けられた場所に依存しません。

time.UnixNano() -> 900273762000000385

 

このリストに関数が見つからない場合は、METRON のオペレーションエンジニアに連絡してください。