【Notion】map関数の使い方|リレーション先のデータを自在に扱う

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関数とリレーションの活用法はまだまだ広がりそうなので、新しい使い方を見つけたらまた書きますね。

なにかの参考になれば嬉しいです!

ブログランキング・にほんブログ村へ
↑クリックしてもらえると励みになります!
よかったらシェアしてね!
目次