Den här snabbstarten är avsedd för användare som inte använt Power Pivot i Excel tidigare eller tabellmodellprojekt som skapats i SQL Server Data Tools. Syftet är 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 goda kunskaper om 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 ett uttryck för att beräkna och returnera ett eller flera värden. Enklare uttryckt kan man säga att 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 data till den. Du kan till och med 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 över flera produktkategorier och för olika datumintervall? Eller vill 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. Genom att lära dig att skapa effektiva DAX-formler kan du få 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 ditt resultat. 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. Dessa kunskaper kommer att vara till hjälp för att förstå DAX, men även om du inte har någon erfarenhet av Excel-formler kommer begreppen som beskrivs här att hjälpa 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älpen. Du bör också vara bekant med Power Pivot i Excel-redigeringsmiljön och -verktygen.
Exempel på arbetsbok
Det bästa sättet att lära sig DAX är att skapa några grundläggande formler, använda det med faktiska data och se resultatet själv. I exemplen och uppgifterna här används arbetsboken Contoso Sample DAX Formulas.xlsx. Du kan ladda ned arbetsboken från http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. När du har hämtat arbetsboken till datorn öppnar du den och öppnar sedan PowerPivot-fönstret.
Låt oss börja!
Vi kommer att rama in DAX kring tre mycket viktiga grundläggande begrepp: syntax, funktioner och kontext. Det finns naturligtvis andra viktiga begrepp i DAX, men att förstå de här tre begreppen ger den bästa grunden för att bygga upp dina DAX-färdigheter.
Syntax
Innan du skapar några egna formler ska vi ta en titt på DAX-formelsyntaxen. Syntaxen innefattar de olika elementen som utgör en formel, eller enklare uttryckt, hur formeln är skriven. Vi tittar till exempel 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 Margin i en FactSales-tabell: (Formeltextens färger är endast i illustrativt syfte)
Syntaxen för den här formeln innehåller följande element:
- Likhetsteckenoperatorn (=) anger början av formeln, och när den här formeln beräknas returnerar den 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 som 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 [TotalKostnad] innehåller de värden som vi vill subtrahera från värdena i kolumnen [Försäljningsbelopp].
När du försöker förstå hur du ska läsa en DAX-formel är det ofta bra att bryta ned varje element till ett språk 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äljningsinfo genom att subtrahera (-) värden i kolumnen [TotalKostnad] från värdena i kolumnen [Försäljningsbelopp].
Nu ska vi titta på en annan typ av formel som används i ett mått:
Den här formeln innehåller följande syntaxelement:
- Måttnamnet Summa av Sales Amount. 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. Vid beräkning returnerar det ett resultat.
- Funktionen SUMMA summerar alla tal i kolumnen [Försäljningsbelopp]. Du kommer att lära dig mer om funktioner senare.
- Parentes () omger ett eller flera argument. Alla funktioner kräver minst ett argument. Ett argument skickar ett värde till en funktion.
- Den refererade tabellen FactSales.
- Den refererade kolumnen [SalesAmount] i tabellen FactSales. Med det här argumentet vet funktionen SUMMA i vilken kolumn en SUMMA ska aggregeras.
Du kan läsa den här formeln som:
För måttet med namnet Summa av Sales Amount beräknar (=) du SUMMAN av värdena i kolumnen [SalesAmount] i tabellen FactSales.
När det här måttet placeras i släppzonen Värden i fältlistan för en pivottabell beräknar och returnerar det värden som definieras av varje cell i pivottabellen, till exempel Mobiltelefoner i USA.
Observera att det är några saker som inte överensstämmer med den här formeln jämfört med formeln vi använde för den beräknade kolumnen Marginal. I synnerhet introducerade vi en funktion, SUMMA. Funktioner är färdigskrivna formler som gör det enklare att göra komplexa beräkningar och manipulationer med tal, datum, tid, text med mera. Du kommer att 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äljningsinfo som kolumnen tillhör. Det här kallas för ett fullständigt kvalificerat kolumnnamn eftersom det innehåller kolumnnamnet som föregås av tabellnamnet. I kolumner som refereras till i samma tabell krävs inte att tabellnamnet ingår i formeln. Det kan göra långa formler som refererar till många kolumner kortare och lättare att läsa. Men det är bra att alltid inkludera tabellnamnet i måttformlerna, ä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 tabellnamn med citattecken om namnet innehåller tecken utanför det alfanumeriska ANSI-teckenintervallet, oavsett om ditt språk stöder teckenuppsättningen eller inte.
Det är mycket viktigt att dina formler har rätt syntax. Om syntaxen inte är korrekt returneras i de flesta fall ett syntaxfel. 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 markera rätt element.
Nu ska vi skapa en enkel formel. Den här uppgiften hjälper dig att ytterligare förstå formelsyntaxen och hur IntelliSense-funktionen i formelfältet kan hjälpa dig.
Uppgift: Skapa en enkel formel för en beräknad kolumn
- Om du inte redan är i Power Pivot-fönstret i Excel klickar du på Power Pivot-fönstret i Power Pivot-menyfliksområdet.
- Klicka på tabellen (fliken) Försäljningsinfo i Power Pivot-fönstret.
- Bläddra till kolumnen längst till höger och klicka sedan på Lägg till kolumn i kolumnrubriken.
- Klicka i formelfältet längs överkanten av 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.
Låt oss ta en titt på de tre knapparna till vänster om formelfältet.
När markören är aktiv i formelfältet blir dessa tre knappar aktiva. Knappen längst till vänster, X, är helt enkelt en Avbryt-knapp. Gå vidare och klicka på den. Markören visas inte längre i formelfältet och knapparna Avbryt och bockmarkeringar visas inte längre. Klicka i formelfältet igen. Knappen Avbryt och bockmarkeringsknappen visas nu igen. Det betyder att du är redo att börja skriva en formel.
Bockmarkeringsknappen är formelkontrollknappen. Det gör inte mycket förrän du har angett en formel. Vi återkommer till det om en 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 kommer att lägga till en funktion i en formel när vi skapar ett mått lite senare, men du behöver inte lägga till någon funktion i formeln för den beräknade kolumnen just nu. Stäng dialogrutan Infoga funktion. - I formelfältet skriver du ett likhetstecken = och sedan en inledande hakparentes [. Du ser att ett litet fönster visas med alla kolumner i tabellen FactSales. Det här är IntelliSense i praktiken.
Eftersom beräknade kolumner alltid skapas i den aktiva tabellen som du befinner dig i, behöver du inte inleda kolumnnamnet med tabellnamnet. Rulla nedåt och dubbelklicka sedan på [SalesQuantity]. Du kan också rulla 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 sedan ett blanksteg till.
- Skriv nu ytterligare en inledande hakparentes [. Den här gången markerar du kolumnen [ReturnQuantity] och trycker på Retur.
Om du får ett felmeddelande bör du titta noga på syntaxen. Om det behövs kan du jämföra 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äkning i statusfältet längst ned i Power Pivot-fönstret. Det går fort, trots att du nyss har beräknat nya värden för mer än tre miljoner rader. - Högerklicka på kolumnrubriken och byt namn på kolumnen till NetSales.
Klart! Du har just skapat en enkel men mycket kraftfull DAX-formel. För varje rad i tabellen Försäljningsinfo beräknar formeln NetSales 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". Det här är en glimt av ett annat mycket viktigt begrepp i DAX. Radkontext. Du kommer att lära dig mer om radkontext senare.
Något som är viktigt att förstå när du skriver en operator i en DAX-formel är datatypen i de argument du använder. Om du till exempel skriver följande formel: = 1 & 2, blir det returnerade värdet textvärdet "12". Det beror på att et-tecknet (&) är till för textsammanfogning. DAX tolkar följande formel: 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 formeln upp så här: 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. I DAX beräknas resulterande värden beroende på operatorn i formeln, inte baserat på datatypen för kolumnerna som används i argumentet. Datatyper i DAX är mycket viktiga, men omfattas inte av den hä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.
Nu provar vi ett annat. Den här gången skapar du ett mått genom att skriva formeln och använda IntelliSense. Oroa dig inte så mycket om du inte helt förstår formeln. Det viktiga här är att lära sig hur man skapar en formel med flera element tillsammans i korrekt syntax.
Uppgift: Skapa en måttformel
- Klicka i en tom cell i beräkningsområdet i tabellen Försäljningsinfo . Det här är området med tomma celler precis under en tabell i Power Pivot-fönstret.
- I formelfältet skriver du namnet Försäljning föregående kvartal:.
- Skriv ett likhetstecken = för att påbörja beräkningsformeln.
- Skriv de första bokstäverna CAL och dubbelklicka sedan på den funktion som du vill använda. I den här formeln vill du använda funktionen CALCULATE .
- Skriv en inledande parentes ( för att inleda argumenten som ska skickas till funktionen CALCULATE.
Observera att när du har skrivit den inledande parentesen visar IntelliSense de argument som krävs för funktionen CALCULATE. Du kommer att lära dig mer om argument om en liten stund. - Skriv de första bokstäverna i tabellen Försäljningsinfo och dubbelklicka sedan på Försäljningsinfo [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ÖRERÅKVARTAL .
När du har valt funktionen FÖREGÅENDEKVARTAL 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 PREVIOUSQUARTER och CALCULATE-funktionen genom att skriva två avslutande parenteser )).
Formeln bör nu se ut så här:
Föregående kvartals försäljning:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey])) - Formeln verifieras 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 hjälp av DAX, och det är inte lätt. Vad denna formel 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 fått lära dig flera viktiga aspekter av DAX-formler. För det första innehöll den här formeln två funktioner. Observera att funktionen PREVIOUSQUARTER ä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. Faktum är att en sådan formel skulle vara mycket svår att skapa och felsöka, och den skulle förmodligen inte vara särskilt snabb heller.
I den här formeln har du också använt filter. Filter begränsar vad som ska beräknas. I det här fallet valde du ett filter som ett argument, som egentligen är en annan funktion. Du kommer att lära dig mer om filter senare.
Slutligen har du använt funktionen CALCULATE. Det här är en av de mest kraftfulla funktionerna i DAX. När du skapar datamodeller och mer komplexa formler kommer du förmodligen att använda den här funktionen många gånger. Att diskutera funktionen CALCULATE ligger utanför tillämpningsområdet för den här snabbstarten, men i takt med att dina kunskaper om DAX växer bör du ägna särskild uppmärksamhet åt detta.
Obs
För att kunna använda tidsinformationsfunktioner i DAX-formler måste du vanligtvis ange en unik datumkolumn i dialogrutan Markera som datumtabell. I arbetsboken Contoso DAX Formula Samples.xlsx väljs kolumnen DateKey i tabellen DimDate som unik datumkolumn.
Extra kredit
Du kanske undrar: "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 behöver filtrera och beräkna baserat på aggregerade data. Till exempel används funktionen SUMMA i måttet Försäljningssumma som du såg tidigare för att summera alla tal i en viss kolumn. I DAX finns även flera andra funktioner som aggregerar 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
- I tabellen Försäljningsinfo bläddrar du till kolumnen ReturnQuantity och klickar 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 sedan på Medelvärde (observera de andra standardaggregeringsfunktionerna du också kan använda).
Omedelbart skapas ett nytt mått med namnet Average of ReturnQuantity: följt av formeln =AVERAGE([ReturnQuantity]).
Var inte det enkelt? 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 standardmängdberäkningar.
Det bör ge dig en ganska god förståelse av syntaxen som används i DAX-formler. Du introducerades också till några riktigt coola funktioner som IntelliSense och AutoSum som hjälper dig att skapa snabba, enkla och exakta formler. Naturligtvis finns det mycket mer du kan lära dig om syntax. Ett bra ställe att lära sig mer ä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:
Beräkna ett värde i tabellen DimProduct för varje rad i den beräknade kolumnen UnitMargin genom att subtrahera värdena i kolumnen UnitCost från värdena i kolumnen UnitPrice?
Svaren finns i slutet av det här avsnittet.
Funktioner
Funktioner är fördefinierade formler som utför beräkningar baserat på särskilda 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.
I DAX finns följande funktionskategorier: Datum- och tidsfunktioner, informationsfunktioner, logiska och matematiska, statistiska, text- och tidsinformationsfunktioner. Om du är bekant med funktioner i Excel-formler kommer många av funktionerna i DAX att likna dig. DAX-funktioner är emellertid unika på följande sätt:
- En DAX-funktion refererar alltid till en hel kolumn eller 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 innehåller DAX funktioner som gör att du kan använda det aktuella radvärdet eller ett relaterat värde som en typ av argument för att utföra beräkningar som varierar beroende på kontext. Du kommer att lära dig mer om kontext senare.
- I DAX finns många funktioner som returnerar en tabell i stället för ett värde. Tabellen visas inte, men används för att ge indata till 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 i filtrerade tabeller eller kolumner.
- I DAX finns 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 hjälp av 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äljningsinfo 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 bör filtrera funktionerna så att det blir lättare 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. För det ska du använda en funktion i kategorin Filter. Gå vidare och klicka på kategorin Filter och rulla sedan nedåt i Välj en funktion och dubbelklicka på funktionen RELATED. Stäng dialogrutan Infoga funktion genom att klicka på OK.
- Använd IntelliSense för att hitta och markera kolumnen DimChannel[ChannelName].
- Stäng formeln och tryck på Retur.
- När du har tryckt på Retur för att slutföra formeln visas ordet Beräkning 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 tabellen DimChannel.
- Byt namn på kolumnen till Kanal.
Formeln bör se ut så här: =RELATED(DimChannel[ChannelName])
Du har just fått stifta bekantskap med en annan mycket viktig funktion i DAX, nämligen funktionen RELATED . Funktionen RELATED returnerar värden från en annan tabell. Du kan använda RELATED under förutsättning att det finns en relation mellan den tabell som du arbetar med och den tabell som innehåller de värden du vill hämta. Naturligtvis har RELATED-funktionen 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äljningsinfo. Nu kan du dölja tabellen DimChannel från fältlistan för pivottabellen, vilket gör det enklare att navigera och bara se den viktigaste informationen du verkligen behöver. I likhet med funktionen CALCULATE som beskrevs tidigare är funktionen RELATED mycket viktig och du kommer förmodligen att använda den många gånger.
Som du ser kan funktioner i DAX hjälpa dig att skapa mycket kraftfulla formler. Vi har egentligen bara berört det grundläggande i funktionerna. I takt med att dina DAX-färdigheter förbättras kommer du att skapa formler med hjälp av många olika funktioner. Ett av de bästa ställena att få information om alla DAX-funktioner är i referensen för DAX (Data Analysis Expressions).
Funktioner QuickQuiz
- Vad refererar en funktion alltid till?
- Kan en formel innehålla mer än en funktion?
- Vilken funktionskategori skulle du använda för att sammanfoga två textsträngar till en sträng?
Svaren finns 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. Först tittar vi på radkontexten.
Radkontext
Radkontext är enklast att tänka på som den aktuella raden. Kommer du till exempel ihåg den beräknade kolumnen Marginal som du såg tidigare när du lärde dig om syntax? Formeln =[Försäljningsbelopp] - [Totalkostnad] beräknar ett värde i kolumnen Marginal för varje rad i tabellen. Värdena för varje rad beräknas från värden i två andra kolumner, [Försäljningsbelopp] och [TotalKostnad] på samma rad. DAX kan beräkna värdena för varje rad i kolumnen Marginal eftersom den har kontexten: För varje rad används värdena i kolumnen [TotalKostnad] och subtraheras från värdena i kolumnen [Försäljningsbelopp].
I den markerade cellen nedan har värdet 49,54 kr på den aktuella raden beräknats genom att subtrahera värdet 51,54 kr i kolumnen [TotalKostnad] från värdet 101,08 kr i kolumnen [Försäljningsbelopp].
Radkontext gäller inte bara för beräknade kolumner. Radkontexten gäller också när en formel har en funktion som använder filter för att identifiera en enskild rad i en tabell. Funktionen tillämpar 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. Du kan enklast 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 radkontexten. I stället gäller den utöver radkontexten. Om du till exempel ytterligare vill begränsa antalet värden som ska ingå i en beräkning kan du använda en filterkontext som inte bara anger radkontexten, utan även anger ett visst värde (filter) i radkontexten.
Filterkontexten är lätt att se i pivottabeller. Om 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 filterkontext så viktigt för DAX? För medan filterkontext enklast kan tillämpas genom att lägga till kolumn- och radetiketter och utsnitt i en pivottabell, kan filterkontext också tillämpas i en DAX-formel genom att definiera ett filter med hjälp av funktioner som ALL, RELATED, FILTER, CALCULATE, efter relationer och efter andra mått och kolumner. Låt oss till exempel titta på följande formel i ett mått med namnet StoreSales:
Det är uppenbart att den här formeln är mer komplex än några av de andra formlerna du har sett. 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 StoreSales, följt av ett kolon :.
- Likhetsteckenoperatorn (=) anger början av formeln.
- Funktionen CALCULATE utvärderar ett uttryck som ett argument i en kontext som modifieras av de angivna filtren.
- Parentes () omger ett eller flera argument.
- Ett mått [Sales] i samma tabell som ett uttryck. Måttet Försäljning har formeln: =SUMMA(Försäljningsfakta[Försäljningsbelopp]).
- Ett komma (,) separerar filtren.
- 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 en enorm och kraftfull kapacitet. Möjligheten att referera till endast ett visst värde i en relaterad tabell är bara ett sådant exempel. Oroa dig inte om du inte förstår sammanhanget helt på en gång. När du skapar egna formler blir det lättare att förstå kontexten och varför den är så viktig i DAX.
Context QuickQuiz
- Vilka är de två typerna av sammanhang?
- Vad är filterkontext?
- Vad är radkontext?
Svaren finns 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 faktiskt 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ära dig mer om andra DAX-begrepp och formler som kan hjälpa dig att lösa dina egna affärsproblem. Det finns många DAX-resurser tillgängliga för dig i Power Pivot-hjälpen, SQL Server Books Online, whitepapers och bloggar från både Microsoft och ledande BI-proffs. DAX Resource Center Wiki (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) är en bra början. DAX-referensen (Data Analysis Expressions) är också en bra resurs. Se till att spara den i dina favoriter.
DAX i faktabladet BI Tabular Model, som kan laddas ned (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409) ger en mer detaljerad titt på de begrepp som introduceras här, liksom många andra avancerade begrepp och formler. I det här dokumentet används även samma Contoso DAX-exempel Formulas.xlsx arbetsbok som du redan har.
Svar på QuickQuiz
Syntax:
- Öppnar funktionen Infoga funktion.
- Hakparenteser [].
- =[Enhetspris] - [Enhetskostnad]
Funktioner:
- En tabell och en kolumn.
- Ja. En formel kan innehålla upp till 64 kapslade funktioner.
- Textfunktioner.
Sammanhang:
- Radkontext och filterkontext.
- Ett eller flera filter i en beräkning som bestämmer ett enskilt värde.
- Den aktuella raden.