Den här snabbstartsguiden är avsedd för användare som inte har Power Pivot i Excel- eller tabellmodellprojekt som skapats i SQL Server Data Tools. Det är tänkt att ge dig en snabb och enkel introduktion till hur du kan använda DAX (Data Analysis Expressions) för att lösa ett antal grundläggande datamodellerings- och analysproblem. Det här avsnittet innehåller konceptuell information, en serie uppgifter som du kan utföra och några test för att testa det du har lärt dig. När du har slutfört det här avsnittet bör du ha god förståelse för de mest grundläggande begreppen i DAX.
Vad är DAX?
DAX är en samling funktioner, operatorer och konstanter som kan användas i en formel eller uttryck för att beräkna och returnera ett eller flera värden. DAX hjälper dig att skapa ny information från data som redan finns i modellen.
Varför är DAX så viktigt?
Det är enkelt att skapa en arbetsbok och importera vissa data till den. Du kan även skapa pivottabeller eller pivotdiagram som visar viktig information utan att använda DAX-formler. Men vad händer om du behöver analysera viktiga försäljningsdata i flera produktkategorier och för olika datumintervall? Eller behöver du kombinera viktiga lagerdata från flera tabeller i olika datakällor? DAX-formler ger den här funktionen och många andra viktiga funktioner också. Om du lär dig hur du skapar effektiva DAX-formler får du ut mesta möjliga av dina data. När du får den information du behöver kan du börja lösa verkliga affärsproblem som påverkar resultatet. Det här är Business Intelligence, och DAX hjälper dig att komma dit.
Krav
Du kanske redan är bekant med att skapa formler i Microsoft Excel. Den kunskapen kommer att vara användbar för att förstå DAX, men även om du inte har erfarenhet av Excel-formler hjälper de begrepp som beskrivs här dig att komma igång med att skapa DAX-formler och lösa verkliga BI-problem direkt.
Vi kommer att fokusera specifikt på att förstå DAX-formler som används i beräkningar. Du bör redan känna till grundläggande begrepp för både beräknade kolumner och mått (kallas även beräknade fält), som båda beskrivs i Power Pivot Hjälp. Du bör också vara bekant med Power Pivot i excel-redigeringsmiljö och -verktyg.
Exempel på arbetsbok
Det bästa sättet att lära sig DAX är att skapa några grundläggande formler, använda dem med vissa faktiska data och se resultaten för dig själv. I exemplen och uppgifterna här används contoso-exempel-DAX-Formulas.xlsx-arbetsboken. Du kan ladda ned arbetsboken från http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. När du har laddat ned arbetsboken till datorn öppnar du den och öppnar sedan fönstret Power Pivot.
Nu börjar vi!
Vi kommer att rama in DAX runt tre mycket viktiga grundläggande begrepp: syntax, funktioner och sammanhang. Naturligtvis finns det andra viktiga begrepp i DAX, men att förstå dessa tre begrepp kommer att ge den bästa grunden för att bygga dina DAX-färdigheter.
Syntax
Innan du skapar egna formler ska vi ta en titt på DAX-formelsyntaxen. Syntaxen innehåller de olika element som utgör en formel, eller mer enkelt, hur formeln skrivs. Låt oss till exempel titta på en enkel DAX-formel som används för att skapa nya data (värden) för varje rad i en beräknad kolumn med namnet Marginal i tabellen Försäljningsinformation: (formeltextfärger är endast i illustrationssyfte)
Syntaxen för den här formeln innehåller följande element:
-
Likhetsteckenoperatorn (=) anger början av formeln och när formeln beräknas returneras ett resultat eller värde. Alla formler som beräknar ett värde börjar med ett likhetstecken.
-
Den refererade kolumnen [Försäljningsbelopp] innehåller de värden vi vill subtrahera från. En kolumnreferens i en formel omges alltid av hakparenteser []. Till skillnad från Excel-formler som refererar till en cell refererar en DAX-formel alltid till en kolumn.
-
Den matematiska subtraktionsoperatorn (-).
-
Den refererade kolumnen [TotalCost] innehåller de värden vi vill subtrahera från värden i kolumnen [Försäljningsbelopp].
När du försöker förstå hur du läser en DAX-formel är det ofta bra att dela upp var och en av elementen i ett språk som du tänker och talar varje dag. Du kan till exempel läsa den här formeln som:
Beräkna (=) ett värde för varje rad i den beräknade kolumnen Marginal i tabellen Försäljningsförsäljning genom att subtrahera (-) värden i kolumnen [ TotalCost ] från värden i kolumnen [ Försäljningsbelopp ].
Låt oss ta en titt på en annan typ av formel, en som används i ett mått:
Den här formeln innehåller följande syntaxelement:
-
Måttnamnet Summa av försäljningsbelopp. Formler för mått kan innehålla måttnamnet, följt av ett kolon, följt av beräkningsformeln.
-
Likhetsteckenoperatorn (=) anger början av beräkningsformeln. När det beräknas returneras ett resultat.
-
Funktionen SUMMA summerar alla tal i kolumnen [Försäljningsbelopp]. Du får lära dig mer om funktioner senare.
-
Parenteser () omger ett eller flera argument. Alla funktioner kräver minst ett argument. Ett argument överför ett värde till en funktion.
-
Den refererade tabellen Försäljningsinformation.
-
Den refererade kolumnen [Försäljningsbelopp] i tabellen Försäljningsinformation. Med det här argumentet vet funktionen SUMMA på vilken kolumn som en SUMMA ska aggregeras.
Du kan läsa den här formeln som:
För måttet Summa av försäljningsbelopp beräknar du (=) SUMMA för värden i kolumnen [ Försäljningsbelopp ] i tabellen Försäljningssumma.
När det placeras i släppzonen Värden i en pivottabellfältlista beräknas och returneras värden som definierats av varje cell i pivottabellen, till exempel mobiltelefoner i USA.
Observera att det finns några olika saker i den här formeln jämfört med formeln som vi använde för den beräknade kolumnen Marginal. I synnerhet introducerade vi en funktion, SUMMA. Funktioner är förskrivna formler som gör det enklare att göra komplexa beräkningar och manipuleringar med tal, datum, tid, text med mera. Du får lära dig mer om funktioner senare.
Till skillnad från den beräknade kolumnen Marginal tidigare ser du att kolumnen [Försäljningsbelopp] föregicks av tabellen Försäljningsförsäljning där kolumnen hör hemma. Det här kallas för ett fullständigt kvalificerat kolumnnamn eftersom det innehåller kolumnnamnet som föregås av tabellnamnet. Kolumner som refereras i samma tabell kräver inte att tabellnamnet inkluderas i formeln. Det kan göra långa formler som refererar till många kolumner kortare och enklare att läsa. Det är dock bra att alltid ta med tabellnamnet i måttformler, även när de finns i samma tabell.
Obs!: Om namnet på en tabell innehåller blanksteg, reserverade nyckelord eller otillåtna tecken måste du omge tabellnamnet med enkla citattecken. Du måste också omge tabellnamnen med citattecken om namnet innehåller några tecken utanför det alfanumeriska ANSI-teckenområdet, oavsett om språkinställningen stöder teckenuppsättningen eller inte.
Det är mycket viktigt att formlerna har rätt syntax. I de flesta fall returneras ett syntaxfel om syntaxen inte är korrekt. I andra fall kan syntaxen vara korrekt, men värdena som returneras kanske inte är vad du förväntar dig. Power Pivot (och SQL Server Data Tools) innehåller IntelliSense; en funktion som används för att skapa syntaktiskt korrekta formler genom att hjälpa dig att välja rätt element.
Nu ska vi skapa en enkel formel. Den här uppgiften hjälper dig att ytterligare förstå formelsyntaxen och hur Funktionen IntelliSense i formelfältet kan hjälpa dig.
Uppgift: Skapa en enkel formel för en beräknad kolumn
-
Om du inte redan befinner dig i Power Pivot-fönstret klickar du på Power Pivot fönster i menyfliksområdet Power Pivot i Excel.
-
Klicka på tabellen Försäljningsinformation (flik) i fönstret Power Pivot.
-
Bläddra till den kolumn som är längst till höger och klicka sedan på Lägg till kolumn i kolumnrubriken.
-
Klicka i formelfältet högst upp i modelldesignerfönstret.
Markören visas nu i formelfältet. I formelfältet kan du skriva en formel för en beräknad kolumn eller ett beräknat fält.
Vi tar en stund och tittar på de tre knapparna till vänster om formelfältet.
När markören är aktiv i formelfältet aktiveras de tre knapparna. Knappen längst till vänster, X, är helt enkelt en avbryt-knapp. Klicka på den. Markören visas inte längre i formelfältet och knappen Avbryt och bockmarkering visas inte längre. Klicka i formelfältet igen. Knappen Avbryt och bockmarkeringen visas nu igen. Det innebär att du är redo att börja skriva in en formel.
Bockmarkeringsknappen är kontrollformelknappen. Det gör inte mycket förrän du har angett en formel. Vi kommer tillbaka till det om en liten stund.
Klicka på fx-knappen . Du ser att en ny dialogruta visas. dialogrutan Infoga funktion. Dialogrutan Infoga funktion är det enklaste sättet att komma igång med att ange en DAX-formel. Vi lägger till en funktion i en formel när vi skapar ett mått lite senare, men för tillfället behöver du inte lägga till en funktion i formeln för den beräknade kolumnen. Stäng dialogrutan Infoga funktion.
-
Skriv ett likhetstecken =i formelfältet och skriv sedan en inledande hakparentes [. Ett litet fönster visas med alla kolumner i tabellen Försäljningsinformation. Det här är IntelliSense i praktiken.
Eftersom beräknade kolumner alltid skapas i den aktiva tabellen du befinner dig i behöver du inte ange tabellnamnet före kolumnnamnet. Rulla nedåt och dubbelklicka sedan på [SalesQuantity]. Du kan också bläddra till det kolumnnamn du vill använda och sedan trycka på Tabb.
Markören är nu aktiv till höger om [SalesQuantity].
-
Skriv ett blanksteg och skriv sedan en subtraktionsoperator – (ett minustecken) och skriv sedan ett annat blanksteg.
-
Skriv nu en annan inledande hakparentes [. Den här gången markerar du kolumnen [Returkvantitet] och trycker sedan på Retur.
Om du får ett felmeddelande bör du titta noga på syntaxen. Om det behövs kan du jämföra den med formeln i den beräknade kolumnen Marginal som beskrevs tidigare.
När du har tryckt på Retur för att slutföra formeln visas ordet Beräknande i statusfältet längst ned i Power Pivot fönstret. Det går snabbt, även om du just har beräknat nya värden för mer än tre miljoner rader.
-
Högerklicka på kolumnrubriken och byt namn på kolumnen NetSales.
Klart! Du har just skapat en enkel men mycket kraftfull DAX-formel. För varje rad i tabellen Försäljningsförsäljning beräknar netförsäljningsformeln ett värde genom att subtrahera värdet i kolumnen [ReturnQuantity] från värdet i kolumnen [SalesQuantity]. Lägg märke till hur vi just sa "För varje rad". Detta är en glimt av ett annat mycket viktigt koncept i DAX; radkontext. Du får mer information om radkontexten senare.
Något som är viktigt att förstå när du skriver en operator i en DAX-formel är datatypen i argumenten du använder. Om du till exempel skulle skriva följande formel, = 1 & 2, skulle det returnerade värdet vara ett textvärde på "12". Det beror på att operatorn et-tecken (&) är avsedd för sammanfogning av text. DAX tolkar formeln till att läsa: Beräkna ett resultat genom att ta värdet 1 som text och lägga till värdet 2 som text. Om du nu skriver = 1 + 2 läser DAX upp formeln som: Beräkna ett resultat genom att ta det numeriska värdet 1 och lägga till det numeriska värdet 2. Resultatet är naturligtvis "3", ett numeriskt värde. DAX beräknar resulterande värden beroende på operatorn i formeln, inte baserat på datatypen för kolumner som används i argumentet. Datatyper i DAX är mycket viktiga, men ligger utanför snabbstartsguiden. Mer information om datatyper och operatorer i DAX-formler finns i DAX-referensen (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) i Books Online.
Vi provar en annan. Den här gången skapar du ett mått genom att skriva formeln och använda IntelliSense. Oroa dig inte för mycket om du inte förstår formeln fullt ut. Det viktiga här är att lära dig hur du skapar en formel med hjälp av flera element tillsammans i rätt syntax.
Uppgift: Skapa en måttformel
-
Klicka i en tom cell i beräkningsområdet i tabellen Försäljningsinformation . Det här är området med tomma celler precis under en tabell i Power Pivot fönster.
-
I formelfältet skriver du namnet Föregående kvartalsförsäljning:.
-
Skriv ett likhetstecken = för att påbörja beräkningsformeln.
-
Skriv de första bokstäverna CAL och dubbelklicka sedan på den funktion du vill använda. I den här formeln vill du använda funktionen CALCULATE .
-
Skriv en inledande parentes ( för att börja argumenten som ska skickas till funktionen CALCULATE.
Observera att när du har skrivit den inledande parentesen visar IntelliSense argumenten som krävs för funktionen CALCULATE. Du kommer att lära dig om argument om lite.
-
Skriv de första bokstäverna i tabellen Försäljningsinformation och dubbelklicka sedan på Försäljningsinformation[Försäljning] i listrutan.
-
Skriv ett kommatecken (,) för att ange det första filtret, skriv sedan, PRE, och dubbelklicka sedan på funktionen FÖREGÅENDE KVARTIL .
När du har valt funktionen PREVIOUSQUARTER visas en annan inledande parentes som anger att ett annat argument krävs. den här gången för funktionen PREVIOUSQUARTER.
-
Skriv de första bokstäverna Dim och dubbelklicka sedan på DimDate[DateKey].
-
Stäng både argumentet som skickas till funktionen FÖREGÅENDE KVARTIL och funktionen CALCULATE genom att skriva två avslutande parenteser )).
Formeln bör nu se ut så här:
Föregående kvartal Försäljning:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
-
Verifiera formeln genom att klicka på knappen Kontrollera formel i formelfältet. Om du får ett felmeddelande kontrollerar du varje element i syntaxen.
Du klarade det! Du har just skapat ett mått med DAX, och inte ett lätt mått på det. Vad den här formeln gör är att beräkna den totala försäljningen för föregående kvartal, beroende på vilka filter som används i en pivottabell eller ett pivotdiagram.
Du har precis introducerats för flera viktiga aspekter av DAX-formler. För det första innehåller den här formeln två funktioner. Lägg märke till att funktionen FÖREGÅENDE KVARTIL är kapslad som ett argument som skickas till funktionen CALCULATE . DAX-formler kan innehålla upp till 64 kapslade funktioner. Det är osannolikt att en formel skulle innehålla så många kapslade funktioner. I själva verket skulle en sådan formel vara mycket svår att skapa och felsöka, och det skulle förmodligen inte vara särskilt snabbt heller.
I den här formeln använde du även filter. Filter begränsar vad som ska beräknas. I det här fallet valde du ett filter som ett argument, vilket i själva verket är en annan funktion. Du får lära dig mer om filter senare.
Slutligen använde du funktionen CALCULATE. Detta är en av de mest kraftfulla funktionerna i DAX. När du skapar datamodeller och skapar mer komplexa formler använder du förmodligen den här funktionen många gånger. Att diskutera funktionen CALCULATE ligger utanför den här snabbstartsfunktionen, men allteftersom dina kunskaper om DAX växer bör du vara särskilt uppmärksam på den här.
Obs!: För att kunna använda tidsinformationsfunktioner i DAX-formler måste du vanligtvis ange en unik datumkolumn med hjälp av dialogrutan Markera som datumtabell. I contoso DAX-formel Samples.xlsx-arbetsboken markeras kolumnen DateKey i tabellen DimDate som den unika datumkolumnen.
Extra kredit
Du kanske frågar: "Vilken är den enklaste DAX-formeln jag kan skapa?" Svaret på det är "formeln du inte behöver". Och det är precis vad du kan göra genom att använda en standardaggregeringsfunktion i ett mått. Nästan alla datamodeller måste filtrera och beräkna på aggregerade data. Funktionen SUMMA i måttet Summa av försäljningsbelopp som du såg tidigare används till exempel för att summera alla tal i en viss kolumn. DAX innehåller flera andra funktioner som även sammanställer värden. Du kan automatiskt skapa formler med standardaggregeringar med hjälp av funktionen Autosumma.
Extra kreditaktivitet: Skapa en måttformel med hjälp av funktionen Autosumma
-
Bläddra till kolumnen ReturnQuantity i tabellen Försäljningsinformation och klicka sedan på kolumnrubriken för att markera hela kolumnen.
-
Klicka på knappen Autosumma i gruppen Beräkningar på fliken Start i menyfliksområdet.
Klicka på nedpilen bredvid Autosumma och klicka sedan på Medel (lägg märke till de andra standardaggregeringsfunktionerna som du också kan använda).
Omedelbart skapas ett nytt mått med namnet Medel för ReturnQuantity: följt av formeln =AVERAGE([ReturnQuantity]).
Var inte det lätt nu? Naturligtvis är inte alla formler du skapar så enkla. Men genom att använda funktionen Autosumma kan du skapa snabba och enkla formler med hjälp av vanliga aggregeringsberäkningar.
Detta bör ge dig en ganska god förståelse för syntaxen som används i DAX-formler. Du har också introducerats till några riktigt häftiga funktioner som IntelliSense och AutoSumma som hjälper dig att skapa snabba, enkla och korrekta formler. Naturligtvis finns det mycket mer du kan lära dig om syntax. En bra plats att lära sig mer på är DAX-referensen eller SQL Books Online.
Syntax QuickQuiz
-
Vad gör den här knappen i formelfältet?
-
Vad omger alltid ett kolumnnamn i en DAX-formel?
-
Hur skulle du skriva en formel för följande:
I tabellen DimProduct beräknar du ett värde för varje rad i den beräknade kolumnen UnitMargin genom att subtrahera värden i kolumnen UnitCost från värden i kolumnenEnhetspris?
Svar ges i slutet av det här avsnittet.
Funktioner
Funktioner är fördefinierade formler som utför beräkningar med hjälp av specifika värden, så kallade argument, i en viss ordning eller struktur. Argument kan vara andra funktioner, en annan formel, kolumnreferenser, tal, text, logiska värden som SANT eller FALSKT eller konstanter.
DAX innehåller följande kategorier av funktioner: Datum och tid, Information, Logik, Matematisk, Statistik, Text och Tidsinformation. Om du är bekant med funktioner i Excel-formler kommer många av funktionerna i DAX att se ut ungefär som du. DAX-funktioner är dock unika på följande sätt:
-
En DAX-funktion refererar alltid till en fullständig kolumn eller en tabell. Om du bara vill använda vissa värden från en tabell eller kolumn kan du lägga till filter i formeln.
-
Om du behöver anpassa beräkningar rad för rad tillhandahåller DAX funktioner som gör att du kan använda det aktuella radvärdet eller ett relaterat värde som ett slags argument för att utföra beräkningar som varierar beroende på sammanhang. Du får lära dig mer om kontext senare.
-
DAX innehåller många funktioner som returnerar en tabell i stället för ett värde. Tabellen visas inte, men används för att mata in andra funktioner. Du kan till exempel hämta en tabell och sedan räkna de distinkta värdena i den eller beräkna dynamiska summor över filtrerade tabeller eller kolumner.
-
DAX innehåller en mängd olika tidsinformationsfunktioner. Med de här funktionerna kan du definiera eller välja datumintervall och utföra dynamiska beräkningar baserat på dem. Du kan till exempel jämföra summor över parallella perioder.
Ibland är det svårt att veta vilka funktioner du kan behöva använda i en formel. Power Pivot och tabellmodelldesignern i SQL Server Data Tools innehåller funktionen Infoga funktion, en dialogruta som hjälper dig att välja funktioner efter kategori och ger korta beskrivningar för varje funktion.
Nu ska vi skapa en ny formel som innehåller en funktion som du väljer med funktionen Infoga funktion:
Uppgift: Lägga till en funktion i en formel med hjälp av Infoga funktion
-
Bläddra till kolumnen längst till höger i tabellen Försäljningsförsäljning och klicka sedan på Lägg till kolumn i kolumnrubriken.
-
Skriv ett likhetstecken i formelfältet, =.
-
Klicka på knappen Infoga funktion . Då öppnas dialogrutan Infoga funktion .
-
Klicka på listrutan Välj en kategori i dialogrutan Infoga funktion. Som standard är Alla markerat och alla funktioner i kategorin Alla visas nedan. Det är många funktioner, så du vill filtrera funktionerna för att göra det enklare att hitta den typ av funktion du letar efter.
-
För den här formeln vill du returnera vissa data som redan finns i en annan tabell. Då ska du använda en funktion i kategorin Filter. Klicka på kategorin Filter och bläddra sedan nedåt och dubbelklicka på funktionen RELATED i Välj en funktion. Stäng dialogrutan Infoga funktion genom att klicka på OK.
-
Använd IntelliSense för att hitta och välja kolumnen DimChannel[ChannelName].
-
Stäng formeln och tryck sedan på Retur.
-
När du har tryckt på Retur för att slutföra formeln visas ordet Beräknande i statusfältet längst ned i Power Pivot fönstret. Nu ser du att du just har skapat en ny kolumn i tabellen Försäljningsinfo med kanalinformation från DimChannel-tabellen.
-
Byt namn på kolumnkanalen.
Formeln bör se ut så här: =RELATED(DimChannel[ChannelName])
Du har precis introducerats till en annan mycket viktig funktion i DAX, funktionen RELATED . Funktionen RELATED returnerar värden från en annan tabell. Du kan använda RELATED förutsatt att det finns en relation mellan tabellen du befinner dig i och tabellen som innehåller de värden du vill få. Funktionen RELATED har naturligtvis enorma möjligheter. I det här fallet kan du nu ta med försäljningskanalen för varje försäljning i tabellen Försäljningsinformation. Du kan nu dölja DimChannel-tabellen från fältlistan för pivottabellen, vilket gör det enklare att navigera och bara se den viktigaste informationen du verkligen behöver. Precis som funktionen BERÄKNA som beskrevs tidigare är funktionen RELATERAD mycket viktig, och du kommer sannolikt att använda den många gånger.
Som du kan se kan funktioner i DAX hjälpa dig att skapa mycket kraftfulla formler. Vi berörde egentligen bara grunderna i funktioner. När dina DAX-färdigheter förbättras skapar du formler med många olika funktioner. En av de bästa platserna att lära sig information om alla DAX-funktioner är i DAX-referensen (Data Analysis Expressions).
Funktioner QuickQuiz
-
Vad refererar en funktion alltid till?
-
Kan en formel innehålla fler än en funktion?
-
Vilken funktionskategori skulle du använda för att sammanfoga två textsträngar till en sträng?
Svar ges i slutet av det här avsnittet.
Sammanhang
Kontext är ett av de viktigaste DAX-begreppen att förstå. Det finns två typer av kontext i DAX. radkontext och filterkontext. Vi kommer först att titta på radkontext.
Radkontext
Radkontexten är lättast att tänka på som aktuell rad. Kommer du till exempel ihåg den beräknade kolumnen Marginal som du såg tidigare när du lärde dig mer om syntax? Formeln =[Försäljningsbelopp] - [TotalKost] beräknar ett värde i kolumnen Marginal för varje rad i tabellen. Värdena för varje rad beräknas utifrån värden i två andra kolumner, [Försäljningsbelopp] och [TotalCost] på samma rad. DAX kan beräkna värdena för varje rad i kolumnen Marginal eftersom det har sammanhanget: För varje rad tar den värden i kolumnen [TotalCost] och subtraherar dem från värden i kolumnen [Försäljningsbelopp].
I den markerade cellen som visas nedan beräknades värdet 49,54 kr på den aktuella raden genom att värdet 51,54 kr subtraheras i kolumnen [TotalCost] från värdet 101,08 kr i kolumnen [Försäljningsbelopp].
Radkontexten gäller inte bara för beräknade kolumner. Radkontexten gäller även när en formel har en funktion som använder filter för att identifiera en enstaka rad i en tabell. Funktionen använder i sig en radkontext för varje rad i tabellen som den filtrerar över. Den här typen av radkontext gäller oftast för mått.
Filterkontext
Filterkontext är lite svårare att förstå än radkontext. Det är enklast att tänka på filterkontext som: Ett eller flera filter som används i en beräkning som bestämmer ett resultat eller värde.
Filterkontexten finns inte i stället för radkontext. gäller den utöver radkontexten. Om du till exempel vill begränsa värdena som ska ingå i en beräkning ytterligare kan du använda en filterkontext som inte bara anger radkontexten, utan också bara anger ett visst värde (filter) i radkontexten.
Filterkontext visas enkelt i pivottabeller. När du till exempel lägger till TotalCost i området Värden och sedan lägger till År och Region i raden eller kolumnerna, definierar du en filterkontext som väljer en delmängd data baserat på ett visst år och en viss region.
Varför är filterkontexten så viktig för DAX? Eftersom filterkontexten är lättast att använda genom att lägga till kolumn- och radetiketter och utsnitt i en pivottabell, kan filterkontext även användas i en DAX-formel genom att definiera ett filter med funktioner som ALL, RELATED, FILTER, CALCULATE, by relationships och efter andra mått och kolumner. Låt oss till exempel titta på följande formel i ett mått med namnet StoreFörsäljning:
Den här formeln är helt klart mer komplex än några av de andra formlerna som du har sett. Men för att bättre förstå den här formeln kan vi dela upp den, ungefär som vi har gjort med andra formler.
Den här formeln innehåller följande syntaxelement:
-
Måttnamnet StoreFörsäljning följt av ett kolon :.
-
Likhetsteckenoperatorn (=) anger början av formeln.
-
Funktionen CALCULATE utvärderar ett uttryck som ett argument i en kontext som ändras av de angivna filtren.
-
Parenteser () omger ett eller flera argument.
-
Ett mått [Försäljning] i samma tabell som ett uttryck. Måttet Försäljning har formeln: =SUMMA(Försäljningsförsäljning[Försäljningsbelopp]).
-
Ett kommatecken (,) avgränsar varje filter.
-
Den refererade kolumnen och ett visst värde, DimChannel[ChannelName] ="Store", som ett filter.
Den här formeln säkerställer att endast försäljningsvärden, som definieras av måttet Försäljning, som ett filter, endast beräknas för rader i kolumnen DimChannel[ChannelName] med värdet "Store", som ett filter.
Som du kan föreställa dig har möjligheten att definiera filterkontext i en formel enorm och kraftfull förmåga. Att bara kunna referera till ett visst värde i en relaterad tabell är bara ett sådant exempel. Oroa dig inte om du inte helt förstår kontexten direkt. När du skapar egna formler förstår du bättre sammanhang och varför det är så viktigt i DAX.
Snabbquiz för kontext
-
Vilka är de två typerna av sammanhang?
-
Vad är filterkontext?
-
Vad är radkontext?
Svar ges i slutet av det här avsnittet.
Sammanfattning
Nu när du har en grundläggande förståelse för de viktigaste begreppen i DAX kan du börja skapa DAX-formler för beräknade kolumner och mått på egen hand. DAX kan verkligen vara lite knepigt att lära sig, men det finns många resurser tillgängliga för dig. När du har läst igenom det här avsnittet några gånger och experimenterat med några av dina egna formler kan du läsa mer om andra DAX-koncept och formler som kan hjälpa dig att lösa dina egna affärsproblem. Det finns många DAX-resurser tillgängliga i Power Pivot Hjälp, SQL Server Books Online, whitepapers och bloggar från både Microsoft och ledande BI-proffs. Wikin DAX Resource Center (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) är ett bra ställe att börja på. DAX-referensen (Data Analysis Expressions) är också en bra resurs. Se till att spara den i Favoriter.
DAX i BI Tabular Model whitepaper, som kan laddas ned (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409) ger en mer detaljerad titt på begreppen som introduceras här samt många andra avancerade begrepp och formler. Det här whitepapern använder också samma Contoso DAX-exempel Formulas.xlsx arbetsbok som du redan har.
QuickQuiz-svar
Syntax:
-
Öppnar funktionen Infoga funktion.
-
Hakparenteser [].
-
=[Enhetspris] – [Enhetskod]
Funktioner:
-
En tabell och en kolumn.
-
Ja. En formel kan innehålla upp till 64 kapslade funktioner.
Sammanhang:
-
Radkontext och filterkontext.
-
Ett eller flera filter i en beräkning som bestämmer ett enda värde.
-
Den aktuella raden.