G·Graph Daily Lab
DAY 97 / 100
내 학습 기록
DAY 97개념·실험팔란티어 온톨로지 II

함수와 파생 로직

‘창고별 지연률’ 같은 계산은 대시보드, 액션, AI 에이전트가 모두 필요로 합니다. 팔란티어의 함수가 온톨로지 객체를 입력으로 받아 계산과 편집을 한곳에서 정의하는 방식을 봅니다.

약 20분조작형 실험 확인 퀴즈
A SMALL DETOUR

이번 회차, 내 속도로.

기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 97로 돌아옵니다.

난이도·관심 주제 고르기
이번 회차는 어느 속도로 볼까요?
더 살펴볼 주제 1~2개 선택

1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.

이렇게 다녀와요 1단계 · 약 12분

  1. 출발 · DAY 97함수·객체 세트 계산
  2. 1. 관심 주제사람 승인 설계·위험 기준추가 39 · 새 추가 수업
  3. 복귀 · DAY 97원래 회차 이어가기
  • 사람 승인 설계·위험 기준 · DAY 99에서 AIP Chatbot의 Action 도구를 ‘자동 실행’ 또는 ‘사용자 확인 후 실행’으로 설정할 수 있다고 했는데, 그 선택의 기준을 정리합니다.

선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.

복귀: DAY 97 → 본과정 다음 회차: DAY 98

핵심 개념

팔란티어 문서에서 함수(Functions)는 대시보드나 애플리케이션 같은 운영 맥락에서 빠르게 실행되는 로직을 코드로 작성하게 하는 기능입니다. 서버 측의 격리된 환경에서 실행되고, 객체 속성 읽기, 링크 따라가기, 온톨로지 편집 같은 온톨로지 작업을 기본으로 지원합니다. 지원 언어는 TypeScript(v1, v2)와 Python입니다.

Functions on objects 문서는 자동 생성된 코드 바인딩으로 객체 타입을 파라미터로 받고, 객체 세트를 그때그때 검색·필터·집계하며, 링크를 따라가고, 온톨로지 편집(Ontology edits)을 만드는 방법을 설명합니다. 함수는 Workshop의 객체 세트·변수·파생 값, 함수 기반 열(function-backed columns)과 차트 집계, 함수 기반 액션(DAY 96의 함수 규칙), Slate·Quiver의 계산 등에 쓰입니다. AIP Logic의 Use LLM 블록도 Call function 도구로 함수를 부릅니다.

계산을 함수 하나로 모으는 이유는 일관성입니다. ‘창고별 지연률’을 대시보드·액션 검증·AI 에이전트가 제각각 구현하면 분모(기간, 취소 건 포함 여부)가 조금씩 달라져 숫자가 어긋납니다. 함수 하나로 정의해 여러 곳에서 호출하면 정의를 바꿀 때 한 곳만 고치면 됩니다. 편집을 만드는 함수에 대해 문서는 함수로 객체를 바꾸는 유일한 방법이 그 함수를 쓰는 액션(함수 기반 액션)을 구성하는 것이라고 밝힙니다. AIP Logic 문서도 Logic 함수가 Apply action 블록을 포함하더라도 액션에서 실행되지 않으면 온톨로지가 편집되지 않는다고 밝힙니다.

DAY 75에서 미뤄 둔 ‘지연 여부’처럼 기준일에 따라 바뀌는 값은 속성으로 저장하기보다 함수로 계산하는 편이 맞습니다. 다만 함수의 결과는 입력 객체 세트와 기준일에 달려 있으므로, 결과를 보여 줄 때 어떤 세트와 기준일로 계산했는지 함께 적습니다. 함수는 계산을 일관되게 만들 뿐이어서, 백킹 데이터의 도착일이 틀렸다면 틀린 지연률도 일관되게 계산합니다.

함수는 객체 세트를 입력으로 받아 파생 값과 편집을 계산하는 코드이며, 한 번 정의해 앱·액션·AIP가 함께 쓰면 숫자의 정의가 하나로 유지됩니다.

작은 예제로 따라가기

01

