Lär dig grunderna i DAX i Power BI Desktop

Användare som är nybörjare på Power BI Desktop kan använda den här artikeln som en snabb och enkel introduktion till hur du kan använda dataanalysuttryck (DAX) för att lösa många grundläggande beräkningar och problem med dataanalys. Vi går igenom lite konceptuell information, en serie uppgifter som du kan utföra och en kunskapstest för att testa vad du har lärt dig. När du har slutfört den här artikeln bör du ha en god förståelse för de viktigaste 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. DAX hjälper dig att skapa ny information från data som redan finns i din modell.

Varför är DAX så viktigt?

Det är enkelt att skapa en ny Power BI Desktop-fil och importera data till den. Du kan till och med skapa rapporter som visar värdefulla insikter utan att använda några DAX-formler alls. Men vad händer om du behöver analysera tillväxtprocenten mellan produktkategorier och för olika datumintervall? Eller behöver du beräkna tillväxt från år till år jämfört med marknadstrender? DAX-formler ger även den här funktionen och många andra viktiga funktioner. 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 slutresultatet.

Förutsättningar

Du kanske redan är bekant med att skapa formler i Microsoft Excel, och den kunskapen kan vara till hjälp för att förstå DAX. Men även om du inte har någon 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 fokuserar på att förstå DAX-formler som används i beräkningar, mer specifikt i mått och beräknade kolumner. Du bör redan vara bekant med att använda Power BI Desktop för att importera data och lägga till fält i en rapport, och du bör också känna till grundläggande begrepp i mått och beräknade kolumner.

Exempelarbetsbok

Det bästa sättet att lära sig DAX är att skapa några grundläggande formler, använda dem med faktiska data och se resultatet själv. Exemplen och uppgifterna här använder Contosos försäljningsexempel för Power BI Desktop-filen. Den här exempelfilen är samma som används i artikeln Självstudie: Skapa egna mått i Power BI Desktop .

Nu börjar vi

Vi kommer att rama in vår förståelse av DAX kring tre grundläggande begrepp: syntax, funktioner och kontext. Det finns andra viktiga begrepp i DAX, men att förstå dessa tre begrepp ger den bästa grunden för att bygga dina DAX-kunskaper.

Syntax

Innan du skapar dina 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. Här är till exempel en enkel DAX-formel för ett mått:

Skärmbild av en DAX-formel med pekare till enskilda syntaxelement.

Den här formeln innehåller följande syntaxelement:

A. Måttnamnet Total försäljning.

B. Likhetstecknet operator (=), som anger början av formeln. När det beräknas returneras ett resultat.

C. DAX-funktionen SUM, som lägger till alla tal i kolumnen Sales[SalesAmount]. Du får lära dig mer om funktioner senare.

D. Parentes ( ), som omger ett uttryck som innehåller ett eller flera argument. De flesta funktioner kräver minst ett argument. Ett argument skickar ett värde till en funktion.

E. Den refererade tabellen Försäljning.

F. Den refererade kolumnen [SalesAmount], i tabellen Försäljning. Med det här argumentet vet sum-funktionen vilken kolumn som ska aggregera en SUM.

När du försöker förstå en DAX-formel är det ofta bra att dela upp vart och ett 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:

För måttet Total försäljning beräknar du (=) sum av värden i kolumnen [SalesAmount ] i tabellen Försäljning.

När det läggs till i en rapport beräknar och returnerar det här måttet värden genom att summera försäljningsbelopp för vart och ett av de andra fälten som vi inkluderar, till exempel Cell Telefon s i USA.

Du kanske tänker: "Gör inte det här måttet samma sak som om jag bara skulle lägga till fältet SalesAmount i min rapport?" Ja, ja. Men det finns en bra anledning att skapa ett eget mått som summerar värden från fältet SalesAmount: Vi kan använda det som argument i andra formler. Den här lösningen kan verka lite förvirrande nu, men i takt med att dina DAX-formelkunskaper växer blir dina formler och din modell mer effektiva om du vet att det här måttet blir mer effektivt. I själva verket visas måttet Total försäljning som ett argument i andra formler senare.

