Този раздел предоставя връзки към примери, които демонстрират използването на формулите на DAX в следните сценарии.
- Извършване на сложни изчисления
- Работа с текст и дати
- Условни стойности и тестване за грешки
- Използване на интелигентно време
- Класиране и сравняване на стойности
В тази статия
Първи стъпки
Посетете wiki сайта на ресурсния център на DAX , където можете да намерите всякакъв вид информация за DAX, включително блогове, примери, технически документи и видеоклипове, предоставени от водещи професионалисти в отрасъла и Microsoft.
Сценарии: Извършване на сложни изчисления
Формулите DAX могат да извършват сложни изчисления, които включват агрегиране по избор, филтриране и използване на условни стойности. Този раздел предоставя примери как да направите първите стъпки в изчисленията по избор.
Създаване на потребителски изчисления за обобщена таблица
CALCULATE и CALCULATETABLE са мощни, гъвкави функции, които са полезни за дефиниране на изчисляеми полета. Тези функции ви позволяват да променяте контекста, в който ще се извършва изчислението. Можете също да персонализирате типа на агрегирането или математическата операция, която искате да се изпълни. Вижте следните теми за примери.
Прилагане на филтър към формула
На повечето места, където DAX функция взема таблица като аргумент, обикновено можете вместо това да предадете филтрирана таблица, като използвате функцията FILTER вместо името на таблицата или като зададете израз за филтър като един от аргументите на функцията. Следващите теми дават примери как се създават филтри и как филтрите влияят върху резултатите от формулите. За повече информация вж. "Филтриране на данни във формули на DAX".
Функцията FILTER ви позволява да зададете критерии за филтриране с помощта на израз, докато другите функции са проектирани специално за филтриране на празните стойности.
Избирателно премахване на филтри за създаване на динамично съотношение
Чрез създаването на динамични филтри във формули можете лесно да отговаряте на следните въпроси:
- Какъв е приносът на продажбите на текущия продукт към общите продажби за годината?
- Колко това подразделение е допринесло за общата печалба за всички оперативни години в сравнение с други дивизии?
Формулите, които използвате в обобщена таблица, могат да бъдат засегнати от контекста на обобщената таблица, но можете избирателно да променяте контекста, като добавяте или премахвате филтри. Примерът в темата ALL ви показва как да направите това. За да намерите съотношението на продажбите за конкретен дистрибутор спрямо продажбите на всички дистрибутори, можете да създадете мярка, която изчислява стойността за текущия контекст, разделена на стойността за контекста ALL.
Темата ALLEXCEPT дава пример как избирателно да изчиствате филтри във формула. И двата примера ще ви преведат през начина, по който се променят резултатите в зависимост от проекта на обобщената таблица.
За други примери как да се изчисляват съотношения и проценти вж. следните теми:
Използване на стойност от външен цикъл
В допълнение към използването на стойности от текущия контекст в изчисленията, DAX може да използва стойност от предишен цикъл при създаването на набор от свързани изчисления. Следващата тема предоставя преглед на това как да създадете формула, която препраща към стойност от външен цикъл. Функцията EARLIER поддържа до две нива на вложени цикли.
За да научите повече за контекста на реда и свързаните таблици и как да използвате това понятие във формули, вижте "Контекст във формули на DAX".
Сценарии: Работа с текст и дати
Този раздел предоставя връзки към справочни теми за DAX, които съдържат примери за често срещани сценарии, включващи работа с текст, извличане и съставяне на стойности за дата и час или създаване на стойности на базата на условие.
Създаване на ключова колона чрез конкатенация
Power Pivot не позволява комбинирани ключове; Следователно, ако имате комбинирани ключове във вашия източник на данни, може да се наложи да ги комбинирате в една колона с ключ. Следващата тема дава един пример как да създадете изчисляема колона на базата на комбиниран ключ.
Compose дата въз основа на части от дата, извлечени от текстова дата
Power Pivot използва данни от тип дата/час на SQL Server, за да работи с дати; следователно, ако вашите външни данни съдържат дати, които са форматирани по различен начин – например ако вашите дати са написани в регионален формат на дата, който не се разпознава от машината за данни на Power Pivot, или ако вашите данни използват целочислени заместващи ключове – може да се наложи да използвате DAX формула, за да извлечете частите от датата и след това да съставите частите във валидна дата/ Представяне на времето.
Ако например имате колона с дати, които са представени като цяло число и след това импортирани като текстов низ, можете да преобразувате низа в стойност за дата/час с помощта на следната формула:
=DATE(RIGHT([стойност1];4);LEFT([стойност1];2);MID([стойност1];2))
| "стойност1" | Result |
|---|---|
| 01032009 | 1/3/2009 |
| 12132008 | 12/13/2008 |
| 06252007 | 6/25/2007 |
Следните теми предоставят повече информация за функциите, използвани за извличане и съставяне на дати.
Дефиниране на формат за дата или числа по избор
Ако вашите данни съдържат дати или числа, които не са представени в един от стандартните текстови формати на Windows, можете да дефинирате формат по избор, за да сте сигурни, че стойностите се обработват правилно. Тези формати се използват при преобразуване на стойности в низове или от низове. Следните теми също предоставят подробен списък на предварително зададените формати, налични за работа с дати и числа.
- Предварително определени числови формати за функцията FORMAT
- Цифрови формати по избор за функцията FORMAT
- Предварително определени формати за дата/час за функцията FORMAT
- Формати дата и час по избор за функцията FORMAT
Промяна на типовете данни с помощта на формула
В Power Pivot типът на данните на резултата се определя от колоните източник и не може да зададете изрично типа на данните на резултата, защото оптималният тип на данните се определя от Power Pivot. Можете обаче да използвате неявното преобразуване на типа данни, извършвано от Power Pivot, за да управлявате типа на изходните данни.
- За да преобразувате дата или числов низ в число, умножете по 1,0. Например следващата формула изчислява текущата дата минус 3 дни и след това извежда съответната целочислена стойност.
=(TODAY()-3)*1,0 - За да конвертирате дата, число или валутна стойност в низ, комбинирайте стойността с празен низ. Например следващата формула връща днешната дата като низ.
=""& TODAY()
Следните функции могат също да се използват, за да се гарантира, че определен тип данни ще бъде върнат:
Преобразуване на реални числа в цели числа
- Функция ROUND
- Функция CEILING
-
Функция FLOOR
Преобразуване на реални числа, цели числа или дати в низове - Функция FIXED
-
Функция FORMAT
Преобразуване на низове в реални числа или дати - VALUE функция
- DATEVALUE функция
- TIMEVALUE функция
Сценарий: Условни стойности и тестване за грешки
Подобно на Excel, DAX има функции, които ви позволяват да проверявате стойности в данните и да връщате различна стойност на базата на условие. Можете например да създадете изчисляема колона, която обозначава дистрибуторите като "Предпочитани " или "Стойност" в зависимост от годишната сума на продажбите. Функциите, които проверяват стойности, са полезни и за проверка на диапазона или типа на стойностите, за да се предотвратят неочаквани грешки в данните да нарушат изчисленията.
Създаване на стойност на базата на условие
Можете да използвате вложени условия IF, за да проверявате стойности и да генерирате условно нови стойности. Следните теми съдържат някои прости примери за условна обработка и условни стойности:
Проверка за грешки във формула
За разлика от Excel, не може да имате валидни стойности в един ред на изчисляема колона и невалидни стойности в друг ред. Т.е. ако има грешка в която и да е част от колона на Power Pivot, цялата колона се маркира с грешка, така че винаги трябва да коригирате грешки във формули, които водят до невалидни стойности.
Ако например създадете формула, която дели на нула, може да получите безкрайност или грешка. Някои формули също така няма да са успешни, ако функцията се натъкне на празна стойност, когато очаква числова стойност. Докато разработвате своя модел на данни, най-добре е да оставите грешките да се появяват, така че да можете да щракнете върху съобщението и да отстраните проблема. Когато публикувате работни книги обаче, трябва да включите обработката на грешки, за да предотвратите неочаквани стойности да доведат до неуспешни изчисления.
За да избегнете връщането на грешки в изчисляема колона, използвате комбинация от логически и информационни функции, за да проверявате за грешки и винаги да връщате валидни стойности. Следните теми предоставят някои прости примери как да направите това в DAX:
Сценарии: Използване на интелигентно време
Функциите за интелигентно време на DAX включват функции, които ви помагат да извличате дати или диапазони от дати от вашите данни. След това можете да използвате тези дати или диапазони от дати за изчисляване на стойности за подобни периоди. Функциите за интелигентно време включват също функции, които работят със стандартни интервали за дата, за да ви позволят да сравнявате стойности по месеци, години или тримесечия. Можете също да създадете формула, която сравнява стойности за първата и последната дата за зададен период.
За списък на всички функции за интелигентно време вж. Функции за интелигентно време (DAX). За съвети как да използвате ефективно датите и часовете в анализ на Power Pivot, вж. "Дати" в Power Pivot.
Изчисляване на кумулативни продажби
Следващите теми съдържат примери как се изчисляват крайните и началните баланси. Примерите ви позволяват да създавате текущи баланси през различни интервали, като например дни, месеци, тримесечия или години.
- Функция CLOSINGBALANCEMONTH, функция CLOSINGBALANCEQUARTER, функция CLOSINGBALANCEYEAR
- Функция OPENINGBALANCEMONTH, функция OPENINGBALANCEQUARTER, функция OPENINGBALANCEYEAR
Сравняване на стойности във времето
Следващите теми съдържат примери как се сравняват сумите за различни периоди от време. Периодите от време по подразбиране, поддържани от DAX, са месеци, тримесечия и години.
- Функция PREVIOUSMONTH, PREVIOUSQUARTER,функция PREVIOUSYEAR
- Функция TOTALMTD, Функция TOTALQTD, Функция TOTALYTD
- Функция PARALLELPERIOD
Изчисляване на стойност върху диапазон от дати по избор
Вижте следните теми за примери как да извличате диапазони от дати по избор, като например първите 15 дни след началото на промоция за продажби.
Ако използвате функции за интелигентно време, за да извлечете набор от дати по избор, можете да използвате този набор от дати като входни данни за функция, която извършва изчисления, за да създавате сборове по избор за периоди от време. Вижте следната тема за пример как да направите това:
-
Забележка
Ако не е нужно да задавате диапазон от дати по избор, но работите със стандартни счетоводни единици, като месеци, тримесечия или години, препоръчваме ви да извършвате изчисления с помощта на функциите за интелигентно време за тази цел, като например TOTALQTD, TOTALMTD, TOTALQTD и др.
Сценарии: Класиране и сравняване на стойности
За да покажете само първите n елемента в дадена колона или обобщена таблица, имате няколко опции:
- Можете да използвате функциите в Excel, за да създадете филтър "Най-много". Можете също да изберете брой от най-големи или най-ниски стойности в обобщена таблица. Първата част на този раздел описва как да филтрирате по първите 10 елемента в обобщена таблица. За повече информация вижте документацията на Excel.
- Можете да създадете формула, която динамично подрежда стойностите, и след това да филтрирате по стойностите на класиране или да използвате стойността на класиране като сегментатор. Втората част на този раздел описва как да създадете тази формула и след това да използвате това подреждане в сегментатор.
Всеки метод има предимства и недостатъци.
- Горният филтър на Excel е лесен за използване, но е единствено за показване. Ако данните, лежащи в основата на обобщената таблица, се променят, трябва да обновите ръчно обобщената таблица, за да видите промените. Ако трябва динамично да работите с класирания, можете да използвате DAX, за да създадете формула, която сравнява стойности с други стойности в колона.
- Формулата DAX е по-мощна; Нещо повече, чрез добавяне на стойността на класиране към сегментатор, можете просто да щракнете върху сегментатора, за да промените броя на показваните най-големи стойности. Изчисленията обаче са скъпи от икономическа гледна точка и този метод може да не е подходящ за таблици с много редове.
Показване само на първите десет елемента в обобщена таблица
За да покажете първите или най-ниските стойности в обобщена таблица
|
|---|
Динамично подреждане на елементи с помощта на формула
Темата по-долу съдържа пример как да използвате DAX за създаване на класиране, записано в изчисляема колона. Тъй като формулите на DAX се изчисляват динамично, винаги можете да сте сигурни, че класирането е правилно, дори ако базовите данни са се променили. Тъй като формулата се използва в изчисляема колона, можете да използвате класирането в сегментатор и след това да изберете първите 5, първите 10 или дори първите 100 стойности.