Изразите за анализ на данни (DAX) разполагат с 35 функции, които са специално предназначени за агрегиране и сравняване на данни с течение на времето. За разлика от функциите за дата и час на DAX, функциите за интелигентно време всъщност нямат нищо подобно в Excel. Това е така, защото функциите за интелигентно време работят с данни, които се променят непрекъснато, в зависимост от контекста, който изберете в обобщените таблици и визуализациите на Power View.
За да работите с функции за интелигентно време, трябва да имате таблица с дати, включена във вашия модел на данни. Таблицата с дати трябва да съдържа колона с по един ред за всеки ден от всяка година, включена във вашите данни. Тази колона се счита за колона "Дата" (въпреки че може да бъде именувана както желаете). Много функции за интелигентно време изискват колоната за дата, за да се изчисли според датите, които сте избрали като полета в отчет. Ако например имате мярка, която изчислява затварящ баланс в края на тримесечието с помощта на функцията CLOSINGBALANCEQTR, за да може Power Pivot да разбере кога наистина е краят на тримесечието, той трябва да посочи колоната за дата в таблицата с дати, за да знае кога започва и свършва тримесечието. За да научите повече за таблиците с дати, прегледайте Разбиране и създаване на таблици с дати в Power Pivot в Excel.
Функции
Функции, които връщат единична дата
Функциите в тази категория връщат една дата. След това резултатът може да се използва като аргументи на други функции.
Първите две функции в тази категория връщат първата или последната дата в Date_Column в текущия контекст. Това може да е полезно, когато искате да намерите първата или последната дата, на която сте имали транзакция от определен тип. Тези функции приемат само един аргумент – името на колоната за дата в таблицата с дати.
-
FIRSTDATE (Date_Column)
-
ПОСЛЕДНА ДАТА (Date_Column)
Следващите две функции в тази категория намират първата или последната дата (или друга стойност на колона), където един израз има непразна стойност. Това най-често се използва в ситуации като наличности, където искате да получите последната сума на наличностите и не знаете кога е бил взет последният инвентар.
-
FIRSTNONBLANK (Date_Column, Expression)
-
LASTNONBLANK (Date_Column, Израз)
Още шест функции, които връщат една дата, са функциите, които връщат първата или последната дата на месец, тримесечие или година в текущия контекст на изчислението.
-
STARTOFMONTH (Date_Column)
-
НАЧАЛНАКВАРТИНА (Date_Column)
-
STARTOFYEAR (Date_Column [,YE_Date])
-
ENDOFMONTH (Date_Column)
-
КРАЙНА ЧЕТВЪРТИНА (Date_Column)
-
КРАЙНА ГОДИНА (Date_Column [,YE_Date])
Функции, които връщат таблица с дати
Има шестнадесет функции за интелигентно време, които връщат таблица с дати. Най-често тези функции ще се използват като аргумент SetFilter за функцията CALCULATE . Точно както всички функции за интелигентно време в DAX, всяка функция приема колона с дати като един от своите аргументи.
Първите осем функции в тази категория започват с колона за дата в текущия контекст. Ако например използвате мярка в обобщена таблица, може да има месец или година в етикетите на колоните или етикетите на редовете. Нетният ефект е колоната за дата е филтрирана, така че да включва само датите за текущия контекст. Започвайки от този текущ контекст, тези осем функции след това изчисляват предишния (или следващия) ден, месец, тримесечие или година и връщат тези дати под формата на таблица с една колона. "Предишните" функции работят назад от първата дата в текущия контекст, а "следващите" функции се преместват напред от последната дата в текущия контекст.
-
PREVIOUSDAY (Date_Column)
-
PREVIOUSMONTH (Date_Column)
-
ПРЕДИШЕН КВАРТЕР (Date_Column)
-
ПРЕДИШНА ГОДИНА (Date_Column [,YE_Date])
-
СЛЕДВАЩИЯ ДЕН (Date_Column)
-
NEXTMONTH (Date_Column)
-
СЛЕДВАЩ КВАРТЕР (Date_Column)
-
СЛЕДВАЩАТА ГОДИНА (Date_Column [,YE_Date])
Следващите четири функции в тази категория са сходни, но вместо да изчисляват предишен (или следващ) период, те изчисляват набора от дати в периода, който е "месец към дата" (или "тримесечие до дата", "година към дата", или в същия период на предишната година). Всички тези функции извършват своите изчисления, като използват последната дата в текущия контекст. Обърнете внимание, че SAMEPERIODLASTYEAR изисква текущият контекст да съдържа последователен набор от дати. Ако текущият контекст не е последователен набор от дати, SAMEPERIODLASTYEAR ще върне грешка.
-
DATESMTD (Date_Column)
-
DATESQTD (Date_Column)
-
DATESYTD (Date_Column [,YE_Date])
-
SAMEPERIODLASTYEAR (Date_Column)
Последните четири функции в тази категория са малко по-сложни и малко по-мощни. Тези функции се използват за преминаване от набора от дати, които са в текущия контекст, към нов набор от дати.
-
DATEADD (Date_Column, Number_of_Intervals, интервал)
-
DATESBETWEEN (Date_Column, Start_Date, End_Date)
-
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, интервал)
-
PARALLELPERIOD (Date_Column, Number_of_Intervals, интервал)
DATESBETWEEN изчислява набора от дати между указаната начална и крайна дата. Останалите три функции отместват определен брой времеви интервали от текущия контекст. Интервалът може да бъде ден, месец, тримесечие или година. Тези функции улесняват смяната на времевия интервал за изчисление с някое от следните неща:
-
Върни се след две години
-
Връщане един месец назад
-
Напред с три четвърти
-
Връщане 14 дни
-
Напред 28 дни
Във всеки случай трябва само да зададете кой интервал и колко от тези интервали да се изместят. Положителен интервал ще се придвижи напред във времето, докато отрицателен интервал ще се върне назад във времето. Самият интервал е зададен с ключова дума ДЕН, МЕСЕЦ, ТРИМЕСЕЧИЕ или ГОДИНА. Тези ключови думи не са низове, така че не трябва да са в кавички.
Функции, които оценяват изрази за определен период от време
Тази категория функции оценява израз за определен период от време. Можете да изпълните същото нещо с помощта на CALCULATE и други функции за интелигентно време. Например
= TOTALMTD (израз, Date_Column [, SetFilter])
е точно същото като:
= CALCULATE (Израз, DATESMTD (Date_Column)[, SetFilter])
По-лесно е обаче да използвате тези функции за интелигентно време, когато те са подходящи за проблема, който трябва да бъде решен:
-
TOTALMTD (Израз, Date_Column [, SetFilter])
-
TOTALQTD (израз, Date_Column [, SetFilter])
-
TOTALYTD (израз, Date_Column [, SetFilter] [,YE_Date]) *
Също така в тази категория има група функции, които изчисляват отварящи и затварящи баланси. Има някои концепции, които трябва да разберете с тези конкретни функции. Първо, както може да сметне за очевидно, началното салдо за всеки период е същото като крайното салдо за предишния период. Крайното салдо включва всички данни до края на периода, докато началното салдо не включва данни от текущия период.
Тези функции винаги връщат стойността на израз, изчислен за определен момент от време. Моментът във времето, от който се интересуваме, винаги е последната възможна стойност на дата в календарен период. Началното салдо се базира на последната дата от предишния период, докато затварящата наличност се базира на последната дата в текущия период. Текущият период винаги се определя от последната дата в контекста на текущата дата.
-
OPENINGBALANCEMONTH (израз, Date_Column [,SetFilter])
-
ОТВАРЯЩА КВАРТЕТА Тримесечие (израз, Date_Column [,SetFilter])
-
OPENINGBALANCEYEAR (израз, Date_Column [,SetFilter] [,YE_Date])
-
CLOSINGBALANCEMONTH (Израз, Date_Column [,SetFilter])
-
CLOSINGBALANCEQUARTER (Израз, Date_Column [,SetFilter])
-
CLOSINGBALANCEYEAR (израз, Date_Column [,SetFilter] [,YE_Date])
Допълнителни ресурси
Статии: Разбиране и създаване на таблици с дати в Power Pivot в Excel
Справка: Справка за функцията DAXв Office.com
Примери: Моделиране и анализ на данни за печалби и загуби с Microsoft PowerPivot в Excel