Låt oss gå över några fler saker om den här formeln. I synnerhet introducerade vi en funktion, SUM. Funktioner är förskrivna formler som gör det enklare att utföra komplexa beräkningar och manipuleringar med tal, datum, tid, text med mera. Du får lära dig mer om funktioner senare.

Du ser också att kolumnnamnet [SalesAmount] föregicks av tabellen Försäljning som kolumnen tillhör. Det här namnet 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, vilket kan göra långa formler som refererar till många kolumner kortare och enklare att läsa. Det är dock bra att ta med tabellnamnet i måttformler, även i samma tabell.

Kommentar

Om ett tabellnamn innehåller blanksteg, reserverade nyckelord eller otillåtna tecken måste du omsluta tabellnamnet inom enkla citattecken. Du måste också omsluta tabellnamn inom citattecken om namnet innehåller tecken utanför det alfanumeriska ANSI-teckenintervallet, oavsett om språkvarianten stöder teckenuppsättningen eller inte.

Det är viktigt att dina formler har rätt syntax. I de flesta fall returneras ett syntaxfel om syntaxen inte är korrekt. I andra fall kan syntaxen vara korrekt, men de värden som returneras kanske inte är det du förväntar dig. DAX-redigeraren i Power BI Desktop innehåller en förslagsfunktion 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 exempelformel. Den här uppgiften hjälper dig att ytterligare förstå formelsyntaxen och hur förslagsfunktionen i formelfältet kan hjälpa dig.

Uppgift: Skapa en måttformel

  1. Ladda ned och öppna Power BI Desktop-filen Contoso Sales Sample.

  2. I rapportvyn högerklickar du på tabellen Försäljning i fältlistan och väljer sedan Nytt mått.

  3. I formelfältet ersätter du Mått genom att ange ett nytt måttnamn, Föregående kvartalsförsäljning.

  4. Efter likhetstecknet skriver du de första bokstäverna CAL och dubbelklickar sedan på den funktion som du vill använda. I den här formeln vill du använda funktionen CALCULATE .

    Du använder funktionen CALCULATE för att filtrera de belopp som vi vill summera med ett argument som vi skickar till funktionen CALCULATE. Den här typen av funktion kallas kapslingsfunktioner. Funktionen CALCULATE har minst två argument. Det första är uttrycket som ska utvärderas och det andra är ett filter.

  5. Efter den inledande parentesen ( för funktionen CALCULATE skriver du SUM följt av en annan inledande parentes (.

    Sedan skickar vi ett argument till funktionen SUM.

  6. Börja skriva Sal och välj sedan Försäljning[SalesAmount], följt av en avslutande parentes ).

    Det här steget skapar det första uttrycksargumentet för funktionen CALCULATE.

  7. Skriv ett kommatecken (,) följt av ett blanksteg för att ange det första filtret och skriv sedan PREVIOUSQUARTER.

    Du använder funktionen PREVIOUSQUARTER-tidsinformation för att filtrera SUM-resultat efter föregående kvartal.

  8. Efter den inledande parentesen ( för funktionen PREVIOUSQUARTER skriver du Calendar[DateKey].

    Funktionen PREVIOUSQUARTER har ett argument, en kolumn som innehåller ett sammanhängande datumintervall. I vårt fall är det kolumnen DateKey i tabellen Kalender.

  9. Stäng båda argumenten som skickas till funktionen PREVIOUSQUARTER och funktionen CALCULATE genom att skriva två avslutande parenteser )).

    Formeln bör nu se ut så här:

    Föregående kvartals försäljning = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Markera bockmarkeringen Bockmarkeringsikon i formelfältet eller tryck på Retur för att verifiera formeln och lägg till den i tabellen Försäljning.

