QuickStart: Научете основите на DAX за 30 минути

Отнася се за
Excel за Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Този бърз старт е за потребители, които са нови в Power Pivot в Excel, или проекти с таблични модели, създадени с SQL Server Data Tools. Тя има за цел да ви даде бързо и лесно въведение как можете да използвате изрази за анализ на данни (DAX) за решаване на редица основни задачи за моделиране на данни и аналитични задачи. Тази тема включва концептуална информация, последователност от задачи, които можете да изпълните, и няколко теста, за да проверите какво сте научили. След като изпълните тази тема, би трябвало да имате добра представа за най-основните фундаментални понятия в DAX.

Какво представлява DAX?

DAX е съвкупност от функции, оператори и константи, които могат да се използват във формула или израз, за да се изчисли и да се върнат една или повече стойности. Казано по-просто, DAX ви помага да създавате нова информация от данните, които вече са във вашия модел.

Защо DAX е толкова важен?

Лесно е да създадете работна книга и да импортирате данни в нея. Можете дори да създавате обобщени таблици или обобщени диаграми, които показват важна информация, без да използвате никакви DAX формули. Какво ще стане обаче, ако трябва да анализирате критичните данни за продажбите в няколко продуктови категории и за различни диапазони от дати? Или трябва да комбинирате важни данни за наличности от няколко таблици в различни източници на данни? Формулите DAX предоставят тази възможност, както и много други важни възможности. Научаването как да създавате ефективни DAX формули ще ви помогне да се възползвате максимално от данните си. Когато получите необходимата информация, можете да започнете да решавате реални бизнес проблеми, които засягат крайния резултат. Това е бизнес разузнаване и DAX ще ви помогне да го постигнете.

Предварителни изисквания

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

Ще се спрем специално на разбирането на DAX формулите, използвани в изчисленията. Вече трябва да сте запознати с основните понятия на изчисляемите колони и на мерките (известни също и като изчисляеми полета), които са описани в помощта за Power Pivot. Също така трябва да сте запознати със средата и инструментите за авторство на Power Pivot в Excel.

Примерна работна книга

Най-добрият начин да научите DAX е да създадете някои основни формули, да ги използвате с действителни данни и да видите резултатите сами. Примерите и задачите тук използват примерната работна книга на Formulas.xlsx на DAX от Contoso. Можете да изтеглите работната книга от http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. След като сте изтеглили работната книга на компютъра си, отворете я и след това отворете прозореца на Power Pivot.

Нека започнем!

Ще рамкираме DAX около три много важни фундаментални концепции: синтаксис, функции и контекст. Разбира се, има и други важни концепции в DAX, но разбирането на тези три концепции ще осигури най-добрата основа за изграждане на вашите умения в DAX.

Синтаксис

Преди да създадете свои собствени формули, нека да разгледаме синтаксиса на формулите на DAX. Синтаксисът включва различните елементи, които съставят формулата, или по-просто начин на писане на формулата. Нека например разгледаме проста DAX формула, използвана за създаване на нови данни (стойности) за всеки ред в изчисляема колона, наречена "Марж", в таблица на FactSales: (цветовете на текста на формулата са само с илюстративна цел)

Формула за изчисляема колона

Синтаксисът на тази формула включва следните елементи:

  1. Операторът за знак за равенство (=) показва началото на формулата и когато тази формула се изчисли, ще върне резултат или стойност. Всички формули, които изчисляват стойност, ще започват със знак за равенство.
  2. Колоната [SalesAmount] съдържа стойностите, от които искаме да извадим. Препратката към колона във формула винаги е оградена от квадратни скоби []. За разлика от формулите на Excel, които препращат към клетка, DAX формулата винаги препраща към колона.
  3. Математическият оператор за изваждане (-).
  4. Колоната [TotalCost] съдържа стойностите, които искаме да извадим от стойностите в колоната [SalesAmount].

Когато се опитвате да разберете как се чете формула DAX, често е полезно да разделите всеки от елементите на език, който мислите и говорите всеки ден. Например можете да прочетете тази формула като:

В таблицата FactSales, за всеки ред в изчисляемата колона "Марж" изчислете (=) стойност, като извадите (-) стойностите в колоната [TotalCost] от стойностите в колоната [SalesAmount].

Нека да разгледаме друг тип формула, която се използва в мярка:

