features · Aug 29, 2023

成功公式:Quire 数组公式

AI 翻译
· 查看英文版

最后更新:2026 年 5 月 28 日

想象一下:你正盯着自己的项目管理软件,心里嘀咕:"等等,数组公式真的属于这里吗?" 我是说,我们通常觉得公式无非就是加加减减数字的玩意儿,对吧?先别急着下结论。

因为事情是这样的:当一个项目里有一大堆任务、各自忙活着各自的事时,你必须成为掌控各项指标的高手,才能取得成功。这正是数组公式大显身手、力挽狂澜的时刻。在这篇博文中,我将向你展示这些精彩的公式如何为你的数据玩法增添亮色。准备好以前所未有的方式深入你的项目世界吧!

数组公式适用于所有订阅套餐。更多信息请见我们的价格页面

什么是数组公式?

数组是一组数据的集合,比如任务、负责人、时长和数字。数组公式让你能够在选定的数据集合(也就是一个数组)中执行多项计算。

例如,如果你想计算一个任务的进度偏差,可以这样写一个公式:

timeSpent - estimated

接着,如果你想计算所有子任务的进度偏差,可以这样写公式:

subtasks.timeSpent - subtasks.estimated

它看起来可能有点陌生——我稍后会解释。这里你只需要知道,在上面的公式中,subtasks 是子任务的集合,而借助数组公式,你可以像处理普通数值一样,直接用一个数组减去另一个数组。

你只需在任务描述中输入公式,并用 {{}} 把它括起来,就能体验公式的运作方式。更多信息请访问我们的指南

Quire 支持哪些基本的数组运算?

在 Quire 的公式中,你可以用 [] 来构建任意数组。例如,你可以这样得到一个由 1、2、3 组成的集合:

[1, 2, 3]

接着,如果你想乘以某个数值,可以这样做:

[1, 2, 3] * 5

结果会是

[5, 10, 15]

此外,你还可以对两个数组进行运算:

[1, 2, 3] - [2, 1, 3]

结果会是

[-1, 1, 0]

好了,现在我们可以来解释前面提到的那个公式了:

subtasks.timeSpent - subtasks.estimated

假设我们有三个子任务,它们花费的时间分别是 1h、2h 和 3h,预计时间分别是 2h、1h、3h。那么,subtasks.timeSpent 实际会计算为 [1h, 2h, 3h],而 subtasks.estimated 会计算为 [2h, 1h, 3h]。于是,结果就是 [-1h, 1h, 0h]

1h 表示 1 小时的时长。更多信息请访问我们的指南

在 Quire 中如何对数组进行排序和筛选?

sort 函数如何运作?

要对一组数据进行排序,你只需使用 sort 函数:

sort([3, 1, 5, 2, 4]) * 2

它会返回以下结果:

[2, 4, 6, 8, 10]

它等价于 sort(3, 1, 5, 2, 4) * 2

limit 运算符如何运作?

如果你只想筛选出前三个元素,可以这样使用 limit 运算符:

sort([3, 1, 5, 2, 4]) * 2 limit 3

where 运算符如何运作?

如果你想筛除较小的数值,可以这样使用 where 运算符:

[3, 1, 5, 2, 4] where any > 4

它会返回以下结果:

[3, 5]

any 是一个关键字,用来表示 where 运算符左侧数组中的每一个值。

order by 运算符如何运作?

让我们回到那个计算进度偏差的公式,再来玩一玩:subtasks.timeSpent - subtasks.estimated.

它会返回所有子任务的时间偏差。现在假设我们想取回任务本身,而不是进度偏差,那么可以这样使用 order by 运算符:

subtasks order by any.timeSpent - any.estimated

默认的排序是升序。你可以用 desc 关键字将它改为降序,如下所示:

subtasks order by desc any.timeSpent - any.estimated

下面是一个更高级、更复杂的公式。来试试看你能不能看出它想做什么:

subtasks where any.timeSpent > 1d and any.due < tomorrow and any.priority >= high order by desc any.timeSpent - any.estimated limit 3

数组公式如何揭示你的项目动态?

如何在自定义字段中使用数组公式?

