QueryPropertyHistory 서비스 사용
QueryPropertyHistory 서비스는 지정된 시간 범위에서 지정된 소스 사물의 각 속성(로깅된 속성이어야 함) 값에 대한 가치 스트림을 질의합니다. 이 서비스는 각 속성에 대해 ValueStream.queryValueStreamEntries를 호출한 다음 결과 집합에서 값을 혼합합니다.
QueryPropertyHistory는 사물에서 각 로깅된 속성을 질의한 다음 개별 데이터 집합을 빅 데이터 집합 하나로 결합하여 생성한 데이터 집합을 반환합니다. 개별 데이터 집합의 각 타임스탬프에 대해 "행"이 생성됩니다. 이러한 타임스탬프가 포함된 로깅된 값이 있는 경우 해당 값이 데이터 집합의 행에 입력됩니다. 로깅된 값이 없는 경우 기본적으로 해당 속성에 대해 마지막으로 로깅된 값이 사용됩니다. fillOption 매개 변수에서 None 옵션을 선택한 경우가 아니면 Null 값이 반환됩니다. 로깅된 속성이 없는 경우 엔트리가 비어 있습니다. 이 결합기 프로세스는 타임스탬프에 따라 지정된 속성에 대한 중복을 제거합니다.
지정된 속성에 대해 실제 로깅된 값을 가져오려면 QueryPropertyHistory 서비스(예: QueryIntegerPropertyHistory)를 사용해야 합니다. 이러한 서비스로 데이터가 실제로 제거되는지 확인할 수 있습니다. 이 서비스의 작동 방식을 이해하기 위해 아래에 여러 가지 예제 시나리오가 제공되어 있습니다.
예제 시나리오
시나리오 1: 행 3개를 지정했지만 QueryPropertyHistory에서 9개가 반환되었습니다.
가치 스트림이 세 개의 속성을 로깅하는 데 사용되고 있습니다. 각 속성에 대해 이미 별도의 엔트리 3개가 있습니다. 따라서 입력된 총 데이터 점 수는 9개입니다.
maxItems 매개 변수가 3으로 설정된 이 가치 스트림에 대해 QueryPropertyHistory가 호출되면 대신 데이터 행 9개가 반환됩니다. maxItems가 3으로 설정되었으므로 QueryPropertyHistory에서는 각 개별 속성을 3번 질의했습니다. 각 속성에 대해 데이터 엔트리가 3개가 있으므로 반환되는 최대 항목 수는 9개 행이 될 수 있습니다.
시나리오 2: 이 타임스탬프에 데이터가 있는 것을 알고 있지만 빈 인포테이블을 받았습니다.
가치 스트림에 값을 입력할 때 ThingWorx에서 자동으로 생성되는 타임스탬프를 사용하지 않을 경우 에지 장치에서 고유한 사용자 정의 타임스탬프를 로깅할 수 있지만 다음 동작을 고려해야 합니다.
setPropertyVTQ를 사용하는 대신 이 사용자 정의 타임스탬프 열을 시도하고 질의할 경우 어떤 사항이 발생할 수 있습니까?
QueryPropertyHistory 서비스가 사물에서 사용되는 가치 스트림으로 이동하고 startDate, endDate, oldestFirstmaxRows 매개 변수에 따라 초기 결과 집합을 선택합니다.
startDateendDate를 비워 둘 경우 이는 자동으로 생성되는 타임스탬프 속성에 대해 질의하지 않음을 의미하며, 질의는 가치 스트림의 가장 최근에 추가된 속성 값 또는 가장 오래된 속성 값에서 maxRows(이 경우 500)를 선택합니다. 이 값은 oldestFirst 부울 매개 변수에 의해 결정됩니다. oldestFirst를 false로 설정하면 각 속성에 대해 가장 최근에 입력된 속성 값 500개가 결과 집합에 포함됩니다. 따라서 3개의 속성이 각각 500+ 값에 로깅되므로 초기 데이터 집합에는 1500개의 행이 포함됩니다.
포스트 프로세싱은 어떻게 발생합니까?
사용되지 않고 남은 매개 변수인 query 매개 변수 하나가 있습니다. 이 매개 변수가 포스트 프로세싱에 적용됩니다. 즉, 가치 스트림에 대한 초기 질의가 완료된 후 반환되는 초기 결과 세트에는 필터링을 위해 query 매개 변수가 적용되며, 원하는 데이터만 반환됩니다.
문제
생성한 사용자 정의 타임스탬프에 대해 질의하려고 결정했지만 반환된 첫 번째 결과 집합에 질의에서 찾는 시간이 포함되어 있지 않은 경우 어떤 것도 발견되지 않으며 빈 인포테이블이 반환됩니다.
솔루션
이러한 문제를 완전히 방지하려면 setPropertyVTQ 서비스를 사용하여 가치 스트림에 고유한 타임스탬프 값을 입력하십시오. 이 값은 가치 스트림에 값이 추가된 정확한 시간을 나타내는 자동으로 생성된 타임스탬프 값을 덮어씁니다. 날짜에 대해 질의하는 데 query 매개 변수 대신 startDateendDate 매개 변수를 사용할 수 있으며, 이렇게 할 경우 타임스탬프에 대한 질의에서 데이터가 손실될 위험이 없습니다.
도움이 되셨나요?