안녕,
몇 가지 노력 끝에 PI 아카이브에서 데이터를 가져올 수 있었습니다. 우리는 PI(Osisoft)를 사용하여 프로세스 데이터를 보관합니다.
다음 쿼리를 사용하여 데이터를 얻었지만 타임스탬프가 없습니다.
SELECT t1.tag, t1.time, t1.value, t1.svalue,
t1.status, t1.flags
FROM picomp t1
WHERE ( ( ( t1.tag = 'AL2_Geschwindigkeit_Linienmotor_Formerstation' ) AND ( (t1.time >= ( '2017/03/05 1:47:16 PM' )) AND (t1.time <= ( '2017/03/05 2:44:40 PM' )) ) ) )
타임스탬프 열은 비어 있습니다(숫자, 연속).
그러다가 타임스탬프 열이 숫자가 아니라는 생각이 들었습니다. 다음 쿼리를 사용하여 시간을 날짜로 변환하려고했습니다.
SELECT t1.tag, TO_Date(SUBSTR (time, 1, 15),'yyyymmdd') time, t1.value, t1.svalue,
t1.status, t1.flags
FROM picomp t1
WHERE ( ( ( t1.tag = 'AL2_Geschwindigkeit_Linienmotor_Formerstation' ) AND ( (t1.time >= ( '2017/03/05 1:47:16 PM' )) AND (t1.time <= ( '2017/03/05 2:44:40 PM' )) ) ) )
하지만 오류가 발생했습니다.
[PIODBC] [PIOLEDB] [SUBSTR] (DateTime, Int16, Int16) 인수에 대한 오버로드 해결에 실패했습니다. [SQLSTATE=HY000]
내가 뭘 잘못했나요?
누구든지 나를 도와줄 수 있나요?
오래된 게시물인 것은 알지만, 확인해 보세요. Aveva/OSISoft PI 도구 추가 기능을 사용하면 이러한 쿼리를 작성하는 데 도움이 될 수 있습니다.
좋습니다...이제 다음 SQL에서 작동합니다.
SELECT t1.tag, Cast (time as string) STRING_time, t1.value, t1.svalue,
t1.status, t1.flags
FROM picomp t1
WHERE ( ( ( t1.tag = 'AL2_Geschwindigkeit_Linienmotor_Formerstation' ) AND ( (t1.time >= ( '2017/03/05 1:47:16 PM' )) AND (t1.time <= ( '2017/03/05 2:44:40 PM' )) ) ) )
";" 문제는 여전히 존재합니다. 하지만 그건 내 문제가 아닙니다. 쉽게 삭제할 수 있어요.
내 문제는 시간이 없다는 것입니다. JMP에서는 시간 데이터를 숫자로 변환하는 것 같습니다. 그러나 PI Archive에서는 문자열이나 상대적인 것으로 보입니다. Microsoft Access를 사용하면 시간이 걸립니다. Access에서는 데이터 유형이 "텍스트"라고 알려줍니다. 어쩌면 SQL로 시간을 얻을 수 있는 방법을 OSISOFT에 직접 물어볼 수도 있습니다.
다음 링크에서 Osisoft의 " ; " - 문제에 대한 예를 찾을 수 있습니다.
https://techsupport.osisoft.com/Troubleshooting/KB/KB01377
저는 JMP Pro 13.1을 사용합니다.
쿼리 작성기부터 시작하겠습니다. 하지만 "Custom SQL"로 전환해야 합니다. Query Builder의 쿼리가 작동하지 않기 때문입니다. 예를 들어 쿼리 끝에 있는 " ; "을 삭제해야 합니다. 그리고 다른 것들이 있습니다. 짜증나지만 관리가 가능합니다.