使用 rv_measure_calc 编辑方案值

若要使用 rv_measure_calc 编辑工作表中的方案值,工作表必须属于循环与模块的组合,并且“报告源”类型设置为“嵌入”。
注意:工作表中的单元格根据指定的规则进行修改:

使用传递度量编辑方案值

必须也在 rv_measure_calc 参数中指定当前的度量。属性为:

  • targetmeassure
  • weightmeasure_multiply
  • weightmeasure_divide
  • measure_spread
  • spread_type
  • spread_rounding
  • spread_error_correction
  • ifemptymeasurespread_measure_spread (& ifemptymeasurespread_targetmeasure ifemptymeasurespread_weightmeasure_multiply, ifemptymeasurespread_weightmeasure_divide, Ifemptymeasurespread_spread_rounding, Ifemptymeasurespread_spread_error_correction)

将使用 Infor BI OLAP SplashValue 命令传递值。适用的参数:

  • AllocationMode (0 - 5)
  • TargetCell(元组)
  • SourceCell(元组)
  • Value(数值表达式)
  • Rounding(逻辑表达式)
  • DecimalPlaces(数值表达式)
  • ErrorCorrection(逻辑表达式)

设置 SourceCell(“传递式度量”):

  • 如果未指定“measure_spread”的值,则使用 ifemptyspreadmeasure_spread_measure 属性中定义的度量。
    • 根据这个值,也将对 multiply、divide、target、spread_rounding 和 error_correction 使用 ifemptyspreadmeasure 中定义的属性。
    • 如果 ifemptyspreadmeasure_spread_measure 值也未定义,则使用 rv_measure_spreadlike 中默认的传递度量。
    • 如果 rv_measure_spreadlike 值也未指定,您无法编辑方案值。
  • SplashValue.SourceCell 参数必须设置为 if(not isnull(measure_spread), measure_spread, if(not isnull(ifemptyspreadmeasure_spread_measure), ifemptyspreadmeasure_spread_measure, rv_measure_spreadlike))。

编辑现有值(原始值不等于 0)时:

  • 如果 spread_type 度量设置为“value”,则将使用修改后单元格中的更新值。
  • 如果 spread_type 度量设置为“delta”,则将使用原始值与更新值之间的差值。
  • 将分别使用为 weightmeasure_multiplyweightmeasure_divide 度量指定的值对该值进行相乘和相除,以计算 weighted_difference 度量。
    注意:
    • 如果未定义 weightmeasure_multiply 或 weightmeasure_divide 的值,则必须使用现有值来计算该值。
    • 如果未定义 measure_spread 度量的值,则将使用默认的 rv_measure_spreadlike = like_measure

    如果未定义上述值,则无法保存修改的数据。

  • 将使用 &LIKEFULL weighted_difference like_measure 来更新值。

指定新值(原始值等于 0)时:

  • 将分别使用为 weightmeasure_multiplyweightmeasure_divide 度量指定的值对该值进行相乘和相除,以计算 weighted_difference 度量。
    注意:
    • 如果未定义 weightmeasure_multiply 或 weightmeasure_divide 的值,则必须使用现有值来计算该值。
    • 如果未定义 measure_spread 度量的值,则将使用默认的 rv_measure_spreadlike = like_measure

    如果未定义上述值,则无法保存修改的数据。

  • 将使用 #LIKEFULL weighted_difference like_measure 度量来更新值。
  • 如果 measure_spread 值为空,则使用 ifemptyspreadmeasure_spread_measure 属性中定义的度量。此度量也使用 ifemptyspreadmeasure 中定义的属性来对目标的值进行相乘和相除。未指定值时的传递度量定义为 like_measure = nvl(measure_spread, nvl(ifemptyspreadmeasure_spread_measure, v_measure_spreadlike))。因此,如果此度量的值为空,则使用 rv_measure_spreadlike 中的默认传递度量。如果未定义此度量,则编辑操作会因为没有指定传递标准而失败。

确定值的舍入:

  • 如果 spread_rounding 定义为正整数值,则 SplashValue 命令包含舍入:
    • SplashValue.Rounding 参数:1=1 (true)
    • SplashValue.DecimalPlaces 参数:spread_rounding
  • 如果 spread_rounding 为空、负值或没有定义,则舍入为 0=1。
    • SplashValue.Rounding 参数:0=1 (false)
    • SplashValue.DecimalPlaces 参数:未定义
    注意:如果 measure_spread 为空,则使用 ifemptyspreadmeasure_spread_rounding 参数。
  • 以整数值(如预测的汽车数)传递结果的示例:
    <Table>
    <Row name="[SOP_FREV]">
    <Property name="targetmeasure" value="[SOP_FMI]" /><Property name="weightmeasure_divide" value="[SOP_FSELL]" />
    <Property name="measure_spread" value="[SOP_FUNITS]" /><Property name="spread_type" value="value" />
    <Property name="spread_rounding" value="0" /></Row>
    </Table>

设置纠错:

  • 如果 spread_error_correction 为 TRUE 或者未定义,SplashValue 命令将包含纠错功能,即:一个基本元素可以获得取整后的值,确保所有传递结果的和等于(聚合)分散值。SplashValue.ErrorCorrection 参数设为 1=1 (true)。
  • 如果 spread_error_correction 为 FALSE,则 SplashValue 命令不包含纠错功能。SplashValue.ErrorCorrection 参数设为 0=1 (false)。
注意:如果 measure_spread 为空,则使用 ifemptyspreadmeasure_spread_error_correction 参数。

已编辑但未提交到 OLAP(使用重新计算选项)的单元格将带有蓝色背景和编辑标志。使用“重新计算”选项来更新这些编辑时,这些编辑的单元格将恢复为标准格式。

但是,如果定义了计算规则(即,未在 rv_measure_calc measure 中为单元格定义非计算目标度量),则在重新计算数据时,OLAP 将放弃编辑内容并保留单元格的原始值。