Формула за изчисляема колона

Тази формула включва следните елементи на синтаксиса:

  1. Името на мярката: Сума на продажбите, Сума. Формулите за мерки могат да включват името на мярката, последвано от двоеточие и формулата за изчисление.
  2. Операторът за знак за равенство (=) указва началото на формулата за изчисление. Когато се изчислява, той ще върне резултат.
  3. Функцията SUM събира всички числа в колоната [СумаПродажби]. Повече за функциите ще научите по-късно.
  4. Със скоби () заграждат един или няколко аргумента. Всички функции изискват поне един аргумент. Един аргумент предава стойност на функция.
  5. Таблицата, към която има препратка FactSales.
  6. Колоната [SalesAmount] в таблицата FactSales, към която има препратка. С този аргумент функцията SUM знае за коя колона да агрегира SUM.

Можете да прочетете тази формула като:

За мярката с име "Сума на сумата на продажбите" изчислете (=) сумата на стойностите в колоната [Сума_продажби] на таблицата FactSales.

Когато се постави в зоната за падане на стойностите в списък с полета на обобщена таблица, тази мярка изчислява и връща стойности, определени от всяка клетка в обобщената таблица, например "Мобилни телефони" в САЩ.

Обърнете внимание, че има няколко неща в тази формула в сравнение с формулата, която използвахме за изчисляемата колона "Margin". По-конкретно въведохме функция SUM. Функциите са предварително написани формули, които улесняват извършването на сложни изчисления и манипулации с числа, дати, час, текст и др. Повече за функциите ще научите по-късно.

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

Забележка

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

