데이터 셰이프
데이터 셰이프는 모델에서의 데이터를 나타냅니다. 데이터 셰이프는 필드 정의 및 관련 메타데이터의 이름이 지정된 집합입니다. 데이터 셰이프의 각 필드에는 데이터 유형이 있습니다. ThingWorx에 기본 유형의 정의된 집합이 있습니다.
* 
ThingWorx에서 일부 예약된 이름은 데이터 셰이프 필드 이름으로 사용할 수 없습니다. (예: ThingShape)
응용 프로그램에서 데이터 셰이프 정의를 사용하여 데이터를 사용하는 경우 응용 프로그램에서 데이터 집합을 나타내는 방법을 기본적으로 알고 있기 때문에 데이터 셰이프는 응용 프로그램을 만드는 데 도움이 됩니다. 예를 들어, 데이터를 매쉬업의 그리드에 두는 경우 그리드는 데이터 셰이프 정의로 인해 데이터가 어떤 모양인지를 알고 있습니다. 그리드는 어떤 필드가 숫자, 문자열 또는 날짜인지를 알고 있습니다. 그리드가 데이터를 렌더링해야 하는 방식을 구성하면 이러한 데이터 집합에 대한 지식을 통해 구성이 훨씬 더 간단하게 됩니다.
데이터를 저장하기 위해 생성한 특정 사물인 스트림, 가치 스트림 및 데이터 테이블이 있습니다. 데이터 스토리지 사물을 정의할 때 데이터 셰이프(가치 스트림 제외)를 정의해야 합니다.
데이터 셰이프는 단지 스트림, 가치 스트림 및 데이터 테이블에 대한 정의로서 사용되는 것보다 더 많은 사례에서 사용됩니다. 데이터 셰이프는 데이터 집합을 설명해야 할 때에도 사용됩니다. 예를 들어, 서비스 구현에 대한 인포테이블 출력을 정의할 때 데이터 셰이프를 사용하여 출력 결과 집합을 설명합니다. 인포테이블 유형의 사물 속성이 있을 수 있으며 이 속성을 설명하는 데이터 셰이프를 지정할 수도 있습니다.
데이터 셰이프의 필드를 정의할 때 하나 이상의 필드를 기본 키로 표시해야 합니다. MSSQL을 지속성 공급자로 사용하는 경우 기본 키 값의 길이(두 개 이상이 기본 키로 표시된 경우 모든 기본 키의 값을 결합한 길이)는 128자로 제한됩니다. 값 길이를 128자 이상으로 설정하면 사용 중인 MSSQL 버전에 따라 다음 오류 메시지 중 하나가 표시됩니다.
MSSQL 2019:
Unable to Invoke Service AddDataTableEntries on testDataTable :
java.lang.RuntimeException: com.thingworx.common.exceptions.DataAccessException:
[1,018] Data store unknown error: [Error occurred while accessing the data provider.]
MSSQL 2017:
Unable to Invoke Service AddDataTableEntries on testDatatable :
java.lang.RuntimeException: com.thingworx.common.exceptions.DataAccessException:
[22,001] String or binary data would be truncated.
필드 정의 기본 유형
기본 유형
설명
BASETYPENAME
올바른 BaseType 이름입니다.
BLOB
바이너리 대형 객체입니다.
BOOLEAN
true 또는 false 값입니다.
DASHBOARDNAME
대시보드의 이름입니다.
DATASHAPENAME
모델의 데이터 셰이프에 대한 참조이므로 특수 처리가 있습니다.
DATETIME
형식 적용된 날짜 및 시간입니다.
GUID
고유한 전역 식별자입니다.
* 
GUID를 기본 유형으로 사용 중인 경우 GUID 값을 설정하는 것이 좋습니다. 비워 두지 마십시오(기본값).
GROUPNAME
사용자 그룹 이름입니다.
HTML
HTML 콘텐츠입니다.
HYPERLINK
표준 URL(예: www.ptc.com)입니다.
IMAGE
이미지로 렌더링될 수 있는 바이너리 데이터입니다.
IMAGELINK
이미지에 대한 URL 링크입니다.
INFOTABLE
SQL 결과 집합과 유사한 ThingWorx에서의 데이터의 표준 표현입니다. 인포테이블을 빌드, 사용 및 분석할 여러 기본 제공 서비스가 있습니다.
INTEGER
분수 구성 요소 없이 쓸 수 있는 숫자입니다.
JSON
JavaScript Object Notation 객체입니다.
LOCATION
표준 WGS(World Geodetic System) 84 좌표로 [경도, 위도], 고도로 표현됩니다.
LONG
INTEGER 기본 유형이 제공하는 범위보다 긴 범위가 필요할 때 LONG 유형을 사용해야 합니다.
MASHUPNAME
ThingWorx 매쉬업에 대한 참조이므로 특수 처리가 있습니다.
MENUNAME
메뉴의 이름입니다.
NOTHING
아무 것도 포함하지 않습니다(void).
NUMBER
숫자입니다.
* 
지수 값이 허용됩니다. 예: 123e45
PASSWORD
마스킹된 암호 값입니다. 자세한 내용은 암호를 참조하십시오. 암호화 방법에 대한 자세한 내용은 암호화를 참조하십시오.
QUERY
"필터" 배열이 포함된 JSON 객체입니다. 각 필터는 "value", "type" 및 "fieldname"을 포함해야 합니다.
SCHEDULE
CRON 기반 일정(일정 편집기를 사용하여 구성됨)입니다.
STRING
영숫자의 개수입니다.
STYLETHEMENAME
스타일 테마에 대한 참조이므로 특수 처리가 있습니다.
TAGS
ThingWorx 태그 값입니다.
텍스트
영숫자의 개수입니다. STRING과의 차이는 TEXT는 색인화된다는 점입니다.
THINGCODE
도메인 ID와 인스턴스 ID를 포함하는 사물의 숫자 표현입니다. 예를 들면, 2:1입니다.
THINGNAME
사물에 대한 참조이므로 특수 처리가 있습니다.
THINGSHAPENAME
모델의 사물 형태에 대한 참조이므로 특수 처리가 있습니다.
THINGTEMPLATENAME
사물 템플릿의 이름입니다.
TIMESPAN
TimeSpan 객체는 양수 또는 음수의 일, 시간, 분, 초로 측정되는 시간 간격(기간 또는 경과 시간)을 나타냅니다.
USERNAME
시스템에 정의된 ThingWorx 사용자에 대한 참조입니다.
VEC2
두 숫자의 모음입니다. 예를 들어, 2D 좌표 X 및 Y입니다.
VEC3
세 숫자의 모음입니다. 예를 들어, 3D 좌표 X, Y 및 Z입니다.
VEC4
네 숫자의 모음입니다. 예를 들어, 4D 좌표 X, Y, Z 및 W입니다.
XML
XML 조각 또는 문서입니다.
기존 데이터 셰이프 업데이트
정의된 기존 데이터 셰이프를 업데이트하려는 경우(필드 정의, 유형 또는 기본 키 변경) 다음 사항을 고려하십시오.
데이터 셰이프를 변경한 후 데이터를 삽입할 수 있습니다. 그러나 새 행은 새 데이터 셰이프 정의에 매핑됩니다.
데이터 셰이프를 변경한 후 데이터를 삽입하면 기본 키가 작동하지만 기존 키의 무결성도 계속 확인됩니다. 삽입을 수행하면 기본 키로 표시(필드 정의의 순서)된 모든 필드 값을 key라는 하나의 필드로 연결하여 키 값을 작성합니다.
데이터 셰이프를 변경한 후 행을 질의하면 최대한 필드 이름 및 유형을 결과 집합에 매핑하려고 합니다. 기존 행이 유형 또는 필드 이름과 일치하지 않는 경우 행이 계속해서 집합에 포함되지만 값은 없습니다.
도움이 되셨나요?