Изразите за анализ на данни (DAX) звучи малко смущаващо отначало, но не позволявайте името да ви заблуди. Основите на DAX са наистина доста лесни за разбиране. Първо най-важното - DAX НЕ е език за програмиране. DAX е език за формули. Можете да използвате DAX, за да дефинирате потребителски изчисления за изчисляеми колони и за мерки (известни също като изчисляеми полета). DAX включва някои от функциите, използвани във формулите на Excel, както и допълнителни функции, предназначени за работа с релационни данни и извършване на динамично агрегиране.
Разбиране на формулите на DAX
Формулите на DAX са много подобни на формулите на Excel. За да създадете такъв, трябва да въведете знак за равенство, последван от име или израз на функция, както и задължителни стойности или аргументи. Подобно на Excel, DAX предоставя редица функции, които можете да използвате, за да работите с низове, да извършвате изчисления с помощта на дати и часове или да създавате условни стойности.
Формулите на DAX обаче са различни по следните важни начини:
-
Ако искате да персонализирате изчисленията ред по ред, DAX включва функции, които ви позволяват да използвате стойността на текущия ред или свързана стойност, за да извършвате изчисления, които варират според контекста.
-
DAX включва тип функция, която връща таблица като резултат, а не една стойност. Тези функции могат да се използват за въвеждане на данни за други функции.
-
Функции за интелигентно времев DAX позволяват изчисления, като използват диапазони от дати, и сравняват резултатите за паралелни периоди.
Къде да използвате формулите на DAX
Можете да създавате формули в Power Pivot в изчисляемиоленове или в изчисляемиклетки.
Изчисляеми колони
Изчисляемата колона е колона, която добавяте към съществуваща Power Pivot таблица. Вместо да поставяте или импортирате стойности в колоната, създавате DAX формула, която определя стойностите на колоните. Ако включите Power Pivot таблица в обобщена таблица (или обобщена диаграма), изчисляемата колона може да се използва както всяка друга колона с данни.
Формулите в изчисляемите колони приличат по-скоро на формулите, които създавате в Excel. За разлика от Excel обаче, не можете да създадете различна формула за различните редове в таблица; вместо това формулата DAX автоматично се прилага към цялата колона.
Когато дадена колона съдържа формула, стойността се изчислява за всеки ред. Резултатите се изчисляват за колоната веднага щом създадете формулата. Стойностите на колоните се преизчисляват само ако базовите данни се обновяват или ако се използва ръчно преизчисляване.
Можете да създадете изчисляеми колони, които се базират на мерки и други изчисляеми колони. Избягвайте обаче да използвате същото име за изчисляема колона и мярка, тъй като това може да доведе до объркващи резултати. Когато препращате към колона, най-добре е да използвате напълно квалифицирана препратка към колона, за да избегнете случайно извикване на мярка.
За по-подробна информация вижте Изчисляеми колони в Power Pivot.
Мерки
Мярка е формула, която е създадена специално за използване в обобщена таблица (или обобщена диаграма), която използва Power Pivot данни. Мерките могат да се базират на стандартни функции за агрегиране, като например COUNT или SUM, или можете да дефинирате своя собствена формула с помощта на DAX. В областта на стойностите на обобщена таблица се използва мярка. Ако искате да поставите изчислените резултати в друга област на обобщена таблица, вместо това използвайте изчисляема колона.
Когато дефинирате формула за изрична мярка, нищо не се случва, докато не добавите мярката в обобщена таблица. Когато добавите мярката, формулата се изчислява за всяка клетка в областта на стойностите на обобщената таблица. Тъй като се създава резултат за всяка комбинация от заглавки на редове и колони, резултатът за мярката може да бъде различен във всяка клетка.
Дефиницията на мярката, която създавате, се записва с нейната таблица с данни източник. Тя се появява в списъка с полета на обобщената таблица и е достъпна за всички потребители на работната книга.
За по-подробна информация вижте Мерки в Power Pivot.
Създаване на формули с помощта на лентата за формули
Power Pivot, подобно на Excel, предоставя лента за формули, която улеснява създаването и редактирането на формули и функционалността "Автодовършване", за да се минимизират грешките при въвеждане и синтаксиса.
За да въведете името на таблица Започнете да въвеждате името на таблицата. "Автодовършване на формули" предоставя падащ списък, съдържащ валидни имена, които започват с тези букви.
За да въведете името на колона Въведете квадратна скоба и след това изберете колоната от списъка с колони в текущата таблица. За колона от друга таблица започнете да въвеждате първите букви от името на таблицата и след това изберете колоната от падащия списък Автодовършване.
За повече подробности и обзор как да създавате формули, вижте Създаване на формули за изчисления в Power Pivot.
Съвети за използване на автодовършване
Можете да използвате "Автодовършване на формули" в средата на съществуваща формула с вложени функции. Текстът непосредствено преди точката на вмъкване се използва за показване на стойности в падащия списък, а целият текст след точката на вмъкване остава непроменен.
Дефинираните имена, които създавате за константи, не се показват в падащия списък "Автодовършване", но все пак можете да ги въведете.
Power Pivot не добавя затварящата кръгла скоба на функциите или автоматично съответства на скобите. Трябва да се уверите, че всяка функция е синтактично правилна или че не можете да запишете или използвате формулата.
Използване на множество функции във формула
Можете да влагате функции, което означава, че използвате резултатите от една функция като аргумент на друга функция. Можете да влагате до 64 нива на функции в изчисляеми колони. Обаче влагането може да затрудни създаването или отстраняването на неизправности във формули.
Много от DAX функциите са предназначени да се използват единствено като вложени функции. Тези функции връщат таблица, която не може да бъде записана директно в резултат на това; тя трябва да се предоставя като входна функция на таблица. Например функциите SUMX, AVERAGEX и MINX изискват таблица като първи аргумент.
Забележка: Някои ограничения за влагане на функции съществуват в рамките на мерките, за да се гарантира, че производителността няма да бъде засегната от множеството изчисления, изисквани от зависимостите между колоните.
Сравняване на функциите на DAX и функциите на Excel
Библиотеката с функции на DAX се базира на библиотеката с функции на Excel, но библиотеките имат много разлики. Този раздел обобщава разликите и сходствата между функциите на Excel и функциите DAX.
-
Много от DAX функциите имат едно и също име и същото общо поведение като функциите на Excel, но са променени така, че да приемат различни типове входни данни, а в някои случаи може да върнат различен тип данни. По принцип не можете да използвате DAX функции във формула на Excel или да използвате формули на Excel в Power Pivot без някои промени.
-
DAX функциите никога не приемат препратка към клетка или диапазон като препратка, но вместо това DAX функциите приемат колона или таблица като препратка.
-
Функциите за дата и час на DAX връщат данни от тип datetime. За разлика от това функциите за дата и час на Excel връщат цяло число, което представя датата като пореден номер.
-
Много от новите DAX функции или връщат таблица със стойности, или извършват изчисления, базирани на таблица със стойности, като входни данни. За разлика от това Excel няма функции, които връщат таблица, но някои функции могат да работят с масиви. Възможността за лесно препращане към пълни таблици и колони е нова функция в Power Pivot.
-
DAX предоставя нови функции за търсене, които са подобни на функциите за масив и векторна справка в Excel. DaX функциите обаче изискват да се установи релация между таблиците.
-
Данните в дадена колона се очаква винаги да бъдат от един и същ тип данни. Ако данните не са от един и същ тип, DAX променя цялата колона в типа данни, който побира най-добре всички стойности.
Типове данни на DAX
Можете да импортирате данни в Power Pivot модел на данни от много различни източници на данни, които може да поддържат различни типове данни. Когато импортирате или зареждате данните и след това използвате данните в изчисления или обобщени таблици, данните се конвертират в един от Power Pivot типове данни. За списък с типовете данни вж. Типове данни в модели на данни.
Типът данни на таблицата е нов тип данни в DAX, който се използва като вход или изход за много нови функции. Например функцията FILTER взема таблица като входна и извежда друга таблица, която съдържа само редовете, които отговарят на условията на филтъра. Чрез комбиниране на функции за таблици с функции за агрегиране можете да извършвате сложни изчисления върху динамично дефинирани набори от данни. За повече информация вижте Агрегирания в Power Pivot.
Формули и релационният модел
Прозорецът на Power Pivot е област, където можете да работите с множество таблици с данни и да свържете таблиците в релационна модел. В този модел на данни таблиците са свързани помежду си чрез релации, което ви позволява да създавате корелация с колони в други таблици и да създавате по-интересни изчисления. Можете например да създадете формули, които сумират стойности за свързана таблица и след това да запишете тази стойност в една клетка. Или, за да управлявате редовете от свързаната таблица, можете да приложите филтри към таблици и колони. За повече информация вижте Релации между таблици в модел на данни.
Тъй като можете да свързвате таблици с помощта на релации, вашите обобщени таблици могат също да включват данни от няколко колони, които са от различни таблици.
Тъй като обаче формулите могат да работят с цели таблици и колони, трябва да проектирате изчисленията по различен начин от тези в Excel.
-
По принцип dax формула в дадена колона винаги се прилага към целия набор от стойности в колоната (никога само към няколко реда или клетки).
-
Таблиците в Power Pivot трябва винаги да имат еднакъв брой колони във всеки ред, а всички редове в дадена колона трябва да съдържат един и същ тип данни.
-
Когато таблиците са свързани с релация, от вас се очаква да се уверите, че двете колони, използвани като ключове, имат стойности, които съвпадат, в по-голямата си част. Тъй като Power Pivot не поддържа целостта на връзките, е възможно да имате несъответстващи стойности в ключова колона и все пак да създадете релация. Наличието на празни или несъответстващи стойности обаче може да повлияе на резултатите от формулите и на облика на обобщените таблици. За повече информация вижте Справки във формули на Power Pivot.
-
Когато свързвате таблици с помощта на релации, увеличавате обхвата или втекста , в който се оценяват формулите. Например формулите в обобщена таблица могат да бъдат засегнати от всички филтри или заглавия на колони и редове в обобщената таблица. Можете да пишете формули, които манипулират контекст, но контекстът може също да доведе до промяна на резултатите по начини, които може да не очаквате. За повече информация вижте Контекст в DAX формули.
Актуализиране на резултатите от формули
Освобождаването и преизчисляването на данни са две отделни, но свързани операции, които трябва да разберете при проектирането на модел на данни, който съдържа сложни формули, големи количества данни или данни, получени от външни източници на данни.
Обновяването на данните е процесът на актуализиране на данните във вашата работна книга с нови данни от външен източник на данни. Можете да обновявате данните ръчно през интервали, които задавате. Или, ако сте публикували работната книга в сайт на SharePoint, можете да планирате автоматично обновяване от външни източници.
Преизчисляването е процесът на актуализиране на резултатите от формулите, за да се отразят всички промени в самите формули и да се отразят тези промени в базовите данни. Преизчисляването може да повлияе на производителността по следните начини:
-
За изчисляема колона резултатът от формулата винаги трябва да се преизчислява за цялата колона всеки път, когато промените формулата.
-
За дадена мярка резултатите от формулата не се изчисляват, докато мярката не бъде поставена в контекста на обобщената таблица или обобщената диаграма. Формулата също така ще се преизчисли, когато промените някое заглавие на ред или колона, което засяга филтрите върху данните или когато обновявате ръчно обобщената таблица.
Отстраняване на неизправности във формули
Грешки при писане на формули
Ако получите съобщение за грешка при дефиниране на формула, формулата може да съдържа синтактична грешка, семантична грешка или грешка в изчислението.
Синтактичните грешки са най-лесни за отстраняване. Те обикновено включват липсваща кръгла или запетая. За помощ относно синтаксиса на отделните функции вж. Справка за функциите dax.
Другият тип грешка възниква, когато синтаксисът е правилен, но стойността или колоната, към които има препратка, няма смисъл в контекста на формулата. Такива семантични грешки и изчисления може да са причинени от някой от следните проблеми:
-
Формулата препраща към не съществуващ колона, таблица или функция.
-
Изглежда, че формулата е правилна, но когато системата за данни извлича данните, тя намира несъответствие на типа и повдига грешка.
-
Формулата предава на дадена функция неправилен брой или тип параметри.
-
Формулата препраща към друга колона, в която има грешка, и следователно нейните стойности са невалидни.
-
Формулата препраща към колона, която не е обработена, което означава, че тя има метаданни, но няма действителни данни, които да се използват за изчисления.
В първите четири случая DAX маркира цялата колона, която съдържа невалидната формула. В последния случай DAX изсича колоната, за да покаже, че колоната е в непреработено състояние.
Неправилни или необичайни резултати при класиране или подреждане на стойности в колона
При класиране или подреждане на колона, която съдържа стойност NaN (а не число), може да получите грешни или неочаквани резултати. Например когато едно изчисление дели 0 на 0, се връща резултат от NaN.
Това е така, защото ядрото на формулата извършва подреждане и класиране чрез сравняване на числовите стойности; NaN обаче не може да се сравни с други числа в колоната.
За да осигурите правилни резултати, можете да използвате условни команди с помощта на функцията IF, за да проверявате за стойности на NaN и да връщате числова стойност 0.
Съвместимост с таблични модели на услугите за анализ и режим DirectQuery
По принцип формулите на DAX, които създавате в Power Pivot, са напълно съвместими с табличните модели на услугите за анализ. Ако обаче мигрирате своя модел на Power Pivot към екземпляр на услугите за анализ и след това разположите модела в режим на DirectQuery, има някои ограничения.
-
Някои формули на DAX може да върнат различни резултати, ако разположите модела в режим на DirectQuery.
-
Някои формули може да предизвикат грешки при проверка, когато разположите модела в режим на DirectQuery, защото формулата съдържа DAX функция, която не се поддържа от релационни източници на данни.
За повече информация вижте Документация за таблично моделиране на Услугите за анализ в SQL Server 2012 BooksOnline.