Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to: 
Calculated column 
Calculated table 
Measure 
Visual calculation
Returns the depreciation of an asset for a specified period using the double-declining balance method or some other method you specify.
Syntax
DDB(<cost>, <salvage>, <life>, <period>[, <factor>])
Parameters
| Term | Definition | 
|---|---|
cost | 
The initial cost of the asset. | 
salvage | 
The value at the end of the depreciation (sometimes called the salvage value of the asset). This value can be 0. | 
life | 
The number of periods over which the asset is being depreciated (sometimes called the useful life of the asset). | 
period | 
The period for which you want to calculate the depreciation. Period must use the same units as life. Must be between 1 and life (inclusive). | 
factor | 
(Optional) The rate at which the balance declines. If factor is omitted, it is assumed to be 2 (the double-declining balance method). | 
Return Value
The depreciation over the specified period.
Remarks
The double-declining balance method computes depreciation at an accelerated rate. Depreciation is highest in the first period and decreases in successive periods. DDB uses the following formula to calculate depreciation for a period:
$$\text{Min}((\text{cost} - \text{total depreciation from prior periods}) \times (\frac{\text{factor}}{\text{life}}),(\text{cost} - \text{salvage} - \text{total depreciation from prior periods}))$$
Change factor if you do not want to use the double-declining balance method.
Use the VDB function if you want to switch to the straight-line depreciation method when depreciation is greater than the declining balance calculation.
period is rounded to the nearest integer.
An error is returned if:
- cost < 0.
 - salvage < 0.
 - life < 1.
 - period < 1 or period > life.
 - factor ≤ 0.
 
This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.
Examples
Example 1
The following DAX query:
EVALUATE
{
  DDB(1000000, 0, 10, 5, 1.5)
}
Returns an asset's depreciation in the 5$^{th}$ year, assuming it will be worth \$0 after 10 years. This calculation uses a factor of 1.5.
| [Value] | 
|---|
| 78300.9375 | 
Example 2
The following calculates the total depreciation of all assets in different years over their lifetimes. This calculation uses the default factor of 2 (the double-declining balance method).
DEFINE
VAR NumDepreciationPeriods = MAX(Asset[LifeTimeYears])
VAR DepreciationPeriods = GENERATESERIES(1, NumDepreciationPeriods)
EVALUATE
  ADDCOLUMNS (
  DepreciationPeriods,
  "Current Period Total Depreciation",
  SUMX (
    FILTER (
      Asset,
      [Value] <= [LifetimeYears]
    ),
    DDB([InitialCost], [SalvageValue], [LifetimeYears], [Value])
  )
)