循序渐进 · 教学 · 本体零件(十一)

函数(Functions):把业务逻辑写成可复用的代码

当规则复杂到没法用配置表达,就需要写代码。函数让代码作者把逻辑写在 本体之上,在运营场景里被快速执行。这一篇讲清它是什么、能做什么、怎么用。

原文 Palantir Foundry · Functions Overview 预计阅读 10 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/functions/overview/
原始标题:Functions · Overview

一句话速览

函数(Functions):把业务逻辑写成可复用的代码:当规则复杂到没法用配置表达,就需要写代码。函数让代码作者把逻辑写在 本体之上,在运营场景里被快速执行。这一篇讲清它是什么、能做什么、怎么用。

1 function 是"在本体上跑的可复用逻辑"
函数(function)让代码作者把一段逻辑写出来,在 运营场景(operational contexts)——比如仪表盘、辅助决策…
2 对本体的原生支持
函数最值得强调的特性是:它对本体(Ontology)是一等公民(first-class)级别的支持
3 常见用途清单
原文列出了一长串常见用法,挑重点记
4 支持哪种语言
函数支持两种语言:TypeScript 与 Python
1

一句话:function 是"在本体上跑的可复用逻辑"

Functions enable code authors to write logic executed quickly in operational contexts.

函数(function)让代码作者把一段逻辑写出来,在 运营场景(operational contexts)——比如仪表盘、辅助决策的应用——里被快速执行。

Functions enable code authors to write logic that can be executed quickly in operational contexts, such as dashboards and applications designed to empower decision-making processes. This logic is executed on the server side in an isolated environment. 函数让代码作者写出可在运营场景(仪表盘、应用)中快速执行的逻辑;它在服务端、隔离环境中运行。

一句话区分它和动作类型:函数是一段"计算逻辑",负责读、算、甚至改; 而动作类型(action type)是"人/系统做出的一次受治理的改动"。函数常被动作类型调用。

关键句:函数运行在服务端隔离环境——你写的代码不会塞进浏览器,而是安全地在平台上跑。
2

一等公民:对本体的原生支持

读属性、遍历链接、灵活编辑,都是内建能力。

函数最值得强调的特性是:它对本体(Ontology)是一等公民(first-class)级别的支持。也就是说,写函数时能直接:

读属性
读取各种对象类型的属性值,作为计算的输入。
遍历链接
顺着 link 在对象之间游走,拿到关联对象的数据。
做编辑
灵活地对任意对象做出本体编辑(常配合 function-backed action)。
为什么重要:因为函数"懂"本体,你不用自己拼 SQL 或写胶水代码去拿数据—— 直接基于对象、属性、链接来写逻辑即可。
3

常见用途清单

从展示、聚合到实时流式,覆盖面很广。

原文列出了一长串常见用法,挑重点记:

  • 返回对象集合 / 变量值给 Workshop 使用。
  • 显示换算后的值:通过 Workshop 的"函数支撑列(function-backed columns)"在派生表里展示。
  • 聚合对象值:作为 Workshop 图表的来源。
  • 表达复杂编辑:通过"函数支撑的动作(function backed action)"一次性更新大量对象。
  • 后端跑逻辑、返给前端:在 Slate 中返回要展示的信息。
  • 计算自定义指标 / 聚合:在 Quiver 中展示。
  • 查外部系统丰富本体:通过 external functions(外部函数 / webhooks)。
  • 实时流式结果:增量返回,尤其配合语言模型(language models)。
  • Python 作旁路容器:在 Pipeline Builder 里使用。
看规律:凡是"展示/计算/聚合/编排改动"的需求,都落到函数; 而"把原料数据搬进本体"不归它管(那是数据集成)。
4

支持哪种语言?

TypeScript 与 Python。

函数支持两种语言:TypeScriptPython。 原文还提示:不同语言、不同版本的功能支持程度不同,选择前应先参考 「language feature support(语言功能支持规格)」。

给初学者的提醒:如果你要跟着官方教程上手,原文给了三条路径—— TypeScript v1TypeScript v2Python 的入门教程, 以及一个 "Speedrun: Your first Ontology function" 速通课程。
5

函数和动作类型怎么配合?

函数算/改,动作类型收口成"一次受治理的改动"。

一个很常见的组合是 function backed action(函数支撑的动作): 复杂编辑的逻辑写在函数里,动作类型负责把它包装成"用户可触发、带权限校验、带副作用"的一次提交。

✓ 函数 function
职责 · 读属性、遍历链接、做计算 · 可灵活编辑本体(逻辑层) · 不自带权限/副作用收口
+
✓ 动作类型 action type
职责 · 把函数的逻辑收口成一次事务 · 带参数、权限校验、通知等副作用 · 提交即写回,跨应用一致
一句话:函数提供"能力",动作类型提供"治理"。只读计算只用函数;要改动且需合规,就用函数支撑的动作。
6

动手:这段代码该放哪儿?

判断每一项最适合落在 函数 / 动作类型 / 数据集成管道。

记忆锚点:只读/计算/聚合/展示 → 函数;受治理的改动 → 动作类型;把原料搬进本体 → 数据集成管道。
7

从哪里上手?

点开看函数"跑在哪里"。

点我看函数"跑在哪里" →

原文推荐的入门路径(均可在官方文档找到):

  • Getting started with TypeScript v1 functions
  • Getting started with TypeScript v2 functions
  • Getting started with Python functions
  • 速通课程:Speedrun: Your first Ontology function(learn.palantir.com)
选语言前:先查「language feature support」,确认你需要的特性在目标语言/版本里受支持。

一页带走

① 函数 = 可复用逻辑
在运营场景快速执行;运行于服务端隔离环境。
② 本体一等公民
读属性、遍历链接、灵活编辑,都是内建能力。
③ 用途广
展示换算、聚合、复杂编辑、查外部系统、实时流式等。
④ 与动作配合
函数提供能力,动作类型提供治理(function backed action)。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

常见问题速答 · FAQ

关于「函数(Functions):把业务逻辑写成可复用的代码」,读者最常问的几个问题。

一等公民:对本体的原生支持是什么?
函数最值得强调的特性是:它对本体(Ontology)是一等公民(first-class)级别的支持。也就是说,写函数时能直接。
支持哪种语言?是什么?
函数支持两种语言:TypeScript 与 Python。原文还提示:不同语言、不同版本的功能支持程度不同,选择前应先参考 「language feature support(语言功能支持规格)」。
函数和动作类型怎么配合?
一个很常见的组合是 function backed action(函数支撑的动作):复杂编辑的逻辑写在函数里,动作类型负责把它包装成"用户可触发、带权限校验、带副作用"的一次提交。