# GraphQL APIs example (temp)
---
## 前言
整合iFactory,dbmaster提供原iFactory 擴充Parameter API,以下API都是透過federation方式連接至api-portal-wise-mplus的Parameter Type之下
## API 說明
#### Query (擴充 Parameter)
- lastValue: 取得最新一筆值
- arguments (optional)
- before: 在哪個時間點之前
- after: 在哪個時間點之後
- includeBefore: 是否包含 before 本身的時間點
- includeAfter: 是否包含 after 本身的時間點
- return value
- num: Float
- str: String
- time: DateTime
- savedAt: DateTime
- example
```
query ($parameterId: ID!, $before: DateTime, $after: DateTime, $includeBefore: Boolean, $includeAfter: Boolean) {
parameter(id: $parameterId) {
lastValue (before: $from, after: $after,includeBefore: $includeBefore, includeAfter: $includeAfter){
num
str
time
savedAt
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
"before": "2023-12-12 07:08:00",
"after": "2023-12-12 07:05:00",
"includeBefore": false,
"includeAfter": false,
}
response:
{
"data": {
"parameter": {
"lastValue": {
"num": 54476,
"str": null,
"time": "2023-12-12T07:07:56.582Z",
"savedAt": "2023-12-12T07:07:56.631Z"
}
}
}
}
```
- lastBadValue: 取得最新一筆斷線值(\*)
- no arguments
- return value
- value: String!
- time: DateTime!
- savedAt: DateTime
- example
```
query ($parameterId: ID!) {
parameter(id: $parameterId) {
lastBadValue {
value
time
savedAt
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
}
response:
{
"data": {
"parameter": {
"lastBadValue": {
"value": "*",
"time": "2023-12-07T23:59:56.000Z",
"savedAt": "2023-12-07T23:59:56.000Z"
}
}
}
}
```
- valuesInRange: 取得一段時間內的所有值
- arguments
- from: 開始時間
- to: 結束時間
- return value
- num: Float
- str: String
- time: DateTime
- savedAt: DateTime
- example
```
query ($parameterId: ID!, $from: DateTime!, $to: DateTime!) {
parameter(id: $parameterId) {
valuesInRange(from: $from, to: $to){
num
str
time
savedAt
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
"from": "2023-12-12 07:08:00",
"to": "2023-12-12 07:08:30",
}
response:
{
"data": {
"parameter": {
"valuesInRange": [
{
"num": 54486,
"str": null,
"time": "2023-12-12T07:08:06.573Z",
"savedAt": "2023-12-12T07:08:06.627Z"
},
{
"num": 54496,
"str": null,
"time": "2023-12-12T07:08:16.511Z",
"savedAt": "2023-12-12T07:08:16.560Z"
},
{
"num": 54506,
"str": null,
"time": "2023-12-12T07:08:26.691Z",
"savedAt": "2023-12-12T07:08:26.739Z"
}
]
}
}
}
```
- badValuesInRange: 取得一段時間內的所有斷線值(\*)
- arguments
- from: 開始時間
- to: 結束時間
- return value
- value: String!
- time: DateTime!
- savedAt: DateTime
- example
```
query ($parameterId: ID!, $from: DateTime!, $to: DateTime!) {
parameter(id: $parameterId) {
badValuesInRange(from: $from, to: $to){
value
time
savedAt
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
"from": "2023-12-07 23:59:30",
"to": "2023-12-08 00:00:00",
}
response:
{
"data": {
"parameter": {
"badValuesInRange": [
{
"value": "*",
"time": "2023-12-07T23:59:36.000Z",
"savedAt": "2023-12-07T23:59:36.000Z"
},
{
"value": "*",
"time": "2023-12-07T23:59:46.000Z",
"savedAt": "2023-12-07T23:59:46.000Z"
},
{
"value": "*",
"time": "2023-12-07T23:59:56.000Z",
"savedAt": "2023-12-07T23:59:56.000Z"
}
]
}
}
}
```
- limitToNthValues: 取得最新或最舊的 n 筆值
- arguments
- n: 資料筆數,若為正數,則為最舊的 n 筆值,若為負數,則為最新的 n 筆值
- from: 開始時間
- to: 結束時間
- return value
- num
- str
- time
- savedAt
- example
```
query ($parameterId: ID!, $from: DateTime!, $to: DateTime!,$n: Int!) {
parameter(id: $parameterId) {
limitToNthValues(n: $n,from: $from, to: $to){
num
str
time
savedAt
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
"from": "2023-12-12 07:08:00",
"to": "2023-12-12 07:09:00",
"n":5,
}
response:
{
"data": {
"parameter": {
"limitToNthValues": [
{
"num": 54486,
"str": null,
"time": "2023-12-12T07:08:06.573Z",
"savedAt": "2023-12-12T07:08:06.627Z"
},
{
"num": 54496,
"str": null,
"time": "2023-12-12T07:08:16.511Z",
"savedAt": "2023-12-12T07:08:16.560Z"
},
{
"num": 54506,
"str": null,
"time": "2023-12-12T07:08:26.691Z",
"savedAt": "2023-12-12T07:08:26.739Z"
},
{
"num": 54516,
"str": null,
"time": "2023-12-12T07:08:36.650Z",
"savedAt": "2023-12-12T07:08:36.972Z"
},
{
"num": 54526,
"str": null,
"time": "2023-12-12T07:08:46.610Z",
"savedAt": "2023-12-12T07:08:46.660Z"
}
]
}
}
}
```
- calculatedValue: 將一段時間內的所有值,統計成一筆值
- arguments
- from: 開始時間
- to: 結束時間
- fn: 統計方式
- Max: 最大值
- Min: 最小值
- Sum: 加總值(目前不支援)
- Mean: 平均值(數據加權平均)
- return value
- num
- str
- time
- example
```
query ($parameterId: ID!, $from: DateTime!, $to: DateTime!,$fn: CalculationFn!) {
parameter(id: $parameterId) {
calculatedValue(fn: $fn, from: $from, to: $to){
num
str
time
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
"from": "2023-12-12 07:08:00",
"to": "2023-12-12 07:09:00",
"fn": "Mean",
}
response:
{
"data": {
"parameter": {
"calculatedValue": {
"num": 5451.1,
"str": null,
"time": "2023-12-13T05:21:11.506Z"
}
}
}
}
```
- downSampledInRange: 將一段時間內的資料,降採樣到最大資料數以下
- arguments
- from: 開始時間
- to: 結束時間
- maxDataPoints: 最大資料數
- fillOption: 補值方式 (optional default: "None")
- None: 不補值
- Linear: 線性
- Previous: 補前一筆數據
- return value
- num
- str
- time
- example
```
query ($parameterId: ID!, $from: DateTime!, $to: DateTime!, $maxDataPoints: Int!, $fillOption: FillOption) {
parameter(id: $parameterId) {
downSampledInRange(from: $from, to: $to, maxDataPoints: $maxDataPoints, fillOption: $fillOption){
num
str
time
}
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
"from": "2023-12-12 07:08:00",
"to": "2023-12-12 07:09:00",
"maxDataPoints": 2,
"fillOption": "None",
}
response:
{
"data": {
"parameter": {
"downSampledInRange": [
{
"num": 54506,
"str": null,
"time": "2023-12-12T07:08:00.000Z"
},
{
"num": 54536,
"str": null,
"time": "2023-12-12T07:08:30.000Z"
}
]
}
}
}
```
- tagValueType
- no arguments
- return value:
- UnKnow
- Number
- String
- Discrete
- example
```
query ($parameterId: ID!) {
parameter(id: $parameterId) {
tagValueType
}
}
variables
{
"parameterId": "MTM1NjgmUHJpXXXX",
}
response:
{
"data": {
"parameter": {
"tagValueType": "Number"
}
}
}
```
---
###### tags: `Documentation`