Notionの関数で「map」って出てくると、なんだか難しそうに見えませんか?
私も最初は構えてしまったんですが、使ってみると「リレーション先のデータを取り出すときにめちゃくちゃ便利」なんです。ロールアップより書くのは面倒ですが、その分自由度が高い。今回はリレーションでmap関数を使うパターンに絞ってまとめてみます。
基本のmap関数の使い方
例として、通販サイトごとの集計を出してみます。
「購入元」「入力用」のデータベースを作り、リレーションさせます。

①リレーション先のタイトルを表示する

リレーション先を指定して.map(current)とすると、リレーション先のタイトルがリストで返ってきます。リレーション列と同じ内容が表示されるので、「ちゃんと取れてるな」と確認できます。
currentは現在参照しているリストをそのまま読み取るという意味なので、入力用のタイトルが返ってきました。
構文リスト.map(current)
prop("入力用").map(current)②タイトル以外の列を表示する

.map(current.列名)とすると、タイトルではなく指定した列の値がリストで返ってきます。
プロパティの編集で数値の形式を「円」に変更しました。
構文リスト.map(current.列名)
prop("入力用").map(current.prop("金額"))③条件で絞り込む(filter)

filter関数もリストを扱う関数で、条件がtrueになるリストを返します。filterを先に使うと、条件に合うものだけを抽出してから表示することができます。
ここでは「タグがファッションのもの」だけを絞り込んで、その金額を取り出しています。
構文リスト.filter(current.条件)
/*タグが「ファッション」の列をフィルター*/
prop("入力用").filter(current.prop("タグ") == "ファッション")
/*フィルターされたリストの「金額」を表示*/
.map(current.prop("金額"))他の関数と組み合わせて集計する

mapで取り出した値をそのまま表示するだけでなく、合計や件数を出すこともできます。ギャラリービューにすればダッシュボードっぽい見た目にもできますよ。
④合計値を出す(sum)

項目ごとの集計をするには、②で表示させた金額リストの値をsum関数で合計します。リスト.sum()とすることでリスト内の値を全て合計できます。
構文リスト.sum()
prop("入力用").map(current.prop("金額")).sum()⑤件数をカウントする(length)

項目ごとの件数をカウントするには、length関数でリストの値をカウントします。
件数が知りたいだけならmapでタイトルを取り出してカウントすればOK。
見た目を整えるためにプロパティの編集で数値の形式を「数値」に戻し、+"件"で単位を表示しています。
構文リスト.length()
prop("入力用").map(current).length() + "件"おわりに
私がよく使うmap関数のパターンをまとめてみました。特に、合計や件数を出してダッシュボード風にするのがお気に入りです。これを応用すると、日付でフィルターして月ごとの集計を出すこともできます。
月別×カテゴリ別の集計はこちらの記事で詳しく解説しています。

map関数とリレーションの活用法はまだまだ広がりそうなので、新しい使い方を見つけたらまた書きますね。
なにかの参考になれば嬉しいです!

