フォームでデータインポートする際にメモリ不足エラーが起きる

Form Operation

質問

フォームでデータインポートする際にメモリ不足エラーが生じます。改善ポイントを教えてください。

回答

  1. 縦軸・横軸に配した各ディメンションのメンバリストに、データインポート対象メンバだけでなくその祖先メンバが含まれていないかご確認下さい。
    インポート用フォームでは、インポート対象メンバのみが含まれるメンバリスト使用することをお勧めします(通常はリーフメンバのみを含むメンバリストを用います)。

    データが入力されるメンバだけでなくその先祖メンバもメンバリストに含まれていると、データが入力された時に親メンバのデータもフォーム上に表示する必要があるので、データが増幅されます。
    例えばメンバ階層が3レベルとすると、1つのリーフメンバにデータが入力されたときに、先祖メンバ分も含めて、3件のデータが生成されます。
    ディメンションが複数あるならばそれぞれについて同様に増幅されます。インポート用フォームの縦軸・横軸に合計4つのディメンションが配され、それぞれについてそれぞれ3レベルのメンバ階層があるとすれば、最大で、入力データ1件につき3の4乗件すなわち81件のデータが生成されます。
    入力データ件数が多い場合、これがメモリ不足を引き起こす可能性があります。この事象は「デ―タ爆発(Data explosion)」とよばれ、fusion_place に限らず、すべての多次元データベースにおいて生じます。

  2. データインポート用のフォームでは、ループ仕様の「表示条件 > データ無しの時は非表示」にチェックしてください。
    複数のループ仕様で同項目がチェックされていないと、データの有無にかかわらず行・列が表示されるので、膨大な数の行・列が表示のために生成されます。これもメモリ不足の理由になりえます。