Nu är du klar! Du har precis skapat ett komplext mått med hjälp av DAX. Vad den här formeln kommer att göra är att beräkna den totala försäljningen för föregående kvartal, beroende på de filter som tillämpas i en rapport. Vi kan till exempel placera SalesAmount och vårt nya mått För föregående kvartals försäljning från tabellen Försäljning i ett grupperat kolumndiagram. I tabellen Kalender lägger du sedan till År som utsnitt och väljer 2011. Lägg sedan till QuarterOfYear som ett annat utsnitt och välj 4, så får vi ett diagram som det här:

Diagram över försäljning och försäljning under föregående kvartal

Tänk på att exempelmodellen endast innehåller en liten mängd försäljningsdata från 1/1/2011 till 1/19/2013. Om du väljer ett år eller kvartal där SalesAmount inte kan summeras, eller om ditt nya mått inte kan beräkna försäljningsdata för det aktuella eller föregående kvartalet, visas inga data för den perioden. Om du till exempel väljer 2011 för År och 1 för QuarterOfYear visas inga data för föregående kvartalsförsäljning eftersom det inte finns några data för det fjärde kvartalet 2010.

Du har introducerats för flera viktiga aspekter av DAX-formler:

  • Den här formeln innehöll två funktioner. PREVIOUSQUARTER, en tidsinformationsfunktion, kapslas som ett argument som skickas till CALCULATE, en filterfunktion.

    DAX-formler kan innehålla upp till 64 kapslade funktioner. Det är osannolikt att en formel någonsin skulle innehålla så många kapslade funktioner. I själva verket skulle en sådan formel vara svår att skapa och felsöka, och den skulle förmodligen inte heller vara snabb.

  • 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 faktiskt är resultatet av en annan funktion. Du får lära dig mer om filter senare.

  • Du använde funktionen CALCULATE. Den här funktionen är en av de mest kraftfulla funktionerna i DAX. När du skapar modeller och skapar mer komplexa formler använder du förmodligen den här funktionen många gånger. Även om ytterligare diskussioner om funktionen CALCULATE ligger utanför omfånget för den här artikeln, när dina kunskaper om DAX växer, bör du ägna särskild uppmärksamhet åt den.

QuickQuiz-syntax

  1. Vad gör den här knappen i formelfältet?

    Knappval

  2. Vad omger alltid ett kolumnnamn i en DAX-formel?

Svar ges i slutet av den här artikeln.

Functions

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, ett annat uttryck, kolumnreferenser, siffror, text, logiska värden som TRUE eller FALSE eller konstanter.

DAX innehåller följande kategorier av funktioner: datum och tid, tidsinformation, information, logisk, matematisk, statistisk, text, överordnad/underordnad och andra funktioner. Om du är bekant med funktioner i Excel-formler ser många av funktionerna i DAX 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 baserat på kontexten. 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 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.

  • DAX innehåller 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 mellan parallella perioder.

  • Excel har en populär funktion, VLOOKUP. DAX-funktioner tar inte ett cell- eller cellområde som en referens som VLOOKUP gör i Excel. DAX-funktioner tar en kolumn eller en tabell som referens. Tänk på att du arbetar med en relationsdatamodell i Power BI Desktop. Det är enkelt att leta upp värden i en annan tabell, och i de flesta fall behöver du inte skapa några formler alls.

    Som du ser kan funktioner i DAX hjälpa dig att skapa kraftfulla formler. Vi berörde bara grunderna i funktioner. När dina DAX-kunskaper växer skapar du formler med hjälp av många olika funktioner. En av de bästa platserna för att lära sig information om var och en av DAX-funktionerna finns i DAX-funktionsreferensen.

Snabbquiz för funktioner

  1. Vad refererar en funktion alltid till?
  2. Kan en formel innehålla mer än en funktion?
  3. Vilken kategori av funktioner skulle du använda för att sammanfoga två textsträngar i en sträng?

