避免递归错误

递归错误的主要原因是密集动态计算没有包括在列标题中、包括 FIX 语句中未包含成员、同时进行计算。如果其他一些动态计算成员的公式在 FIX 语句中包含密集成员,则会发生递归。如果递归超过 128 级,则会出现递归错误。

排除动态计算成员的主要原因是为了提高性能。此外,排除动态计算成员可以确保导出使用压缩块而不是扩展块,从而帮您避免递归错误。还可以通过更改用作为列标题的密集维来避免递归错误,对于列标题,FIX 语句定义的每个列都是单独计算的。这样便不会出现递归,因为没有包含在 FIX 语句中的其他密集动态计算将被忽略,从而使规则能够成功运行。

Note:

如果导出文件包含的列超过 256 个,则无法更改密集维列标题。

例如,如果使用以下计算脚本,您会遇到无法计算。Essbase 错误(1200494): 执行 [Yield%] 的公式时出错 (第 15 行): 达到了递归限制 [128] 错误:

SET DataExportOptions
     {
     DATAEXPORTCOLFORMAT ON;
     DATAEXPORTDIMHEADER ON;
     DATAEXPORTDRYRUN OFF;
     DataExportRelationalFile OFF;
     DataExportNonExistingBlocks OFF;
     DataExportLevel ALL;
     DATAEXPORTCOLHEADER "Period";
     DATAEXPORTOVERWRITEFILE ON;
     DataExportDynamicCalc ON;
     };

FIX ("Yield%",@Relative("Change Over",0),@Relative("Currency",0),@Relative("Entity",0),@Relative("Product",0),@Relative("CostCentre",0),"Jan","Actual_Total",@Relative("View",0),"Working","Fy20")

DATAEXPORT "File" "," "/u03/inbox/data/ExportDataFile.txt"  "#";
 

要避免此错误,请将 DataExportDynamicCalc ON; 更改为 DataExportDynamicCalc OFF; 来关闭“动态”选项。