Поделиться через


DB

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Возвращает амортизацию актива в течение указанного периода с помощью метода фиксированного снижения баланса.

Синтаксис

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

Параметры

Срок Определение
cost Начальная стоимость ресурса.
salvage Значение в конце амортизации (иногда называется значением спасения ресурса). Это значение может быть равно 0.
life Количество периодов, в течение которых ресурс не рекомендуется (иногда называется полезной жизнью актива).
period Период, для которого требуется вычислить амортизацию. Период должен использовать те же единицы, что и время жизни. Должно быть от 1 до жизни (включительно).
month (Необязательно) Количество месяцев в первом году. Если месяц опущен, предполагается, что он равен 12.

Возвращаемое значение

Амортизация за указанный период.

Замечания

  • Метод фиксированного снижения баланса вычисляет амортизацию с фиксированной скоростью. DB использует следующие формулы для вычисления амортизации за период:

    $$(\text{cost} - \text{total амортизация от предыдущих периодов}) \times \text{rate}$$

    где:

    • $\text{rate} = 1 - (((\frac{\text{salvage}}}{\text{cost}})^{{\frac{1}{\text{life}})\text{, округленный до трех десятичных знаков}$
  • Амортизация для первых и последних периодов является особым случаем.

    • В течение первого периода DB использует следующую формулу:

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

    • В течение последнего периода DB использует следующую формулу:

      $$\frac{(\text{cost} - \text{total амортизация от предыдущих периодов}) \times \text{rate} \times (12 - \text{month})}{12}$$

  • период и месяц округляются до ближайшего целого числа.

  • Если возвращается ошибка:

    • стоимость < 0.
    • salvage < 0.
    • жизнь < 1.
    • период < 1 или период > жизни.
    • месяц < 1 или месяц > 12.
  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Примеры

Пример 1

Следующий запрос DAX:

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

Возвращает амортизацию актива за последние два месяца первого года, предполагая, что она будет стоить \0 через 6 лет.

[значение]
166666.666666667

Пример 2

Ниже вычислится общая амортизация всех активов в разных годах за их время существования. Здесь, первый год включает только 7 месяцев амортизации, и в прошлом году только 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)
  )
)