Applies ToExcel за Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016 Power BI

Този раздел предоставя връзки към примери, които показват използването на DAX формули в следните сценарии.

  • Извършване на сложни изчисления

  • Работа с текст и дати

  • Условни стойности и тестване за грешки

  • Използване на интелигентно време

  • Класиране и сравняване на стойности

В тази статия

Първи стъпки

Посетете Wiki страницата на центъра за ресурси на DAX , където можете да намерите всякакви видове информация за DAX, включително блогове, примери, технически документи и видеоклипове, предоставени от водещи професионалисти в отрасъла и Microsoft.

Сценарии: Извършване на сложни изчисления

Формулите на DAX могат да извършват сложни изчисления, които включват агрегирания по избор, филтриране и използване на условни стойности. Този раздел предоставя примери как да започнете с потребителски изчисления.

Създаване на потребителски изчисления за обобщена таблица

CALCULATE и CALCULATETABLE са мощни, гъвкави функции, които са полезни за дефиниране на изчисляеми полета. Тези функции ви позволяват да промените контекста, в който ще се извърши изчислението. Можете също да персонализирате типа на агрегирането или математическата операция, която да се изпълнява. Вижте следните теми за примери.

Прилагане на филтър към формула

На повечето места, където дадена DAX функция взема таблица като аргумент, обикновено можете да подадете във филтрирана таблица вместо това с помощта на функцията FILTER вместо името на таблицата, или като зададете израз за филтър като един от аргументите на функцията. Темите по-долу предоставят примери как да създавате филтри и как филтрите влияят върху резултатите от формулите. За повече информация вижте Филтриране на данни в DAX формули.

Функцията FILTER ви позволява да зададете критерии за филтриране с помощта на израз, докато другите функции са предназначени специално за филтриране на празни стойности.

Избирателно премахване на филтри за създаване на динамично съотношение

Създавайки динамични филтри във формули, можете лесно да отговаряте на въпроси като следните:

  • Какъв беше приносът на текущите продажби на продукта към общите продажби за годината?

  • Колко е допринесъл това подразделение за общата печалба за всички оперативни години в сравнение с другите подразделения?

Формулите, които използвате в обобщена таблица, могат да бъдат засегнати от контекста на обобщената таблица, но можете избирателно да променяте контекста, като добавяте или премахвате филтри. Примерът в темата ALL ви показва как да направите това. За да намерите съотношението на продажбите за конкретен риселър спрямо продажбите за всички риселъри, вие създавате мярка, която изчислява стойността за текущия контекст, разделена на стойността за контекста ALL.

Темата ALLEXCEPT предоставя пример за това как избирателно да се изчистват филтрите във формула. И двата примера ви превеждат през промяната на резултатите в зависимост от проекта на обобщената таблица.

За други примери как да изчислявате съотношения и проценти, вижте следните теми:

Използване на стойност от външен цикъл

В допълнение към използването на стойности от текущия контекст в изчисленията, DAX може да използва стойност от предишен цикъл при създаването на набор от свързани изчисления. Следващата тема предоставя обзор как да създадете формула, която препраща към стойност от външен цикъл. Функцията EARLIER поддържа до две нива на вложени цикли.

За да научите повече за контекста на редовете и свързаните таблици и как да използвате тази концепция във формули, вижте Контекст във формули на DAX.

Сценарии: Работа с текст и дати

Този раздел предоставя връзки към справочни теми на DAX, които съдържат примери за често срещани сценарии, свързани с работа с текст, извличане и съставяне на стойности за дата и час или създаване на стойности на базата на условие.

Създаване на ключова колона чрез конкатенация

Power Pivot не позволява комбинирани ключове; следователно, ако имате съставни ключове в източника на данни, може да се наложи да ги комбинирате в една колона с ключ. Следващата тема предоставя един пример как да създадете изчисляема колона на базата на съставен ключ.