Много е важно вашите формули да имат правилния синтаксис. В повечето случаи, ако синтаксисът не е правилен, ще се върне синтактична грешка. В други случаи синтаксисът може да е правилен, но върнатите стойности може да не са тези, които очаквате. Power Pivot (и SQL Server Data Tools) включва IntelliSense – функция, която се използва за създаване на синтактично правилни формули, като ви помага да изберете правилните елементи.

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

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

  1. Ако не сте в прозореца на Power Pivot, в Excel, в лентата на Power Pivot щракнете върху " Прозорец на Power Pivot".
  2. В прозореца на Power Pivot щракнете върху таблицата FactSales (раздел).
  3. Превъртете до най-дясната колона и след това в заглавката й щракнете върху "Добавяне на колона".
  4. Щракнете в лентата за формули в горната част на прозореца на конструктора на модели.
    Лента за формули на Power Pivot
    Курсорът сега се появява в лентата за формули. Лентата за формули е мястото, където можете да въведете формула за изчисляема колона или изчисляемо поле.
    Нека разгледаме трите бутона отляво на лентата за формули.
    Formula bar
    Когато курсорът е активен в лентата за формули, тези три бутона стават активни. Най-левият бутон, X, е просто бутон за отказ. Продължете напред и щракнете върху него. Курсорът вече не се показва в лентата за формули, а бутонът "Отказ" и бутонът за отметка вече не се появяват. Продължете напред и щракнете отново в лентата за формули. Бутонът за отказ и бутонът с отметка сега се появяват отново. Това означава, че сте готови да започнете да въвеждате формула.
    Бутонът с отметка е бутонът за проверка на формулата. Тя не прави много, докато не въведете формула. Ще се върнем към него след малко.
    Щракнете върху бутона Fx . Ще видите, че се появява нов диалогов прозорец; в диалоговия прозорец "Вмъкване на функция". Диалоговият прозорец "Вмъкване на функция" е най-лесният начин да започнете да въвеждате DAX формула. Малко по-късно ще добавим функция към формула, когато създадем мярка, но засега не е нужно да добавяте функция към формулата за изчисляема колона. Продължете напред и затворете диалоговия прозорец "Вмъкване на функция".
  5. В лентата за формули въведете знака за равенство =, след което въведете отваряща квадратна скоба [. Ще се покаже малък прозорец с всички колони в таблицата FactSales. Това е IntelliSense в действие.
    Тъй като в активната таблица, в която се намирате, винаги се създават изчисляеми колони, няма нужда да поставяте името на таблицата пред името на колоната. Превъртете надолу и щракнете двукратно върху [КоличествоПродажби]. Можете също да превъртите до името на колоната, което искате, и след това да натиснете клавиша Tab.
    Курсорът ви вече е активен отдясно на [Количество_продажби].
  6. Въведете интервал и след това въведете оператор за изваждане - (знак минус), след което въведете друг интервал.
  7. Сега въведете друга отваряща скоба [. Този път изберете колоната [ReturnQuantity] и след това натиснете клавиша Enter.
    Ако получите съобщение за грешка, погледнете внимателно синтаксиса. Ако е необходимо, сравнете я с формулата в описаната по-горе колона за изчисляемо поле.
    След като натиснете клавиша Enter, за да завършите формулата, думата "Изчисляване " се появява в лентата на състоянието в долния край на прозореца на Power Pivot. Той става бързо, въпреки че току-що сте изчислили нови стойности за повече от три милиона реда.
  8. Щракнете с десния бутон върху заглавката на колоната и преименувайте колоната на NetSales.

Това е всичко! Току-що създадохте проста, но много мощна DAX формула. За всеки ред в таблицата FactSales формулата NetSales изчислява стойност, като изважда стойността в колоната [ReturnQuantity] от стойността в колоната [SalesQuantity]. Обърнете внимание как току-що казахме "За всеки ред". Това е бегъл поглед към друга много важна концепция в DAX; контекст на реда. По-късно ще научите повече за контекста на реда.

Нещо, което е наистина важно да разберете, когато въвеждате оператор във формула на DAX, е типът данни в аргументите, които използвате. Например ако въведете следната формула = 1 & 2, върнатата стойност ще бъде текстова стойност "12". Това е така, защото операторът амперсанд (&) е за конкатенация на текст. DAX интерпретира тази формула така: Изчисляване на резултат, като се вземе стойността 1 за текст, и се добавя стойността 2 като текст. Ако сега трябва да въведете = 1 + 2, DAX прочита тази формула като: Изчисляване на резултат чрез вземане на числовата стойност 1 и събиране на числовата стойност 2. Резултатът, разбира се, е "3", числова стойност. DAX изчислява получените стойности в зависимост от оператора във формулата, а не на базата на типа на данните на колоните, използвани в аргумента. Типовете данни в DAX са много важни, но извън обхвата на този "Бърз старт". За да научите повече за типовете данни и операторите във формулите на DAX, вижте справката за DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) в Books Online.

Нека опитаме друг. Този път ще създадете мярка, като въведете формулата и използвате IntelliSense. Не се безпокойте много, ако не разбирате напълно формулата. Важното тук е да научите как да създадете формула, като използвате няколко елемента заедно в правилния синтаксис.

Задача: Създаване на формула за мярка

  1. В таблицата FactSales щракнете в произволна празна клетка в областта за изчисление. Това е областта от празни клетки точно под таблица в прозореца на Power Pivot.

Област за изчисляване на Power Pivot

  1. В лентата за формули въведете името "Продажби за предишното тримесечие:".
  2. Въведете знака за равенство =, за да започнете формулата за изчисление.
  3. Въведете първите няколко букви CAL и след това щракнете двукратно върху функцията, която искате да използвате. В тази формула искате да използвате функцията CALCULAT .
  4. Въведете отваряща скоба (за да започнете аргументите, които да се подадат на функцията CALCULAT).
    Забележка: След като въведете отварящата скоба, IntelliSense ви показва аргументите, необходими за функцията CALCULAT. След малко ще научите за аргументите.
  5. Въведете първите няколко букви на таблицата FactSales и след това в падащия списък щракнете двукратно върху FactSales[Sales].
  6. Въведете запетая (,), за да зададете първия филтър, след което въведете PRE и щракнете двукратно върху функцията PREVIOUSQUARTER .
    След като изберете функцията PREVIOUSQUARTER, се появява друга отваряща кръгла скоба, което показва, че се изисква друг аргумент; този път за функцията PREVIOUSQUARTER.
  7. Въведете първите няколко букви Dim и след това щракнете двукратно върху DimDate[DateKey].
  8. Затворете и двата аргумента, който се предава към функцията PREVIOUSQUARTER и функцията CALCULAT, като въведете двете затварящи кръгли скоби )).
    Сега вашата формула трябва да изглежда така:
    Продажби от предишното тримесечие:=CALCULATE(FactSales[Продажби], PREVIOUSQUARTER(DimDate[DateKey]))
  9. Щракнете върху бутона за проверка на формулата на лентата за формули, за да проверите формулата. Ако получите съобщение за грешка, проверете всеки елемент от синтаксиса.

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

