시계열 플롯
대시보드를 생성하고 플롯할 시계열 데이터를 선택하십시오. 사용자 지정 쿼리와 필터링, 집계, 데이터 단위, 산술 연산, 함수 등과 같은 고급 기능을 사용하여 시계열 데이터를 처리할 수 있습니다.
대시보드 생성
Cognite Data Fusion(CDF)에서 시계열 데이터를 사용하여 대시보드를 생성하려면 다음과 같이 하십시오.
-
Grafana인스턴스에 로그인하고 대시보드를 생성합니다. -
기본 차트 영역 아래에 있는 쿼리 탭을 사용하여 대시보드에 표시할 시계열을 선택합니다.
-
시계열 검색 - 특정 시계열에서 데이터를 가져옵니다. 시계열의 이름이나 설명을 입력하고 드롭다운 목록에 나타나면 선택합니다.
쿼리에서 직접 집계와 데이터 단위를 지정합니다. 기본적으로 집계는 _평균_으로 설정되며, 데이터 단위는 차트에 대해 선택한 시간 간격에 따라 결정됩니다.
팁선택적으로, 사용자 지정 레이블을 설정하고
{{property}}
형식을 사용하여 시계열에서 데이터를 가져옵니다. 사용 가능한 모든 시계열 속성을 사용하여 레이블을 정의할 수 있습니다(예:{{name}} - {{description}}
또는{{metadata.key1}}
). -
자산의 시계열 - 특정 자산과 관련된 시계열의 데이터를 가져옵니다. 자산의 이름이나 설명을 입력하고 드롭다운 목록에 나타나면 선택합니다. 선택적으로, 하위 자산의 시계열을 포함할지 여부를 결정할 수 있습니다.
-
시계열 사용자 지정 쿼리 - 쿼리와 일치하는 시계열을 가져옵니다.
-
-
선택 항목과 일치하는 시계열이 차트 영역에 렌더링됩니다. 관련 데이터를 표시하도록 필요에 따라 시간 범위를 조정합니다.
사용자 지정 쿼리 사용
사용자 지정 쿼리를 사용하면 선택한 시계열 데이터를 세밀하게 제어할 수 있습니다. 산술 연산, 함수 및 특수 구문을 사용하여 합성 시계열을 가져올 수 있습니다. 이 섹션에서는 데이터 필터링과 관련된 제한 사항과 정규식 및 서버 측 필터를 효과적으로 사용하는 방법도 간략하게 설명합니다.
쿼리 정의
시계열을 요청하려면 내부에 매개 변수를 포함하는 쿼리를 지정하십시오. 예를 들어, id
가 123
과 일치하는 시계열을 쿼리하려면 ts{id=123}
을 지정합니다.
시계열을 요청할 때 id
, externalId
또는 시계열 필터를 사용할 수 있습니다.
합성 시계열의 경우 여러 속성 유형을 지정할 수 있습니다.
bool
:ts{isString=true}
또는ts{isStep=false}
string
또는number
:ts{id=123}
또는ts{externalId='external_123'}
array
:ts{assetIds=[123, 456]}
object
:ts{metadata={key1="value1", key2="value2"}}
복합 합성 시계열을 생성하려면 다음과 같이 단일 쿼리에서 여러 유형을 결합할 수 있습니다.
ts{name="test", assetSubtreeIds=[{id=123}, {externalId="external_123"}]}
필터링
쿼리는 시계열 속성에 기반하며 논리적 AND
로 적용되는 필터링을 지원합니다. 예를 들어, 아래에 있는 쿼리는 다음과 같은 시계열을 찾습니다.
id
가123
인 자산에 속함name
이"Begin"
으로 시작함name
이"end"
로 끝나지 않음name
이"Begin query"
가 아님
ts{assetIds=[123], name=~"Begin.*", name!~".*end", name!="Begin query"}
이 쿼리 구문에는 다양한 유형의 등식 연산자가 포함되어 있습니다.
=
- 엄격한 등식.CDF에 대한 시계열 요청의 매개 변수를 지정합니다. 필터링 특성과 함께 사용하십시오.=!
- 엄격한 부등식. 문자열과 동일하지 않은 속성을 기준으로 가져온 시계열을 필터링합니다. 문자열, 숫자 및 부울 값을 지원합니다.=~
- 정규식 등식. 정규식과 일치하는 속성을 기준으로 가져온 시계열을 필터링합니다. 문자열 값을 지원합니다.!~
- 정규식 부등식. 정규식과 일치하지 않는 속성을 기준으로 가져온 시계열을 필터링합니다. 문자열 값을 지원합니다.
메타데이터로 필터링할 수도 있습니다.
ts{externalIdPrefix="test", metadata={key1="value1", key2=~"value2.*"}}
위의 쿼리는 다음과 같은 시계열을 요청합니다.
externalIdPrefix
가"test"
임metadata.key1
가"value1"
임metadata.key2
가"value2"
로 시작함
쿼리 제한 사항
사용자 지정 쿼리를 수행할 때 시계열 가져오기와 관련된 근본적인 제한 사항을 이해하는 것이 중요합니다.
-
클라이언트 측 필터링: 커넥터는 _클라이언트 측_에서 정규식 쿼리(일치의 경우
=~
, 제외의 경우!~
)와 부정확한 부등식 필터(=!
)를 적용합니다. 이 프로세스는 처음에 Cognite Data Fusion(CDF)에서 최대 1000개의 시계열 항목을 검색한 후에 수행됩니다. 이 접근 방식 때문에 총 수가 1000개를 초과하는 경우 가져온 하위 집합에 모든 관련 시계열이 포함되지 않을 가능성이 있습니다. -
서버 측 필터링: 이 제한 사항을 완화하려면 가능한 경우 항상 서버 측 필터링을 사용하는 것이 좋습니다. 이렇게 하려면 특정 시계열 필터 속성에 엄격한 등식 필터(
=
)를 적용하면 됩니다. 이렇게 하면 CDF에서 검색된 시계열 집합의 범위를 효과적으로 좁혀 후속 클라이언트 측 필터가 보다 타겟팅된 데이터 집합에 적용되도록 할 수 있습니다. 이 기능은 모든 관련 시계열, 특히 관심 있는 시계열이 CDF에서 가져온 초기 데이터 집합에 포함되도록 하는 데 특히 유용합니다.
서버 측 필터링을 특정 특성 또는 메타데이터와 결합하여 쿼리 범위를 구체화한 후 정규식 또는 기타 클라이 언트측 필터를 적용합니다. 이 접근 방식에 따르면 Grafana 대시보드에서 관심 있는 모든 시계열을 선택할 수 있는 가능성이 매우 커집니다.
집계, 데이터 단위 및 정렬
사용자 인터페이스의 드롭다운을 사용하여 각 시계열에 대해 집계 및 데이터 단위를 지정할 수 있습니다.
예를 들어, 집계가 average
로 설정되고 데이터 단위가 1h
와 같으면 모든 쿼리가 선택된 집계 및 데이터 단위를 사용하여 데이터 요소를 요청합니다. 기본적으로, 합성 시계열을 사용하는 집계는 UTC 기준으로 1970년 1월 1일 목요일 00:00:00에 대해 정렬됩니다.
합성 시계열 쿼리 구문을 사용하면 각 시계열에 대해 별도로 집계, 데이터 단위 및 정렬을 정의할 수 있습니다.
ts{externalId='houston.ro.REMOTE_AI[34]', alignment=1599609600000, aggregate='average', granularity='24h'}
위의 쿼리는 사용자 인터페이스에 설정된 집계 및 데이터 단위 값을 재정의합니다. 지원되는 집계 목록에 대해서는 API 설명서를 참조하십시오.
산술 연산
산술 연산을 적용하여 시계열을 결합할 수 있습니다. 다음 예를 참조하십시오.
ts{id=123} + ts{externalId="test"}
위 쿼리의 결과는 데이터 요소가 각 시계열의 합산 값인 단일 플롯입니다.
이 예에서 ts{name~="test1.*"}
쿼리는 둘 이상의 시계열을 반환할 수 있지만 여기에서는 ID가 111
, 222
및 333
인 세 개의 시계열을 반환한다고 가정합니다.
ts{name~="test1.*"} + ts{id=123}
위 쿼리의 결과는 쿼리의 첫 번째 식과 두 번째 식에 의해 반환된 합산 시계열 값이 결합된 세 개의 플롯입니다. 결과적으로 플롯은 세 개의 쿼리를 나타냅니다.
ts{id=111} + ts{id=123}
ts{id=222} + ts{id=123}
ts{id=333} + ts{id=123}
아래 이미지에서 이 동작(각 ts{}
식이 두 개의 시계열을 반환)의 예를 볼 수 있습니다(차트 아래에 있는 레이블 참조).
함수
합성 시계열에 적용할 수 있는 광범위한 함수를 지원합니다.
- 삼각 함수:
sin(ts{})
,cos(ts{})
,pi()
. - 가변 길이 함수:
max(ts{}, ...)
,min(ts{}, ...)
,avg(ts{}, ...)
. - 대수:
ln(ts{})
,pow(ts{}, exponent)
,sqrt(ts{})
,exp(ts{})
,abs(ts{})
. - 오류 처리:
on_error(ts{}, default_value)
. 계산의 오류 처리를 참조하십시오. - 문자열 시계열:
map(expression, [list of strings to map from], [list of values to map to], default_value)
. 문자열 시계열을 참조하십시오.
계산의 오류 처리
on_error(ts{...})
함수를 사용하면 일부 예외가 발생한 경우에도 차트를 렌더링할 수 있습니다. 이 함수는 다음과 같은 오류를 처리합니다.
BAD_DOMAIN
- 잘못된 입력 범위가 제공된 경우 발생하는 오류입니다. 0으로 나누기나 음수 값의 제곱근을 예로 들 수 있습니다.OVERFLOW
- 결과가 절대 값으로 10^100보다 큰 경우 발생하는 오류입니다.
이러한 오류 중 하나가 발생하면 CDF는 타임스탬프에 대한 값을 반환하는 대신 오류 메시지와 함께 오류 필드를 반환합니다. 이러한 오류를 방지하려면 on_error()
함수 에서 (하위)식을 래핑할 수 있습니다.
on_error(1/ts{externalId='canBeZero'}, 0)
문자열 시계열
map()
함수를 사용하면 문자열 값을 갖는 시계열을 처리하여 문자열을 배정밀도 실수로 변환할 수 있습니다. 예를 들어, 밸브에 대한 시계열이 "OPEN"
또는 "CLOSED"
값을 가질 수 있는 경우 다음을 사용하여 이 값을 숫자로 변환할 수 있습니다.
map(TS{externalId='stringstate'}, ['OPEN', 'CLOSED'], [1, 0], -1)
"OPEN"
은 1에 매핑되고 "CLOSED"
는 0에 매핑되며 다른 모든 값은 -1에 매핑됩니다.
문자열 시계열에 대한 집계는 현재 지원되지 않습니다. 모든 문자열 시계열은 단계적 시계열로 간주됩니다.
단위 변환
시계열에 정의된 unitExternalId
가 있는 경우 사용자 지정 쿼리를 사용하여 데이터를 쿼리할 때 동일한 수량 내에서 해당 값을 다른 단위로 변환할 수 있습니다.
예:
{ts{externalId='temperature_f_houston', targetUnit='temperature:deg_c'} + ts{id='123', targetUnitSystem='SI'}}
각 시계열 또는 집계에 대해 targetUnit
또는 targetUnitSystem
을 선택할 수 있습니다. 선택한 대상 단위는 원래 단위와 호환되어야 합니다.
합성 시계열을 사용하여 데이터 요소를 쿼리하는 경우 값의 단위가 유지되지 않습니다. 예를 들어, 물리적으로 정확하지 않지만 온도 시계열의 값을 거리 시계열에 추가할 수 있습니다.
참고: 레이블 필드에서 각 시계열의 unit
또는 unitExternalId
속성에 액세스하려고 하면 Grafana는 데이터 요소의 단위가 아닌 시계열의 원래 단위를 반환합니다.
데이터 모델 인스턴스의 시계열 데이터 표시
CDF 데이터 모델 인스턴스의 시계열 데이터를 표시할 수 있습니다.
-
데이터 모델 탭에서 데이터 모델 및 버전을 선택합니다.
-
쿼리를 지정합니다.
중요시계열을 포함하는 필드 아래에
__typename
및externalId
를 추가합니다. 이 예에서는temperature
및pressure
아래에 추가합니다.{
listPump {
items {
temperature {
__typename
externalId
}
pressure {
__typename
externalId
}
}
}
}