Съставяне на дата на базата на части за дата, извлечени от текстова дата

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, можете да дефинирате формат по избор, за да сте сигурни, че стойностите се обработват правилно. Тези формати се използват при преобразуване на стойности в низове или от низове. Темите по-долу също предоставят подробен списък на предварително дефинираните формати, които са налични за работа с дати и числа.

Промяна на типовете данни с помощта на формула

В Power Pivot типът данни на резултата се определя от колоните източник и не можете изрично да зададете типа на данните на резултата, защото оптималният тип данни се определя от Power Pivot. Можете обаче да използвате неявното преобразуване на типа данни, извършвано от Power Pivot, за да управлявате типа на изходните данни. 

  • За да преобразувате дата или числов низ в число, умножете по 1,0. Например следващата формула изчислява текущата дата минус 3 дни и след това извежда съответната целочислена стойност.

    =(TODAY()-3)*1,0

  • За да преобразувате стойност на дата, число или валута в низ, конкатенирайте стойността с празен низ. Например следната формула връща днешната дата като низ.

    =""& TODAY()

Следните функции също могат да се използват, за да се гарантира връщането на определен тип данни:

Преобразуване на реални числа в цели числа

Сценарий: Условни стойности и тестване за грешки

Подобно на Excel, DAX има функции, които ви позволяват да тествате стойности в данните и да връщате различна стойност на базата на условие. Можете например да създадете изчисляема колона, която поставя етикети на дистрибутори като Предпочитани или Стойност в зависимост от годишната сума на продажбите. Функциите, които тестват стойности, са полезни и за проверка на диапазона или типа на стойностите, за да се предотвратят неочаквани грешки в данните от прекъсване на изчисления.

Създаване на стойност на базата на условие

Можете да използвате вложени условия IF, за да тествате стойности и да генерирате нови стойности условно. Следните теми съдържат някои прости примери за условно обработване и условни стойности:

Проверка за грешки във формула

За разлика от Excel, не можете да имате валидни стойности в един ред на изчисляема колона и невалидни стойности в друг ред. Т.е. ако има грешка в някоя част от Power Pivot колона, цялата колона се маркира с флаг с грешка, така че винаги трябва да коригирате грешки във формули, които водят до невалидни стойности.

Например ако създадете формула, която дели на нула, може да получите резултата от безкрайността или грешка. Някои формули също ще са неуспешни, ако функцията се натъкне на празна стойност, когато очаква числова стойност. Докато разработвате своя модел на данни, най-добре е да позволите грешките да се показват, така че да можете да щракнете върху съобщението и да отстраните проблема. Когато публикувате работни книги обаче, трябва да включите обработването на грешки, за да предотвратите неуспешни изчисления, за да предотвратите неочаквани стойности.

За да избегнете връщането на грешки в изчисляема колона, използвайте комбинация от логически и информационни функции, за да проверявате за грешки и винаги да връщате валидни стойности. Следните теми предоставят някои прости примери как да направите това в DAX:

Сценарии: Използване на интелигентно време

Функциите за интелигентно време на DAX включват функции, които да ви помогнат да извлечете дати или диапазони от дати от вашите данни. След това можете да използвате тези дати или диапазони от дати, за да изчислявате стойности за подобни периоди. Функциите за интелигентно време включват също функции, които работят със стандартни интервали от дати, за да ви позволят да сравнявате стойности за месеци, години или тримесечия. Можете също да създадете формула, която сравнява стойности за първата и последната дата на зададен период.

За списък на всички функции за интелигентно време вж. Функции за интелигентно време (DAX).. За съвети как ефективно да използвате датите и часовете в Power Pivot анализ вижте Дати в Power Pivot.

Изчисляване на кумулативни продажби

Темите по-долу съдържат примери как да изчислявате затварящи и отварящи баланси. Примерите ви позволяват да създавате баланси на различни интервали, като например дни, месеци, тримесечия или години.

Сравняване на стойности с течение на времето

