
目次
Notionのデータベースで、リレーションでつないだ先の数字を集めてくれるのがロールアップです。ところが実際に設定してみると、表示された数字が自分の想定と合わないということが起きます。5件つないだはずなのに「4」と出る、担当者が3人いるはずなのに「5」と出る、といった具合です。
原因のほとんどは「計算」の選び間違いです。この記事では、選べる22種類が何をしているのかと、目的から引ける選び方をまとめます。あわせて、ロールアップに最初からある2つの制限(ロールアップのロールアップは作れない/並べ替えできる条件が限られる)にも触れます。
内容はNotion公式ヘルプ「リレーションとロールアップ」に沿っています。
ロールアップは「リレーションでつないだページ」だけを集計する
最初に、ロールアップが何を見ているのかをはっきりさせておきます。ここを取り違えると、あとの「計算」をどれだけ正しく選んでも数字は合いません。
ロールアップの設定には3つの選択がある
ロールアップのプロパティを作ると、続けて3つを選ぶことになります。公式ヘルプでは、それぞれ次のように呼ばれています。
- ロールアップしたいリレーション形式のプロパティ
- 関連付けられたページのうち、ロールアップしたいプロパティ
- プロパティに適用したい計算
つまり「どのリレーションをたどるか」「たどった先のどの列を見るか」「その列をどう集計するか」の3段構えです。数字が合わないときは、この3つのうちどこで食い違っているのかを切り分けると原因にたどり着きます。
集計の対象は、そのリレーションで実際につながっている行だけ
ロールアップは、選んだリレーションで結び付いているページを集計します。相手のデータベースに何行あるかではなく、そのページから実際にリンクされている行だけが対象です。
「相手のデータベースには20件あるのに合計が3件分にしかならない」というときは、計算の問題ではなくリレーションの張り忘れであることがほとんどです。まずロールアップの隣にリレーション列を並べて表示し、想定した行が入っているかを目で確認してください。
同じデータでも「計算」を変えると表示される数字が変わる
リレーションが正しく張れていても、「計算」の選び方ひとつで返ってくる数字は変わります。しかも、どれもエラーにはならず、それらしい数字が表示されます。だから「合っていない」ことに気づきにくいのです。
数字が合わない原因のほとんどは「計算」の選び間違い
名前が似ているのに中身が違う計算が、いくつもあります。取り違えの多い3つを挙げます。
「すべてカウント」と「値の数をカウント」は別物
公式ヘルプには、この2つがこう書き分けられています。
- すべてカウント(Count all)… 値の総数を数える
- 値の数をカウント(Count values)… 未入力ではない値の数を数える
違いは「未入力の行を数に入れるかどうか」です。5件つないでいて、そのうち1件で対象のプロパティが空欄なら、前者と後者では返る数字が1つずれます。「件数が1つ足りない」という現象の多くはこれです。
「一意の値の数をカウント」は重複を1つに畳む
一意の値の数をカウント(Count unique values)が返すのは、重複を除いた種類の数です。担当者プロパティに「田中」が2件あっても、数えられるのは1です。
「タスクは5件あるのに担当者のロールアップが3と出る」のは正常な動作で、それは人数を数えているからです。逆に件数を知りたいのにこれを選ぶと、常に少なめの数字が出続けます。名前が長くて紛らわしいので、設定画面で選んだあとにもう一度読み直すと安全です。
「未入力」系を選ぶと、そもそも分母が変わる
未入力にまつわる計算は4つあります。未入力をカウントは、その値が空になっている関連ページの数。未入力以外をカウントは、値が入っている関連ページの数。未入力の割合と未入力以外の割合は、それぞれを割合で返します。
見ているのは「入力されているか/いないか」だけです。チェックボックスのオン/オフは数えません。チェックの数を見たいときは、チェックボックス専用の計算が別にあります(後述)。
定義の違いを、同じデータで並べるとこうなる
5件のタスクをつないでいて、そのうち1件だけ担当者が未入力、残り4件の担当者が「田中・佐藤・田中・鈴木」だったとします。公式の定義に当てはめると、選んだ計算によって次のように違う数字が返ることになります。
【一覧】選べる「計算」22種類と、それぞれが返す値
ロールアップで選べる計算は、たどった先のプロパティの種類によって出てくるものが変わります。4つのグループに分けて並べます。
どのプロパティでも使える9種類
数値でも日付でもないプロパティ(テキスト、セレクト、人など)にも使えるグループです。件数や入力状況を知りたいときはここから選びます。
| 日本語表示 | 英語表記 | 公式の定義 |
|---|---|---|
| オリジナルを表示する | Show original | 関連ページの値をそのまま同じセルに並べて表示する |
| 一意の値を表示する | Show unique values | 選んだプロパティの、重複を除いた値を表示する |
| すべてカウント | Count all | 値の総数を数える |
| 値の数をカウント | Count values | 未入力ではない値の数を数える |
| 一意の値の数をカウント | Count unique values | 重複を除いた値の数を数える |
| 未入力をカウント | Count empty | その値が未入力の関連ページの数を数える |
| 未入力以外をカウント | Count not empty | 値が入っている関連ページの数を数える |
| 未入力の割合 | Percent empty | 値がない関連ページの割合を表示する |
| 未入力以外の割合 | Percent not empty | 値がある関連ページの割合を表示する |
この9つのうち、上2つ(オリジナルを表示する/一意の値を表示する)は計算ではなく表示です。数字ではなく値そのものが並ぶので、集計のつもりで選ぶと目的とずれます。
数値プロパティのときだけ選べる6種類
相手の列が数値プロパティのときに追加で出てくるグループです。金額や工数の集計はここを使います。
| 日本語表示 | 英語表記 | 返る値 |
|---|---|---|
| 合計 | Sum | 関連ページの数値の合計 |
| 平均 | Average | 関連ページの数値の平均 |
| 中央値 | Median | 関連ページの数値の中央値 |
| 最小 | Min | 関連ページの数値の最小値 |
| 最大 | Max | 関連ページの数値の最大値 |
| 範囲 | Range | 関連ページの数値の範囲 |
この6つが選択肢に出てこない場合、たどった先のプロパティが数値になっていません。テキストプロパティに「1000」と打ち込んでいても、Notionから見れば文字列です。相手のデータベース側で、プロパティの種類を数値に変えてから設定し直してください。
日付プロパティのときだけ選べる3種類
相手の列が日付プロパティのときに出てくるグループです。プロジェクトの開始日・終了日をまとめるときに使います。
| 日本語表示 | 英語表記 | 返る値 |
|---|---|---|
| 最も古い日付 | Earliest date | 関連ページのうち一番古い日付 |
| 最も新しい日付 | Latest date | 関連ページのうち一番新しい日付 |
| 期間 | Date range | 最も古い日付から最も新しい日付までの範囲 |
親プロジェクトに「配下のタスクで一番早い開始日」と「一番遅い期限」を出しておくと、親側だけを見て全体の期間が把握できるようになります。タイムラインビューと相性のよい使い方です。
チェックボックスのときだけ選べる4種類
たどった先がチェックボックスのときに出てくるグループです。タスクの完了率を出すときはここを使います。
| 日本語表示 | 英語表記 | 返る値 |
|---|---|---|
| チェックあり | Checked | チェックが入っている件数 |
| チェックなし | Unchecked | チェックが入っていない件数 |
| チェックありの割合 | Percent checked | チェックが入っている割合 |
| チェックなしの割合 | Percent unchecked | チェックが入っていない割合 |
5件のうち2件にチェックが入っている状態で実際に試したところ、チェックありは2、チェックなしは3、チェックありの割合は40%、チェックなしの割合は60%が返りました。完了率をそのまま出したいなら、この「チェックありの割合」がいちばん素直です。
ひとつ落とし穴があって、チェックボックスに「値の数をカウント」を使うと0が返ります。チェックボックスには未入力という状態がなく、オフも「値が入っていない」と見なされるためです。件数を数えたいなら「すべてカウント」を使ってください。
目的から逆引きする「計算」の選び方
22種類を上から順に見て選ぶのは効率が悪いので、やりたいことから引ける形にしておきます。
件数を数えたいとき
「何件つながっているか」を知りたいだけならすべてカウントです。ただし、たどる先のプロパティに未入力が混じる可能性があるなら、値の数をカウントとの違いを意識してください。
よくあるのが、「タスクの件数」を出すつもりで、担当者プロパティをたどってしまう取り違えがよく起きます。件数を数えたいなら、相手のデータベースで必ず値が入っている列(タイトルなど)をたどるのが安全です。
進捗率を出したいとき
未入力以外の割合を使うと、対象の列が埋まっている割合がそのまま出ます。「完了日」プロパティをたどれば、完了日が入っているタスクの割合=進捗率になります。
進捗の判定をチェックボックスではなく日付の入力有無に寄せておくと、いつ終わったのかという情報と進捗率を1つの列で兼ねられます。
すでに完了チェックボックスで運用しているなら、チェックありの割合でそのまま完了率が出ます。どちらでも進捗率は出せるので、日付を残したいかどうかで選んでください。
金額や工数を合計したいとき
合計を選びます。選択肢に出てこないときは、さっきと同じで相手の列が数値になっていないので、そこを直すのが先です。
単価と数量から金額を出しているなら、相手のデータベース側に「金額」の数式プロパティを先に作り、ロールアップではその列をたどります。ロールアップ側で掛け算はできないので、計算は相手側で先に済ませておきます。
関わっている人数を知りたいとき
一意の値の数をカウントを選びます。同じ人が複数のタスクを持っていても1として数えられるので、実人数が出ます。
逆に「延べ担当件数」を出したいなら値の数をカウントです。人数と件数はまったく違う指標なので、どちらを見せたいのかを決めてから選んでください。
値そのものを一覧したいとき
オリジナルを表示するを選ぶと、関連ページの値がセルの中に並びます。集計値ではないので数字としては扱えませんが、「このプロジェクトに誰が関わっているか」を一目で見るには有効です。
重複を消したいなら一意の値を表示するに切り替えます。担当者が10件ぶん並んでセルが読めなくなっている場合は、こちらのほうが実用的です。
ロールアップには2つの仕様上の制限がある
設定の問題ではなく、Notionの仕様として最初からできないことが2つあります。回避策の設計に関わるので、先に知っておく価値があります。
ロールアップのロールアップは作れない
ロールアップした結果を、さらにロールアップすることはできません。公式ヘルプにも、意図しないループが起きる可能性があるため対応していない、と書かれています。
これは3階層のデータベースを作ったときに効いてきます。たとえば「レッスン → コース → 講座」とつないで、レッスンの時間を積み上げて講座の総時間を出したい、という設計です。コースの階層まではロールアップで出せますが、そのロールアップ結果を講座側からさらにロールアップすることはできません。
回避策は2つあります。1つは、中間の階層に数式プロパティを1枚挟むこと。ロールアップの値を数式プロパティで受けてから、上の階層でその数式プロパティをたどります。もう1つは、そもそも階層をまたぐリレーションを直接張ることです。レッスンから講座へ直接リレーションを持たせれば、1段のロールアップで済みます。
ソートできるのは、数値を返す計算のときだけ
ロールアップの列で並べ替えができるのは、数値を返す計算を選んでいるときだけです。これも公式ヘルプに書かれています。
つまり「オリジナルを表示する」「一意の値を表示する」「期間」のように数値以外を返す計算を選んでいると、その列で並べ替えができません。「合計金額の大きい順に並べたい」といった要件があるなら、並べ替えたい列は必ず数値を返す計算にしておく必要があります。
表示用と並べ替え用で目的が違う場合は、ロールアップの列を2本作るのが手っ取り早い解決策です。片方を「オリジナルを表示する」で一覧用に、もう片方を「合計」や「値の数をカウント」で並べ替え用にしておきます。
ロールアップを設定する手順
ここからは実際の操作です。前提として、集計したいデータベース(親)と、集計される側のデータベース(子)の2つがあり、両者がリレーションでつながっている状態から始めます。
手順1:先にリレーションを作る
ロールアップはリレーションがないと設定できません。まだつないでいない場合は、親データベースで新しいプロパティを追加し、種類として「リレーション」を選びます。続いて、つなぎたい子データベースを検索して指定します。
このとき、子データベース側にも対応する列を作るかどうかを聞かれます。子から親をたどりたい場面(タスクから所属プロジェクトを見る、など)は必ず出てくるので、基本的には作っておくことをおすすめします。
作成したら、親の各ページで実際に子ページを紐づけます。ここが空のままだと、このあと何を設定しても集計結果は空になります。
手順2:ロールアップのプロパティを追加する
親データベースの表の右端にある「+」から新しいプロパティを追加し、種類の一覧から「ロールアップ」を選びます。名前は、あとで何を見ている列なのか分かるように「タスク件数」「合計金額」のように具体的に付けておきます。
「ロールアップ」という名前のまま列を増やしていくと、3本目あたりで何がどれか分からなくなります。ここは面倒でも都度リネームしてください。
手順3:3つの選択を順番に指定する
作ったロールアップのセルをクリックすると、設定メニューが開きます。上から順に3つを指定します。
- リレーション:どのリレーション列をたどるかを選びます。親に複数のリレーションがある場合、ここを間違えるとまったく別のデータベースを集計してしまいます
- プロパティ:たどった先のどの列を見るかを選びます。ここで数値の列を選ぶと、次の「計算」に合計や平均が出てきます
- 計算:この記事で扱ってきた22種類から選びます
3つ目まで指定して初めて、セルに数字が表示されます。何も出ないときは、たいてい1つ目か2つ目が未指定のままです。
手順4:想定と合っているかを、1行ずつ確かめる
設定が終わったら、すぐに全体を見て納得するのではなく、中身が分かっている行を1つ選んで検算してください。子ページを3件だけ紐づけたテスト用の行を作り、そこで「3」と出るかを見るのが確実です。
この検算をしておくと、あとから件数が増えたときに「何かおかしい」と気づけるようになります。逆に、最初に検算していないと、ずっと違う数字を正しいものとして運用し続けることになります。
設定したあとに必ず確認する3つのこと
ロールアップは一度設定すると自動で更新されるので、設定した直後の確認が最後の防波堤になります。
1. たどっているリレーションが合っているか
親に複数のリレーションがあるときの取り違えは、数字が「それらしく」出てしまうため発見が遅れます。ロールアップ列の隣にリレーション列を並べて表示し、件数の桁感が一致しているかを見てください。
2. 未入力の行が混じっていないか
「すべてカウント」と「値の数をカウント」の差は、未入力があって初めて表れます。設定したときにたまたま全部埋まっていると、両者の違いに気づけません。
あとから未入力の行が増えたときに数字がずれるので、どちらの定義で使うのかを先に決めてから選ぶと、あとで困りません。
3. 並べ替えが必要な列かどうか
数値を返さない計算では並べ替えができません。ダッシュボードとして使う列なら、作った直後に一度並べ替えを試しておくと、あとで作り直す手間がなくなります。
よくある質問(FAQ)
ロールアップの結果を、さらに別のロールアップで集計できますか?
できません。意図しないループが起きる可能性があるため、と公式ヘルプに理由まで書かれています。3階層を集計したい場合は、中間の階層で数式プロパティに受け直すか、階層をまたぐリレーションを直接張ってください。
「合計」が選択肢に出てきません。
たどった先のプロパティが数値プロパティになっていない可能性が高いです。合計・平均・中央値・最小・最大・範囲の6つは、数値プロパティを選んだときにだけ表示されます。子データベース側でプロパティの種類を数値に変更してから、設定し直してください。
件数を数えたいのですが、「すべてカウント」と「値の数をカウント」のどちらを選ぶべきですか?
公式の定義では、前者が「値の総数」、後者が「未入力ではない値の数」です。つないだページの数をそのまま知りたいなら前者、対象の列が入力済みのものだけを数えたいなら後者になります。判断に迷う場合は、必ず値が入っているタイトル列をたどるようにすると、どちらを選んでも同じ数字になります。
担当者の人数を数えたいのに、タスクの件数が出てしまいます。
「一意の値の数をカウント」を選んでください。重複を除いた値の数を返すため、同じ人が複数のタスクを持っていても1人として数えられます。
ロールアップの列で並べ替えができません。
並べ替えができるのは、数値を返す計算を選んでいるときだけです。「オリジナルを表示する」などを選んでいる場合は、並べ替え用に数値を返すロールアップ列をもう1本作るのが実用的です。
ロールアップの中で掛け算や条件分岐はできますか?
ロールアップで選べるのは公式が用意している集計だけです。単価×数量のような計算が必要なら、子データベース側に数式プロパティを作って先に計算しておき、ロールアップではその列をたどってください。
実際に手を動かすと、違いはすぐに分かります
リレーションとロールアップは、読むより作るほうが早く身につきます。小さなデータベースを2つ用意して、「計算」を切り替えたときに数字がどう変わるかを、手元で確かめてみてください。