Quireにおける配列数式 Permalink
Quireの配列数式を使うと、タスク、子タスク、担当者、数値、期間など、値のコレクションをまとめて処理できます。値を一つずつ計算する代わりに、配列数式を使うことで一括計算を実行し、複数の結果または単一の集計結果を返すことができます。
配列数式を理解する
配列とは、通常カンマで区切られた値のリストです。Quireの数式では、子タスクやタスクフィールドなど複数のアイテムを参照する際に、配列が返されることがよくあります。
たとえば、単一のタスクのスケジュール差異を計算する代わりに:
timeSpent - estimated
配列数式を使ってすべての子タスクのスケジュール差異を一度に計算できます:
subtasks.timeSpent - subtasks.estimated
subtasks はリストを返すため、Quireは各子タスクについて個別に計算を行い、結果のリストを返します。
基本的な計算に配列数式を使用する
算術演算子
配列数式はすべての基本的な数値演算子をサポートしています:
- 加算(
+) - 減算(
-) - 乗算(
*) - 除算(
/)
使用例:
- 子タスクの経過時間:
3h, 2h, 1h - 子タスクの見積もり時間:
1h, 2h, 3h
次のように記述すると:
subtasks.timeSpent
Quireはこれを次のように解釈します:
[3h, 2h, 1h]
配列数式を使用すると:
subtasks.timeSpent - subtasks.estimated
次のように評価されます:
[3h, 2h, 1h] - [1h, 2h, 3h]
結果:
[2h, 0h, -2h]
配列内の各値は、1つの子タスクの計算結果を表しています。
演算子と関数を組み合わせた配列数式の使用
関数との組み合わせ
配列数式は、より高度な分析のためにQuireの組み込み演算子や関数と組み合わせて使用できます。
同じ経過時間の例を使用して、値を並べ替えて計算を実行できます:
SORT(subtasks.timeSpent) * 2
これは次のように解釈されます:
SORT([3h, 2h, 1h]) * 2
そして次を返します:
[2h, 4h, 6h]
これにより、タスクデータのコレクションを簡単に変換・分析できます。
配列数式を使用したデータのフィルタリング
where によるフィルタリング
where 演算子を使用して配列をフィルタリングし、特定の条件を満たすアイテムのみを返すことができます。
使用例:経過時間が2時間以上の子タスクをフィルタリングする:
subtasks where any.timeSpent >= 2h
これは次のように評価されます:
[3h, 2h]
そして対応するタスクを返します:
subtask 1, subtask 2
この数式はすべての子タスクを検索し、条件を適用して、一致するアイテムのみを返します。
注意: where と組み合わせて any 識別子を使用し、条件を適用するフィールドを指定します。
Quireの配列数式について、Quireの配列数式のブログでさらに詳しくお読みください。
よくある質問
Quireにおける配列数式とは何ですか?
配列数式は、値のコレクション全体に対して一度に処理を行います。たとえば、subtasks.timeSpent - subtasks.estimated は、すべての子タスクのスケジュール差異を計算し、結果のリストを返します。
Quireですべての子タスクにわたる値を計算するにはどうすればよいですか?
subtasks オブジェクトのフィールドを参照します。たとえば、subtasks.timeSpent - subtasks.estimated は各子タスクの差分を計算し、結果の配列を返します。
Quireの数式で子タスクの値の配列を並べ替えるにはどうすればよいですか?
配列を SORT() でラップします。たとえば、SORT(subtasks.timeSpent) は子タスクの経過時間の値を小さい順から大きい順に返します。SORT(subtasks.timeSpent) * 2 のように操作を連結することもできます。
Quireの配列数式で条件によって子タスクをフィルタリングするにはどうすればよいですか?
where 演算子を any と組み合わせて使用します。たとえば、subtasks where any.timeSpent >= 2h は経過時間が2時間以上の子タスクのみを返します。