Току-що се запознахте с няколко важни аспекта на формулите на DAX. Първо, тази формула включваше две функции. Обърнете внимание, че функцията PREVIOUSQUARTER е вложена като аргумент, подаден на функцията CALCULAT . Формулите на DAX могат да съдържат до 64 вложени функции. Едва ли е формула някога да съдържа толкова много вложени функции. Всъщност такава формула би била много трудна за създаване и отстраняване на грешки, а вероятно и няма да е много бърза.

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

И накрая, използвахте функцията CALCULAT. Това е една от най-мощните функции в DAX. Докато създавате модели на данни и създавате по-сложни формули, вероятно ще използвате тази функция много пъти. Обсъждането на функцията CALCULATE е извън обхвата на този "Бърз старт", но с нарастването на познанията ви за DAX обърнете специално внимание на него.

Забележка

Обикновено за да използвате функциите за интелигентно време във формули на DAX, трябва да зададете уникална колона за дата с помощта на диалоговия прозорец "Маркиране като таблица с дати". В работната книга на Contoso DAX Formula Samples.xlsx колоната "Ключ на дата" в таблицата "DimDate" е избрана като колона за уникална дата.

Допълнителен кредит

Може да се питате: "Коя е най-простата DAX формула, която мога да създам?" Е, отговорът на този въпрос е "формулата, която не е нужно да правите". И точно това можете да направите, като използвате стандартна агрегатна функция в мярка. Почти всеки модел на данни трябва да филтрира и изчислява върху обобщени данни. Например функцията SUM в мярката за сума на количеството продажби, която видяхте по-рано, се използва за сумиране на всички числа в дадена колона. DAX включва и няколко други функции, които агрегират стойности. С помощта на функцията "Автосумиране" можете автоматично да създавате формули, като използвате стандартни агрегирания.

Задача за допълнителен кредит: Създаване на формула за измерване с помощта на функцията "Автосумиране"

  1. В таблицата FactSales превъртете до колоната ReturnQuantity и след това щракнете върху заглавката на колоната, за да изберете цялата колона.
  2. В раздела " Начало ", на лентата, в групата "Изчисления " щракнете върху бутона "Автосумиране ".

Автосумиране в Power Pivot

Щракнете върху стрелката надолу до "Автосумиране", след което щракнете върху "Средно" (обърнете внимание и на другите стандартни агрегатни функции, които можете да използвате).

Веднага се създава нова мярка с името Average of ReturnQuantity: последвано от формулата =AVERAGE([ReturnQuantity]).

Сега не беше ли лесно? Разбира се, не всички формули, които създавате, ще бъдат толкова прости. Но като използвате функцията "Автосумиране", можете да създавате бързи и лесни формули, като използвате стандартни агрегационни изчисления.

Това би трябвало да ви даде доста добро разбиране на синтаксиса, използван във формулите на DAX. Запознахте се и с някои наистина страхотни функции, като IntelliSense и AutoSum, които ще ви помогнат да създавате бързи, лесни и точни формули. Разбира се, има още много неща, които можете да научите за синтаксиса. Добро място да научите повече е справочникът за DAX или SQL Books Online.

Синтаксис: QuickQuiz

  1. Какво прави този бутон в лентата за формули?
    бутон за функция
  2. Какво винаги загражда името на колона във формула DAX?
  3. Как бихте написали формула за следното:
    В таблицата DimProduct, за всеки ред в изчисляемата колона UnitMargin изчисляване на стойност чрез изваждане на стойностите в колоната UnitCost от стойностите в колоната UnitPrice?

Отговорите ще намерите в края на тази тема.

Функции

Функциите са предварително зададени формули, които извършват изчисления с помощта на конкретни стойности, наречени аргументи, в определен ред или структура. Аргументите могат да бъдат други функции, друга формула, препратки към колони, числа, текст, логически стойности като TRUE или FALSE или константи.

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

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

Понякога е трудно да се разбере кои функции може да се наложи да използвате във формула. Power Pivot и конструкторът на таблични модели в SQL Server Data Tools включват функцията "Вмъкване на функция" – диалогов прозорец, който ви помага да избирате функции по категория и предоставя кратки описания за всяка функция.

