Come evitare un errore di ricorsività

La causa principale dell'errore di ricorsività è rappresentata da calcoli dinamici densi non inclusi nell'intestazione di colonna, compresi quelli presenti nei membri non inclusi nell'istruzione FIX, che vengono eseguiti contemporaneamente. La ricorsività si verifica se alcuni degli altri membri calcolati in modo dinamico contengono una formula che include il membro denso nell'istruzione FIX. Un errore di ricorsività si verifica quando sono presenti più di 128 livelli di ricorsività.

Il motivo principale per cui escludere i membri di calcolo dinamico è migliorare le performance. Inoltre, l'esclusione di tali membri contribuisce a evitare l'errore di ricorsività, garantendo che nell'esportazione venga utilizzato il blocco compresso invece di quello espanso. È possibile evitare l'errore di ricorsività anche cambiando la dimensione densa utilizzata come intestazione di colonna per la quale viene calcolata individualmente ogni colonna definita dall'istruzione FIX. La ricorsività non si verifica perché altri calcoli dinamici densi non inclusi nell'istruzione FIX vengono ignorati, consentendo la corretta esecuzione della regola.

Note:

Non è possibile cambiare l'intestazione di colonna della dimensione densa se il file di esportazione contiene più di 256 colonne.

Ad esempio, è possibile ottenere l'errore Cannot calculate. Essbase Error(1200494): Error executing formula for [Yield%] (line 15): Recursion limit [128] reached se si utilizza il seguente script di calcolo:

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"  "#";
 

Per evitare l'errore, disattivare l'opzione Dinamico sostituendo DataExportDynamicCalc ON; con DataExportDynamicCalc OFF;.