Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

조회 시 계산하는 파생 속성

파생 속성(Derived property)은 다른 속성(Property)이나 연결된 객체(Object)의 값으로 조회 시 계산하는 속성입니다. 값을 객체 저장소에 저장하는 대신 계산 방법을 정의합니다.

예를 들어 Department에서 연결된 Employee의 평균 급여를 계산하거나, Employee에서 연결된 관리자의 이름을 가져올 수 있습니다. salary와 bonus를 더해 총보수를 계산하는 표현식도 가능합니다. 직원 수를 집계한다면 새 직원과 퇴사자가 조회 대상에 반영될 때 계산 결과도 달라집니다. 파생 값만 갱신하기 위한 파이프라인이나 편집 동기화 로직은 필요하지 않습니다.

파생 속성은 읽기 전용입니다. 액션(Action)과 함수(Function)로 결과 값을 직접 편집할 수 없습니다.

정의 위치 선택

구분온톨로지 정의형런타임 정의형
설정 위치Ontology ManagerWorkshop 모듈, Insight 워크북 또는 Ontology SDK 요청
정의 저장 위치온톨로지 정의객체 집합(Object set) 정의
사용 범위해당 객체 유형의 소비자 전체선언한 요청이나 모듈 및 정의를 포함한 저장 객체 집합에 접근하는 사용자
링크 탐색 수최대 3회Workshop과 Insight는 1회, Ontology SDK는 고정 횟수 제한 없음
산술 및 날짜 표현식지원하지 않음지원
개발 상태베타정식 제공

온톨로지 정의형은 플랫폼 인스턴스에 아직 제공되지 않을 수 있으며 개발 중 기능이 바뀔 수 있습니다. 조직에서 공통으로 사용할 계산은 Ontology Manager 구성을 선택합니다. 특정 앱이나 분석의 계산, 산술 및 날짜 연산은 런타임 정의형으로 구성합니다.

링크 기반 계산과 표현식

두 정의 방식 모두 링크(Link)를 따라 속성을 선택하거나 연결된 여러 객체를 집계할 수 있습니다. 산술 및 날짜 표현식은 런타임 정의형에만 있습니다.

표현식은 기본 속성이나 앞에서 정의한 링크 선택 및 집계 결과를 사용할 수 있습니다. 같은 withProperties 호출에서 함께 선언한 계산 속성을 서로 참조하지 않습니다. 의존하는 계산은 다음 withProperties 호출에서 선언합니다. 사용할 집계와 표현식은 연산 참조에 있습니다.

사용하는 앱과 SDK

도구지원 방식
Ontology Manager객체 유형(Object type)에 공통 파생 속성을 구성합니다.
Workshop공통 속성을 사용하거나 모듈에서 런타임 속성을 정의합니다. 런타임 속성은 일부 위젯에서 지원합니다.
Ontology SDK공통 속성을 사용하거나 withProperties로 런타임 속성을 정의하여 반환값, 필터, 정렬과 집계에 사용합니다.
Insight공통 속성을 사용하거나 표 분석에 런타임 속성을 추가합니다.

TypeScript OSDK 2.x의 @osdk/client는 최소 2.2.0-beta.x가 필요합니다. 연결된 객체에서 속성을 직접 선택하거나 산술 및 날짜 표현식을 사용하려면 2.4.0 이상이 필요합니다. 실제 생성된 API는 Developer Console에서 확인합니다.

보안 상속과 사용자별 결과

계산에 사용하는 모든 객체의 접근 권한을 확인합니다. 여러 링크를 거치는 경우 중간 객체에도 접근 검사를 적용한 뒤 값을 결합합니다. 따라서 같은 객체의 같은 파생 속성이라도 사용자에 따라 값이 다를 수 있습니다.

가상의 Game World에서 연결된 Quest 수와 최대 보상을 구한다고 가정합니다. 한 지역만 볼 수 있는 플레이어는 퀘스트 2개와 최대 보상 150을 보고, 모든 지역을 볼 수 있는 관리자는 34개와 최대 보상 1,200을 볼 수 있습니다.

목록이나 집합으로 값을 모으면 개별 값의 보안 표지(Marking)도 유지합니다. 목록 전체를 하나의 공개 값으로 취급하지 않습니다.

표시 개수와 질의 범위

Collect list와 Collect set의 제한은 반환할 값의 개수입니다. 필터, 정렬과 집계는 권한 검사를 거친 전체 구성 값을 대상으로 하며 표시 제한으로 평가 범위를 줄이지 않습니다.

예를 들어 Turkey Burger의 태그에 Healthy가 있지만 표시 제한이 3이라 Dinner, Weeknight와 Grill만 반환될 수 있습니다. 이 객체는 Healthy 조건에 일치합니다. 반환 목록에서 조건에 사용된 값을 찾지 못했다는 사실만으로 잘못된 검색이라고 판단하지 않습니다.

리듀서(Reducer)로 대표 값 하나를 표시하는 경우도 같습니다. 반환은 제한 1과 같지만 필터는 전체 구성 값을 검사합니다.

성능

파생 값은 저장되거나 인덱싱되지 않습니다. 플랫폼은 가능한 필터를 기반 객체 인덱스에 먼저 적용하여 계산 대상을 줄입니다. 일부 조인과 집계도 질의에 따라 하위 단계로 밀어낼 수 있습니다.

성능은 필터 후 남은 객체 수, 연결된 객체 수와 중간 결과 크기, 집계 종류 및 링크 탐색 횟수에 영향을 받습니다. 파생 값으로 필터링하거나 정렬하면 대체로 남은 후보 각각의 값을 계산해야 합니다. 표시 개수를 줄이는 것만으로 전체 평가 비용이 같은 비율로 줄지는 않습니다.

미리 계산할 값과 조회 시 계산할 값을 선택하는 기준은 속성 구조와 비정규화에 있습니다. 실행 임계값과 대체 실행 방식, 컴퓨팅 비용은 질의 전체 구성에도 영향을 받습니다.

제한

  • 파생 속성이 포함된 질의에는 Object Storage V1로 인덱싱한 객체 유형을 넣을 수 없습니다.
  • 파생 속성은 기본 키(Primary key)나 필수 속성으로 지정할 수 없습니다.
  • 값 유형(Value type)을 직접 적용할 수 없습니다. 원본 속성의 값 유형은 상속합니다.
  • 조건부 서식과 값 서식을 설정할 수 없으며 인라인 액션도 구성할 수 없습니다.
  • Automate 조건은 Scheduled monitoring에서만 파생 속성으로 필터링할 수 있습니다. Live monitoring에서는 지원하지 않습니다.
  • 온톨로지 정의형은 링크 탐색과 집계만 지원하고 최대 3회 탐색합니다. 산술 및 날짜 계산에는 런타임 정의형을 사용합니다.
  • 런타임 표현식이 다른 계산 속성에 의존하면 withProperties 호출을 나누어 선언 순서를 정합니다.