Вмъкване на функция

Нека създадем нова формула, която включва функция, която ще изберете с помощта на функцията "Вмъкване на функция":

Задача: Добавяне на функция към формула с помощта на "Вмъкване на функция"

  1. В таблицата FactSales превъртете до най-дясната колона и след това в заглавката на колоната щракнете върху Add Column.
  2. В лентата за формули въведете знака за равенство =.
  3. Щракнете върху бутона "Вмъкване на функция ". Вмъкване на функция Това отваря диалоговия прозорец "Вмъкване на функция ".
  4. В диалоговия прозорец "Вмъкване на функция" щракнете върху списъчното поле "Избор на категория". По подразбиране е избрано "Всички " и всички функции от категорията " Всички " са изброени по-долу. Това са много функции, така че ще искате да филтрирате функциите, за да улесните намирането на типа на функцията, която търсите.
  5. За тази формула искате да върнете някои данни, които вече съществуват в друга таблица. За тази цел ще използвате функция в категорията "Филтър". Отидете напред и щракнете върху категорията "Филтър " и след това в "Избор на функция" превъртете надолу и щракнете двукратно върху функцията СВЪРЗАНА. Щракнете върху OK , за да затворите диалоговия прозорец "Вмъкване на функция ".
  6. Използвайте IntelliSense, за да ви помогне да намерите и изберете колоната DimChannel[ChannelName].
  7. Затворете формулата и след това натиснете клавиша Enter.
  8. След като натиснете клавиша Enter, за да завършите формулата, думата "Изчисляване" се появява в лентата на състоянието в долния край на прозореца на Power Pivot. Сега ще видите, че току-що сте създали нова колона в таблицата FactSales с информация за каналите от таблицата DimChannel.
  9. Преименувайте колоната "Канал".
    Вашата формула трябва да изглежда така: =RELATED(DimChannel[ChannelName])

Току-що се запознахте с друга много важна функция в DAX – функцията RELATED . Функцията RELATED връща стойности от друга таблица. Можете да използвате RELATED, при условие че има релация между таблицата, в която сте в момента, и таблицата, съдържаща стойностите, които искате да получите. Разбира се, функцията RELATED има огромни възможности. В този случай вече можете да включите канала за продажби за всяка продажба в таблицата FactSales. Сега можете да скриете таблицата DimChannel от списъка с полета на обобщената таблица, което улеснява навигирането и виждането само на най-важната информация, от която наистина се нуждаете. Подобно на описаната по-рано функция CALCULAT, функцията RELATED е много важна и вероятно ще я използвате много пъти.

Както можете да видите, функциите в DAX могат да ви помогнат да създавате много мощни формули. Всъщност засегнахме само основите на функциите. С подобряването на уменията ви в DAX ще създавате формули, като използвате много различни функции. Едно от най-добрите места да научите подробности за всички функции DAX е в справката за изрази за анализ на данни (DAX).

Функции QuickQuiz

  1. Към какво винаги се обръща една функция?
  2. Може ли една формула да съдържа повече от една функция?
  3. Каква категория функции бихте използвали, за да обедините два текстови низа в един низ?

Отговорите ще намерите в края на тази тема.

Контекст

Контекстът е една от най-важните концепции на DAX за разбиране. Има два типа контекст в DAX; контекст на реда и контекст на филтъра. Първо ще разгледаме контекста на реда.

Контекст на реда

Контекстът на реда най-лесно се определя като текущ ред. Помните ли например колоната за изчисляеми полета, която видяхте по-рано, когато учехте синтаксиса? Формулата =[SalesAmount] – [TotalCost] изчислява стойност в колоната "Марж" за всеки ред в таблицата. Стойностите за всеки ред се изчисляват от стойностите в две други колони – [SalesAmount] и [TotalCost] в същия ред. DAX може да изчисли стойностите за всеки ред в колоната "Поле", тъй като има контекста: За всеки ред взема стойностите в колоната [TotalCost] и ги изважда от стойностите в колоната [SalesAmount].

В избраната клетка, показана по-долу, стойността $49,54 в текущия ред е изчислена чрез изваждане на стойността $51,54 в колоната [TotalCost] от стойността $101,08 в колоната [SalesAmount].

Контекст на реда в Power Pivot

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

Контекст на филтъра

