7️⃣

Notionのロールアップと関数による参照回数の限界を発見したのでまとめてみた

⚠️
2023/9/23 現在、Formula2.0リリースに伴い、最大参照回数が変更されており、が最大数になっている可能性が高いです。 また、再帰Formula&Rollupでは最大4階層の計算となっております。 といった具合で、参照に2回分消費されていると考えると妥当でしょうか。
↑のようにといったメッセージが出るようになりました。 再帰Formula&Rollupを利用して実装されている場合、 Formula1.0から自動トランスレーションされた直後は今まで通り動きますが、 一度でも関数を開くと 4階層までの計算になります。 後日Formula2.0での再帰関数の実現方法を記載します。
 
以下内容は、古くなっております。ご注意下さい。
 
💬
どうもをやっております熊倉です

薄々気づいていましたが、再帰ロールアップの限界によってやりたいことが出来ないケースが出てきましたのでまとめておきます。
ディープなNotionerの皆様、気をつけて下さい。
 
 

補足:再帰ロールアップ構造について

以下のような構造を作る事で、子から親へ、またその親へと情報伝搬が可能になります
    • 自分にリレーションを貼る事で出来る親子リレーション構造
    • ロールアップするためのデータ(何でも良い
    • が空だったら、を参照し、あればを参照する
    • 子の をロールアップ
 

この前提を踏まえテスト内容をご覧ください

9世代まで親子関係を構築し、ロールアップと関数を組み合わせ循環参照構造を作り実験をしてみました。
 
 
あれ・・?本来であれば、入っていて欲しい所にデータが入ってない。。
どうやら、の参照までしか対応してなそうだぞ・・?
 
ん?参照回数が問題なのか、参照の深さが問題なのか、どっちなんだろう
 

試してみた

  • を参照している
    • ※ 実体への直接参照
    • の結果は変わらず
  • を参照している
    • ※ いわゆる参照渡し
    • の時に参照がロスト
 
従って、参照回数ではなく、に対して制限がかかるようだ。
 
ということは、ロールアップ関係なく関数で参照渡ししていくだけで再現できるのでは・・?
 
 

やってみた

から参照1、2・・・8までどんどん参照渡ししていきます。すると・・?
参照8でデータが表示されなくなりました!
 
いやはや、仮説検証終了ですね。
 

✅ まとめ - Notionのまでの制限がある

 
思いがけない制限に面食らいましたが、今後はこの制限を踏まえて設計をしていきたいと思います。
99%の方はこんな事しないと思いますが、辿り着いた1%のあなたの参考になりましたら幸いです。
 
それでは、ありがとうございましたー!