用起来易如反掌——只需创建一个带公式的自定义字段。比方说,你一心想盯紧每个任务到底花了你多少钱。首先,你可以定义一个自定义字段,比如 Cost,用来记录每个任务的成本。

SQL 公式

接着,你可以定义另一个字段,例如 Total Cost,用来计算每个任务(包括其子任务)的总成本,如下所示。

数据分析

有几点值得注意:

  1. 公式不区分大小写。也就是说,Costcost 是等价的,SUBTASKSsubtasks 也是如此。
  2. 如果字段名包含空格或其他非字母数字字符,你必须用 {} 把它括起来。这就是为什么你在上面的公式中会看到 {Total Cost}

让我们再深入了解一下 Total Cost 是如何计算的。首先,假设我们有三个任务:A、B 和 C。其中,B 和 C 是 A 的子任务。另外,你为 A、B、C 输入的 Cost 分别是 50、30、10。那么,

  1. B 和 C 的总成本分别是 30 和 10,因为它们没有任何子任务。
  2. A 的总成本会是 SUM(30, 10, 50),也就是 90。

如何在项目描述中放入数组公式?

Quire 公式

这里还有一种使用公式的妙招——你可以把它们直接放进项目描述里。想象一下你希望显示整个项目的总成本,只需在项目描述中写下类似这样的内容:

Total cost: {{SUM(tasks.{Total Cost})}}

其中:

  1. 项目描述采用 Quire 风格的 markdown。要指定一个公式,你必须用 {{}} 把它括起来。此外,一旦你输入 {{,就会有一个自动补全对话框帮你完成公式。
  2. tasks 是一个内置标识符,代表项目中的所有任务。同样,它也不区分大小写。

如果我们想知道成本最高的 5 个任务,可以这样做:

{{tasks order by desc any.{Total Cost} limit 5}}

或者,如果你想列出耗时过多的任务:

{{tasks where any.timeSpent - any.estimated > 1d order by desc any.timeSpent - any.estimated limit 5}}

只要支持 markdown,你就可以把公式放进任何描述中,包括任务和评论。你甚至可以通过在同事个人资料的描述中写下合适的公式,来汇总他们的工作表现。

要了解和探索 Quire 数组公式能为你带来什么帮助,你可以在任务描述中亲自试一试。这样反复尝试、试错会更方便。

常见问题

Quire 中的数组公式是什么?

数组公式让你能够对数据集合(任务、子任务、自定义字段)进行运算,而不只是处理单个数值。例如,subtasks.timeSpent - subtasks.estimated 只需一行就能返回每个子任务的进度偏差。

如何在 Quire 中编写我的第一个数组公式?

打开任意任务描述,用双花括号把公式括起来,随着你的输入,自动补全对话框就会弹出。同样的用法也适用于评论、项目描述和自定义字段。

sort、limit 和 where 之间有什么区别?

sort 会重新排列数组,limit 会返回前 N 个元素,而 where 则使用 any 关键字进行筛选。它们可以串联使用,因此你可以先按花费时间降序排列子任务,再限制为前 3 个。

我可以在任务和项目描述中使用数组公式吗?

可以。任何支持 Quire 风格 markdown 的字段都支持在双花括号内使用公式,包括任务描述、项目描述和评论。

Quire 支持哪些数组公式运算符?

对数组进行的算术运算、比较运算、sort/limit/where/order by,以及 SUMAVG 这类聚合运算。完整参考请见 Quire 公式指南。

来在 Quire 中编写你的第一个公式吧!

好了,关于 Quire 数组公式的内幕,你都掌握了——它正是你最得力的项目管理好帮手。而且你猜怎么着?Quire 可不只是赶上了数组公式这趟车,它干脆就是开车的那个人!它是先行者,是开拓者——史上第一款为你带来数组公式的项目管理软件,而且不止于此,它还玩得游刃有余。

在 Quire 里,数组公式不只是一项功能,更是一种打磨到极致的体验。所以,如果你一心想为项目洞察力大幅提速,Quire 的数组公式定会让你眼前一亮。准备好用 Quire 强大的数组公式来计算数据、发掘洞见,把你的项目管理提升到全新的高度吧。你的项目会因此感激你——你那条理分明、热爱数据的另一面也会同样感激你!

Tom Yeh
CEO at Quire.