Контекстът на филтъра е малко по-труден за разбиране от контекста на реда. Най-лесно можете да си представите контекста на филтъра като: Един или повече филтри, приложени в изчисление, което определя резултат или стойност.

Контекст на филтъра не съществува вместо контекста на реда; По-скоро се прилага в допълнение към контекста на реда. Например за по-нататъшно стесняване на стойностите, които да се включат в изчисление, можете да приложите контекст на филтър, който не само задава контекста на реда, но също така задава само конкретна стойност (филтър) в контекста на този ред.

Контекстът на филтъра се вижда лесно в обобщените таблици. Например когато добавите TotalCost към областта на стойностите и след това добавите Year и Region към реда или колоните, дефинирате контекст на филтър, който избира подмножество от данни въз основа на дадена година и регион.

Защо контекстът на филтъра е толкова важен за DAX? Защото, докато контекстът на филтъра може най-лесно да бъде приложен чрез добавяне на етикети на колони и редове и сегментатори в обобщената таблица, контекстът на филтъра може да бъде приложен и в DAX формула чрез дефиниране на филтър с помощта на функции като ALL, RELATED, FILTER, CALCULATE, by релации и чрез други мерки и колони. Нека например видим следната формула в мярка, наречена StoreSales:

Формула

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

Тази формула включва следните елементи на синтаксиса:

  1. Името на мярката StoreSales, последвано от двоеточие :.
  2. Операторът за знак за равенство (=) указва началото на формулата.
  3. Функцията CALCULATE оценява израз като аргумент в контекст, променен от зададените филтри.
  4. Със скоби () заграждат един или няколко аргумента.
  5. Мярка [Продажби] в същата таблица като израз. Мярката за продажби има формулата: =SUM(FactSales[SalesAmount]).
  6. Всеки филтър е разделен с точка и запетая (,).
  7. Колоната с препратката и конкретна стойност, DimChannel[ChannelName] ="Store", като филтър.

Тази формула ще гарантира, че само стойностите на продажбите, дефинирани от мярката за продажби, като филтър, се изчисляват само за редове в колоната DimChannel[ChannelName] със стойност "Store" като филтър.

Както можете да си представите, възможността за дефиниране на контекст за филтриране във формула има огромни и мощни възможности. Възможността за препратка само към конкретна стойност в свързана таблица е само един такъв пример. Не се безпокойте, ако не разберете напълно контекста веднага. Когато създавате свои собствени формули, ще разбирате по-добре контекста и защо той е толкова важен в DAX.

Контекстен бърз тест

  1. Какви са двата типа контекст?
  2. Какво е контекст на филтъра?
  3. Какво е контекст на редове?

Отговорите ще намерите в края на тази тема.

Резюме

Сега, след като имате основни познания за най-важните понятия в DAX, можете да започнете да създавате самостоятелно DAX формули за изчисляеми колони и мерки. DAX наистина може да е малко труден за научаване, но има много ресурси, с които разполагате. След като прочетете тази тема няколко пъти и експериментирате с някои от собствените си формули, можете да научите повече за други концепции и формули на DAX, които могат да ви помогнат да решите собствените си бизнес проблеми. Има много ресурси за DAX, достъпни за вас в помощта за Power Pivot, книги на SQL Server онлайн, технически документи и блогове от Microsoft и водещи професионалисти в областта на бизнес разузнаването. Wiki сайтът на ресурсния център на DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) е чудесно място да започнете. Справката за изрази за анализ на данни (DAX) също е чудесен ресурс. Запишете го в "Предпочитани".

Техническият документ на DAX в табличния модел на BI, достъпен за изтегляне (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), предоставя по-подробен поглед върху представените тук концепции, както и на много други разширени концепции и формули. Тази техническа документация също използва същата работна книга с примерна Formulas.xlsx на Contoso DAX, която вече имате.

Отговори на бързия тест

Синтаксис:

  1. Отваря функцията "Вмъкване на функция".
  2. Квадратни скоби [].
  3. =[Единична цена] – [Единична цена]

Функции:

  1. Таблица и колона.
  2. Да. Една формула може да съдържа до 64 вложени функции.
  3. Текстови функции.

Контекст:

  1. Контекст на реда и контекст на филтъра.
  2. Един или повече филтри в изчисление, което определя една стойност.
  3. Текущият ред.