Svar ges i slutet av den här artikeln.

Kontext

Kontext är ett av de viktigaste DAX-begreppen att förstå. Det finns två typer av kontext i DAX: radkontext och filterkontext. Vi ska först titta på radkontexten.

Radkontext

Radkontext är enklast att betrakta som den aktuella raden. Den gäller när en formel har en funktion som tillämpar filter för att identifiera en enskild rad i en tabell. Funktionen använder 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 enkelt tänka på filterkontexten som: Ett eller flera filter som används i en beräkning som avgör ett resultat eller värde.

Filterkontexten finns inte i stället för radkontexten. i stället gäller det 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 även anger ett visst värde (filter) i den radkontexten.

Filterkontext visas enkelt i dina rapporter. När du till exempel lägger till TotalCost i en visualisering och sedan lägger till År och Region definierar du en filterkontext som väljer en delmängd av data baserat på ett visst år och en viss region.

Varför är filterkontexten så viktig för DAX? Du har sett att filterkontexten kan användas genom att lägga till fält i en visualisering. Filterkontext kan också användas i en DAX-formel genom att definiera ett filter med funktioner som ALLA, RELATERADE, FILTER, CALCULATE, efter relationer och av andra mått och kolumner. Låt oss till exempel titta på följande formel i ett mått med namnet Store Sales:

Butiksförsäljningsmått

För att bättre förstå den här formeln kan vi dela upp den, ungefär som med andra formler.

Den här formeln innehåller följande syntaxelement:

A. Måttnamnet Store Sales.

B. Likhetstecknet operator (=), som anger början av formeln.

C. Funktionen CALCULATE , som utvärderar ett uttryck, som ett argument, i en kontext som ändras av de angivna filtren.

D. Parentes ( ), som omger ett uttryck som innehåller ett eller flera argument.

E. Ett mått [Total försäljning] i samma tabell som ett uttryck. Måttet Total försäljning har formeln: =SUM(Sales[SalesAmount]).

F. Ett kommatecken (,), som skiljer det första uttrycksargumentet från filterargumentet.

G. Den fullständigt kvalificerade refererade kolumnen Channel [ChannelName]. Det här är vår radkontext. Varje rad i den här kolumnen anger en kanal, till exempel Store eller Online.

H. Det specifika värdet Store som ett filter. Det här är vår filterkontext.

Den här formeln säkerställer att endast försäljningsvärden som definieras av måttet Total försäljning beräknas för rader i kolumnen Channel[ChannelName] med värdet Store som används som ett filter.

Som du kan föreställa dig har det enorma och kraftfulla funktioner att kunna definiera filterkontext i en formel. Möjligheten att bara 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år du bättre förståelse för kontext och varför det är så viktigt i DAX.

Snabbquiz för kontext

  1. Vilka är de två typerna av kontext?
  2. Vad är filterkontext?
  3. Vad är radkontext?

Svar ges i slutet av den här artikeln.

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 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 den här artikeln 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. viktigast är DAX-referensen (Data Analysis Expressions).

Eftersom DAX har funnits i flera år i andra Microsoft BI-verktyg, till exempel Power Pivot- och Analysis Services Tabular-modeller, finns det många bra källinformation där ute. Du hittar mer information i böcker, white paper och bloggar från både Microsoft och ledande BI-proffs. DAX Resource Center är också ett bra ställe att börja på.

QuickQuiz-svar

Syntax:

  1. Validerar och anger måttet i modellen.
  2. Hakparenteser [].

Funktioner:

  1. En tabell och en kolumn.
  2. Ja. En formel kan innehålla upp till 64 kapslade funktioner.
  3. Textfunktioner.

Kontext:

  1. Radkontext och filterkontext.
  2. Ett eller flera filter i en beräkning som avgör ett enda värde.
  3. Den aktuella raden.