DDB
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])
)
)