Notionで家計簿を作っていると、「カテゴリごとの支出は見えるけど、月別でも見たいな…」ってなりませんか?
私もまさにそれで、カテゴリ別の集計はよく使っていたんですが、月ごとの推移も一緒に見たくなりました。そこで今回は、map関数とfilter関数を組み合わせて「カテゴリ×月別」の自動集計を作ってみます。
完成イメージ
まずは完成形から。
3月・4月に発生したカテゴリごとの月別合計と、カテゴリごとの全合計が一覧で確認できます。

これができると、「今月は食費が多かったな」「先月より交際費が減ったな」など、月ごとの変化がパッと見てわかるようになります。
作り方
カテゴリーデータベースを作成

まずは、カテゴリーのデータベースを作成します。
単純なタグ(セレクト)ではなく、別のデータベースにすることで、カテゴリ単位で集計や分析ができるようになります。
カテゴリーは一回設定すれば使いまわせるので、アイコンもつけてみます。
入力用のデータベースを作成

入力項目
- 日付
- 金額
- カテゴリー(リレーション)
カテゴリーデータベースと相互リレーションを設定したら、月別フィルターのために「月」列を追加しておきます。
構文month(date)
month(prop("日付"))month()は日付から月だけを取り出す関数です。この列を使って、あとで「3月だけ」「4月だけ」とフィルターをかけます。
map関数、filter関数を設定

カテゴリーデータベースに「3月合計」「4月合計」など、月ごとの集計列を追加します。
一個ずつ組み立てると分かりやすいと思いますので、コメント付きで数式を記載します。
構文リスト.filter(current.条件)リスト.map(current.列名)
/*「集計」データベースに対して*/
prop("集計")
/*「月」列を3でフィルターし、*/
.filter(current.prop("月") == 3)
/*該当する「金額」列の値を表示し*/
.map(current.prop("金額"))
/*値を合計する*/
.sum()あとはプロパティをコピーしてフィルターする数字を変更すれば、対応する月ごとの集計ができるので、12ヶ月分作成します。画像の例ではついでにフィルターなしの合計列も作成してみました。
最後の関数sum()を変更すればカウントや平均値も出せますよ。
map関数の基本的な使い方はこちらも参考にしてみてください。

おわりに
カテゴリ×月別の集計ができると、家計簿がグッとダッシュボードっぽくなります。
正直なところ、列が横に増えていくので12ヶ月分が限界かなとは思いますが…一度数式を書いてしまえば、あとは入力するだけなので便利です。
年ごとにデータベースを分けるとか、ビューで表示する月を絞るとか、工夫次第でもっと見やすくなるかもしれません。また試したら追記しますね。
なにかの参考になれば嬉しいです!