Темите по-долу съдържат примери как да сравните сумите за различните периоди от време. Периодите по подразбиране, поддържани от DAX, са месеци, тримесечия и години.

Изчисляване на стойност в диапазон от дати по избор

Вижте следните теми за примери как да извлечете диапазони от дати по избор, като например първите 15 дни след началото на промоция за продажба.

Ако използвате функции за интелигентно време за извличане на потребителски набор от дати, можете да използвате този набор от дати като входни данни за функция, която извършва изчисления, за да създавате агрегирания по избор за периодите от време. Вижте следната тема за пример как да направите това:

  • Функция PARALLELPERIOD

    Забележка: Ако не е необходимо да задавате диапазон от дати по избор, но работите със стандартни счетоводни единици, като месеци, тримесечия или години, ви препоръчваме да извършвате изчисления с помощта на функциите за интелигентно време, създадени за тази цел, като например TOTALQTD, TOTALMTD, TOTALQTD и др.

Сценарии: Класиране и сравняване на стойности

За да покажете само най-горния n брой елементи в дадена колона или обобщена таблица, имате няколко опции:

  • Можете да използвате функциите в Excel, за да създадете филтър Top. Можете също да изберете редица стойности отгоре или отдолу в обобщена таблица. Първата част на този раздел описва как да филтрирате за първите 10 елемента в обобщена таблица. За повече информация вж. документацията на Excel.

  • Можете да създадете формула, която динамично класира стойности и след това да филтрирате по стойностите на класирането или да използвате стойността на класирането като сегментатор. Втората част на този раздел описва как да създадете тази формула и след това да използвате това класиране в сегментатор.

Има предимства и недостатъци на всеки метод.

  • Филтърът Excel Top е лесен за използване, но филтърът е само за целите на показването. Ако данните, на които се базира обобщената таблица, се променят, трябва ръчно да обновите обобщената таблица, за да видите промените. Ако трябва да работите динамично с класиране, можете да използвате DAX, за да създадете формула, която сравнява стойности с други стойности в дадена колона.

  • Формулата DAX е по-мощна; освен това, като добавите стойността за класиране към сегментатор, можете просто да щракнете върху сегментатора, за да промените броя на най-високите стойности, които се показват. Изчисленията обаче са изчисляеми и този метод може да не е подходящ за таблици с много редове.

Показване само на десетте най-важни елемента в обобщена таблица

Показване на най-високите или най-ниските стойности в обобщена таблица

  1. В обобщената таблица щракнете върху стрелката надолу в заглавието Етикети на редове .

  2. Изберете Филтри на стойност> Първите 10.

  3. В диалоговия прозорец Филтър за първите 10 <име на колона> изберете колоната, която да се класира, и броя на стойностите, както следва:

    1. Изберете Отгоре , за да видите клетките с най-високите стойности или Отдолу , за да видите клетките с най-ниските стойности.

    2. Въведете броя на най-високите или последните стойности, които искате да видите. Стойността по подразбиране е 10.

    3. Изберете как искате да се показват стойностите:

Име

Описание

Елементи

Изберете тази опция, за да филтрирате обобщената таблица така, че да показва само списъка на горните или долните елементи по техните стойности.

Процент

Изберете тази опция, за да филтрирате обобщената таблица, така че да се показват само елементите, които се добавят към зададения процент.

Sum

Изберете тази опция, за да покажете сумата от стойностите за горните или долните елементи.

  1. Изберете колоната, съдържаща стойностите, които искате да класирате.

  2. Щракнете върху OK.

Подреждане на елементи динамично с помощта на формула

Следващата тема съдържа пример как да използвате DAX за създаване на класиране, което се съхранява в изчисляема колона. Тъй като формулите на DAX се изчисляват динамично, винаги можете да сте сигурни, че класирането е правилно дори ако базовите данни са променени. Освен това, тъй като формулата се използва в изчисляема колона, можете да използвате класирането в сегментатор и след това да изберете първите 5, първите 10 или дори първите 100 стойности.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.