DAY 75의 지연 규칙(도착일이 약속일보다 늦거나, 미도착인데 기준일이 약속일을 지남)을 함수 isDelayed(배송, 기준일)로 정의합니다. 저장하는 속성이 아니라 기준일마다 다시 계산하는 파생 값입니다.

02

창고별 지연률 함수는 Shipment 객체 세트를 창고 링크로 묶어 지연 수 ÷ 전체 수를 냅니다. 기준일 10-07에 W-1 부산센터 2/3≈67%(S-101, S-102), W-2 대전센터 1/2=50%(S-104)이며, 검증에 실패한 S-106은 입력 세트에서 뺍니다.

03

기준일을 10-09로 바꾸면 S-105(약속 10-08, 미도착)도 지연이 되어 W-1은 3/3=100%가 됩니다. 같은 함수를 Workshop 표, ‘배송 경로 변경’ 판단 화면, AIP 에이전트의 도구가 함께 호출하므로 세 곳의 숫자가 늘 일치합니다.

직접 실험해 보기

입력 객체 세트를 바꿔 가며 같은 함수의 창고별 지연률 표가 어떻게 달라지는지 확인하고, 이 함수가 앱·액션·AIP 가운데 어디에서 재사용되는지 노트를 읽으세요.

LIVE EXPERIMENT · FUNCTIONS

같은 함수에 다른 객체 세트와 기준일을 넣어 파생 값 계산하기

입력 객체 세트
기준일(referenceDate)
// 의사코드: Functions(TypeScript)
// 형태를 단순화한 것
@Function()
delayRateByWarehouse(
  shipments: ObjectSet<Shipment>,
  ref: LocalDate
) {
  const rows = shipments.all()
  return groupBy(rows, s => s.warehouseId)
    .map(([warehouse, list]) => {
      const late = list.filter(
        s => isDelayed(s, ref)
      ).length
      return {
        warehouse,
        total: list.length,
        late,
        rate: late / list.length,
      }
    })
}
delayRateByWarehouse(검증 통과 배송, 10-07) 결과
창고배송지연지연률
W-1 부산센터32 (S-101, S-102)2/3 = 67%
W-2 대전센터21 (S-104)1/2 = 50%

지연 여부는 저장하는 속성이 아니라 기준일마다 다시 계산하는 파생 값입니다. S-106은 약속일이 날짜가 아니어서 입력 세트에서 뺍니다. 같은 함수를 Workshop 표의 함수 기반 열, 함수 기반 액션(function-backed action), AIP Logic의 도구(Call function)에서 다시 쓰므로 세 곳의 숫자가 일치합니다.

이번에는 직접 풀어 보세요

정답을 보기 전에 계산과 이유를 적어 보세요. 해설과 비교하고 확인 표시를 남기면 완료할 수 있습니다.

문제 1
힌트 보기

고객별로 지연 수 ÷ 배송 수를 계산합니다. 고객에서 배송으로 가는 길은 DAY 74의 Search Around와 같습니다.

풀이와 비교하기

한빛상사 2/4=50%, 다온마트 1/5=20%, 바른약국 1/2=50%이므로 결과는 한빛상사와 바른약국입니다. 함수는 Customer와 Shipment 사이 링크를 따라 고객별 배송 객체 세트를 얻고 지연 여부로 집계합니다. 바른약국은 배송이 2건뿐이라 비율이 크게 흔들릴 수 있으므로 건수를 함께 보여 주는 편이 좋습니다.

풀이와 확인 표시는 이 브라우저에 저장됩니다.

YOUR NOTES

오늘 이해한 것과 다시 볼 것

계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.

메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.

오늘의 이해 확인

창고별 지연률을 대시보드·액션·AI 에이전트가 같은 값으로 쓰게 하는 방법으로 가장 알맞은 것은?

완료 조건: 확인 퀴즈 정답 · / 직접 풀기 0/1

FURTHER READING

더 깊이 읽기

예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.

Functions: OverviewPalantir Foundry DocsFunctions on objectsPalantir Foundry DocsFunctions: Ontology editsPalantir Foundry DocsAIP Logic: BlocksPalantir Foundry Docs

이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.