对象浏览:搜、筛、看、比

第 1 课 · 共 6 课 约 8 分钟

开箱即用的四种问法;点选就是在改写对象集;对比视图与 AIDC 今天的范围。

本课目标

读完这一课,你将能够

  • 说出对象浏览器回答的四种问题:搜、筛、看分布、比
  • 把一串点选翻译成对象集,用 where、pivotTo、aggregate 写出来
  • 说清 AIDC 的对象浏览器今天有什么、还没有什么

四种问法

上一门课讲的是怎样让逻辑可测、可发布。这一门讲另一头:人和应用怎样把 Semantic 里的数据用起来。第一站是对象浏览器(Object Explorer)。它开箱即用,不用搭界面,也不用写代码,适合不太懂技术的同事。

SEARCH

搜

在属性里找关键词。默认按整词或整句匹配,不匹配前缀和后缀;要前缀匹配,得打开「以…开头」。

FILTER

筛

给属性加条件,用「且」「或」叠加、嵌套;也可以按关系筛,例如「有检验记录的工单」。

DISTRIBUTION

看分布

结果按某个属性分组,看每组有多少;点一组,就把它加成筛选条件。

COMPARE

比

把两个筛出来的对象集并排放,看它们哪里不一样。

搜索词可以加三个修饰:「不含」把条件取反,「以…开头」做前缀匹配,「精确」把整句连空格一起匹配。按关系筛有三种:有没有这条关系、关联对象的某个属性满足条件、连到某几个具体的对象。示例工厂里,「有检验记录、却没有缺陷的工单」就是两次关系筛选。

有一条规则容易漏掉:被设为隐藏的对象类型和属性,不会出现在搜索结果里,也不会出现在对象浏览器的任何地方。

把点选翻译成对象集

对象浏览器里的每一次点选,都是在改写一个对象集(Object Set)。看懂这层对应,就能把同一个问题交给应用、脚本或智能体去做。

对象浏览器里对象集里
选类型点开「工单」client.objects("workOrder")
加条件状态 = 进行中.where({ status: "running" })
沿关系走跳到这些工单的检验.pivotTo("inspections")
看分布按产线分组计数.aggregate({ $select, $groupBy })
两组取差别对比两个对象集union、intersect、subtract

示例工厂的计划员想知道:这一周到期、还没做完的工单,每条产线各有几张。在浏览器里是三步点选,写成代码是一个对象集加一次聚合:

const client = semantic.ontology();
const open = client.objects("workOrder").where({
  status: { $in: ["planned", "released", "running", "paused"] },
  dueAt: { $lt: "2026-10-05T00:00:00Z" },
});
const byLine = await open.aggregate({ $select: { $count: "desc" }, $groupBy: { lineCode: "exact" } });

条件最多嵌套三层;按 exact 分组时,缺省最多返回 10,000 组。同一件事在命令行里是:

aidc semantic aggregate workOrder --where '{"status":"running"}' --select '{"$count":"desc"}' --group-by '{"lineCode":"exact"}'

比:两个对象集并排

对比视图把两个对象集并排放:图表里每组各画一份,筛选、表格、批量操作、导出照常可用。被比的另一组,可以是保存过的探索、同类型的全部对象,或者当场定义的新对象集。

保存和分享对比时要记住一条:分享的是视图,不是数据。看的人仍然需要对底层对象有权限。

随口一问

哪条产线更差?把两张表导出到表格软件,手工对。

好的交代

两个对象集各做一次聚合,并排读:一号线与二号线的良品数、废品数放在一起看。

const line = (code) => client.objects("workOrder").where({ lineCode: code, status: "running" });
const [l1, l2] = await Promise.all(["L1", "L2"].map((c) =>
  line(c).aggregate({ $select: { "goodQty:sum": "unordered", "scrapQty:sum": "unordered" } })));
// 各自是 { goodQty: { sum }, scrapQty: { sum } },并排放就是对比

要点

  • 对象浏览器回答四种问题:搜、筛、看分布、比;开箱即用,不用搭界面。
  • 每一次点选都在改写一个对象集,对应 where、pivotTo、aggregate 和并、交、差。
  • 条件最多嵌套三层;exact 分组缺省最多 10,000 组。
  • 分享对比视图不分享数据,看的人仍需要对底层对象有权限。
  • AIDC 今天有搜索、筛选、排序、分组计数;对比视图与保存的探索目前还没有。

练一练

把点选写成对象集

在你有权限的组织里做;只读操作,不会改任何数据。

在对象浏览器里选一个类型,加两个筛选、再按一个属性分组;然后把这串点选写成 where 加 aggregate。

小测

选一个答案,马上看解析。

Q1在浏览器里筛出「一号线的工单」,再按「状态」看分布。写成代码最接近哪一个?

Q2你把一个对比视图分享给同事,他能看到什么?

Q3AIDC 今天要并排看一号线与二号线的废品数,怎么做?

延伸阅读