注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Functions は時系列データプロパティに対する操作をサポートしています。このページでは、関数内で時系列データプロパティを設定し、使用する方法について説明します。
Functions で時系列データを使用するには、既に時系列データをオントロジーに保存している必要があります。こちらの手順に従って始めてください。
時系列データがオントロジーに保存されたら、時系列データのFunctionsのためのコードリポジトリを作成する必要があります。このリポジトリでは、オントロジータイプをインポートして、これらのオントロジータイプに保存された時系列データを参照できるようにします。
これで Functions で時系列データを扱う準備が整いました。
Functionsで時系列データにアクセスするには、まずコードリポジトリにオブジェクトバックドのFunctionを作成します。これらの関数は、ユーザーのオントロジーの時系列データプロパティに直接アクセスできます。Functionを作成したら、新しいfunctionを実行するには2つの方法があります。ライブプレビューでFunctionをテストするか、Functionを公開する ことで、プラットフォーム全体の他のアプリケーションで使用することができます。
以下に、始めるための一般的な操作の簡単な例をいくつか紹介します。
時系列データプロパティを扱う際には、最後のポイントを調べることが役立ちます。Functions は時系列データポイントの組み込み型を持っていないため、代わりに値またはタイムスタンプを返すことができます。例えば、以下の関数では、マシンの最新の温度を読み取ります。
@Function()
// この関数は、特定の機械の最新の温度を返します
public async getLatestTemperature(machine: MachineRoot): Promise<Double> {
// 最新の温度データポイントを取得します
const latest = await machine.temperatureId!.getLastPoint();
// 最新の温度値を返します
return latest.value;
}
有用な集約の1つは、範囲内のポイントの平均を計算することです。以下の関数は、例のマシンの平均気温を取得します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14
// この関数は平均温度を計算するために使用されます。 @Function() public async getAverageTemperature(machine: MachineRoot): Promise<Double> { // ここでは、指定されたマシンの温度IDに関連するデータを集計します。 // その上で全範囲にわたる導関数を計算し、その平均値を求めます。 const aggregation = await machine.temperatureId! .derivative() .aggregate() .overEntireRange() .mean() .compute(); // 最後に、計算結果の平均値を返します。 return aggregation.mean!; }
上記の例に基づいて、同じマシンの平均温度変化も以下の計算関数を使用して取得できます。
@Function()
// 平均温度を取得する関数
public async getAverageTemperature(machine: MachineRoot): Promise<Double> {
// 温度IDから導関数を計算し、集約して、全範囲で平均を計算する
const aggregation = await machine.temperatureId!
.derivative() // 導関数を計算
.aggregate() // 集約
.overEntireRange() // 全範囲で
.mean() // 平均を計算
.compute(); // 実行
return aggregation.mean!; // 計算された平均温度を返す
}
時系列データには、微分に加えて他の変換を適用することができます。以下は、タイムスタンプのパラメーターを時間範囲として時系列データに適用する方法の例です。
@Function()
// 期間中の平均気温を取得する関数
public async getAverageTemperatureOverRange(
machine: MachineRoot, // 機械
start: Timestamp, // 開始時刻
end: Timestamp): Promise<Double> // 終了時刻
{
// 時間範囲内の平均気温を計算
const latest = await machine.temperatureId!
.timeRange({min: start, max: end}) // 時間範囲を指定
.aggregate() // 集計
.overEntireRange() // 範囲全体にわたって
.mean() // 平均を計算
.compute(); // 計算実行
return latest.mean!; // 計算結果を返す
}