DB

适用于:计算列计算表Measure视觉计算

使用 fixed递减余额方法返回指定时间段内资产的折旧值。

语法

DB(<cost>, <salvage>, <life>, <period>[, <month>])

参数

术语 定义
cost 资产的初始成本。
salvage 折旧结束时的 value(有时称为资产的打捞 value)。 此 value 可以为 0。
life 资产被贬值的时间段数(有时称为资产的有用寿命)。
period 要 calculate 折旧的时间段。 句点必须使用与生命相同的单位。 必须介于 1 and 生命(含)之间。
month (可选)firstyear中的月数。 省略 Ifmonth,假定为 12。

返回 Value

指定时间段内折旧值。

言论

  • fixed递减余额方法计算 fixedrate折旧。 DB 使用以下公式在一段时间内 calculate 折旧:

    $$(\text{cost} - \text{total depreciation from prior periods}) \times \text{rate}$$

    哪里:

    • $\text{rate} = 1 - ((\frac{\text{salvage}}}{\text{cost}})^{(\frac{1}{\text{life}})})\text{, rounded to three decimal places}$
  • first and last 周期的折旧是一种特殊情况。

    • 对于 first 期间,DB 使用此公式:

      $$\frac{\text{cost} \times \text{rate} \times \text{month}}{12}$$

    • 对于 last 期间,DB 使用此公式:

      $$\frac{(\text{cost} - \text{total depreciation from priors}) \times \text{rate} \times (12 - \text{month})}{12}$$

  • 句点 andmonth 舍入为最接近的整数。

  • if返回 error:

    • 成本 < 0。
    • 打捞 < 0。
    • 生活 < 1.
    • 期间 < 1 or 期 > 生活。
    • month < 1 ormonth> 12。
  • 在计算列 or 行级别安全性 (RLS) 规则中使用时,not 支持在 DirectQuery 模式下使用此函数。

例子

示例 1

以下 DAX 查询:

EVALUATE
{
  DB(1000000, 0, 6, 1, 2)
}

返回 firstyearlast 两个月的资产折旧值,假设在 6 年后将值 \$0。

[Value]
166666.666666667

示例 2

下面计算 all 资产在其生存期内的不同年份的总折旧。 此处,firstyear 仅包括 7 个月的折旧,andlastyear 仅包括 5 个月。

DEFINE
VAR NumDepreciationPeriods = MAX(Asset[LifeTimeYears])+1
VAR DepreciationPeriods = GENERATESERIES(1, NumDepreciationPeriods)
EVALUATE
ADDCOLUMNS (
  DepreciationPeriods,
  "Current Period Total Depreciation",
  SUMX (
    FILTER (
      Asset,
      [Value] <= [LifetimeYears]+1
    ),
    DB([InitialCost], [SalvageValue], [LifetimeYears], [Value], 7)
  )
)