SQLShack

Microsoft Power BI understøtter to forskellige sprog, M-sprog og DAX (Data Analysis Expression), der kan bruges til at filtrere, administrere og visualisere data.

M kan betragtes som et forespørgselsformelsprog, og det kan bruges i Power BI Query Editor til at forberede data, før de kan indlæses i Power BI-modellen.

På den anden side er DAX et analytisk databehandlingssprog, som kan bruges til dybdegående dataanalyse i datavisningsfasen.

M og DAX er ikke afhængige af hinanden og følger helt forskellige strukturer og logikker, og de har forskellige underliggende koder. M og DAX kan ikke bruges samtidig, da M-sproget bruges i Query Editor, mens DAX mest bruges i Data View-modellen.

Dette blogindlæg vil vise dig, hvordan M og DAX adskiller sig fra hinanden i Power BI ved hjælp af eksempler. Se denne artikel for en hurtig introduktion til DAX.

Import af datasæt

I dette afsnit importerer vi et dummy-datasæt, som vi skal bruge til at udføre vores M-sprog og DAX-forespørgsler. For at gøre dette starter vi med at klikke på knappen “Hent data” i topmenuen som vist i følgende skærmbillede.

En ny dialog vil liste alle de datalinks, der er åbne for Power BI.

Indsæt web” i søgeafsnittet, og meget snart vises en Web” datamulighed, og der vises også et ikon i Alle datakildeindstillinger. Vælg Web” valgmuligheden, og klik derefter på “connect” nederst. Dette fremgår tydeligt af nedenstående skærmbillede.

Dialogvinduet, som du kan se på nedenstående skærmbillede, vil blive vist. Du skal nu indsætte nedenstående URL i feltet med titlen URL:

https://raw.githubusercontent.com/treselle-systems/customer_churn_analysis/master/WA_Fn-UseC_-Telco-Customer-Churn.csv

Klik på “OK” for at bekræfte, når dette er gjort.

Her er et skærmbillede til orientering:

Denne URL fører Power BI til Github, som indeholder den CSV-datafil, som vi har brug for. Datafilen indeholder oplysninger om et datasæt om kundeafgang for telekommunikationskunder. Den indeholder data om de kunder i et teleselskab, der forlod selskabet efter en bestemt periode.

Afhængigt af filens størrelse kan det tage et stykke tid at downloade dataene fra fjernstedet.

Når dataene er downloadet, har du to muligheder: Du kan enten importere dataene direkte til Data/Report View, eller du kan først indlæse dataene i Query Editor. Da M Language fungerer i Query Editor, vil vi først indlæse dataene i Query Editor ved at klikke på “Transform Data” som vist i følgende skærmbillede:

Du vil se, at datasættet indeholder oplysninger om en kunde, såsom køn, ansættelsesperiode, telefonservice, internetservice, afhængige personer osv.

Når du klikker på knappen Transformér, skal du se følgende Query Editor.

forskelle mellem M Language og DAX

I det foregående afsnit tilsluttede vi Power BI til et dummy-datasæt på GitHub. I dette afsnit vil du ved hjælp af eksempler se forskellene mellem M Language og DAX.

M Language

Først vil vi se, hvad M er, og hvordan det bruges i Power BI. Som jeg sagde tidligere, bruges M Language til at administrere og filtrere data i Query Editor. Hvis du har lukket Query Editor, kan du åbne den ved at klikke på “Edit Queries” i topmenuen.

I Query Editor vil det eneste tabelnavn i venstre panel på skærmen være din tabel, som vist nedenfor. Klik på datatabellen “WA_Fn-UseC_-Telco-Customer-Churn” i venstre panel i forespørgselseditoren som vist nedenfor:

For at se forespørgslerne i M. Vælg en hvilken som helst kolonne, f.eks. “Partner”, og klik derefter på knappen “Remove Columns” (Fjern kolonner) i den øverste menu. Det vil fjerne kolonnen “Partner” fra tabellen som vist nedenfor:

Klik derefter på “View” fra topmenuen som fremhævet i følgende skærmbillede:

Klik på afkrydsningsfeltet “Formula Bar”. Du bør nu se en forespørgsel i formelbjælken som fremhævet i følgende skærmbillede. Forespørgslen her er “= Table.RemoveColumns(#”Changed Type”,{“Partner”}). Denne forespørgsel er en forespørgsel i M-sprog, der bruges til at fjerne kolonnen “Partner” fra den valgte tabel. Du kan se, at M Language-forespørgslen minder mere om en SQL- eller LINQ-kommando (Language Integrated Query) i C#.

Hvis du vil se alle de tidligere udførte M-forespørgsler i dit datasæt, kan du klikke på “View – Advanced Editor” som vist på følgende skærmbillede.

Når du klikker på indstillingen “Advanced Editor” fra topmenuen, bør du se vinduet Advanced Editor som vist nedenfor. Vinduet Advanced Editor indeholder alle de forespørgsler på M-sprog, som du har udført indtil nu i den aktuelle session.

Du kan se, at den sidste forespørgsel er den, der fjernede kolonnen “Partner” fra tabellen. Inden da blev forespørgslen “Change Type” brugt til at tildele datatyperne til forskellige kolonner i datasættet. Og før det bruges forespørgslen “Promoted Headers” til at indstille overskriftskolonnerne. Hvis du udfører en anden forespørgsel, vises den nederst på forespørgselslisten i “Advance Editor”.

Lad os prøve at tilføje en simpel kolonne i tabellen “Bøger” og se M-forespørgsel til det. Klik på indstillingen “Add Column -> Custom Column” i menuen øverst i vinduet, som du kan se nedenfor:

Du bør se vinduet nedenfor. Klik på kolonnerne “TotalCharges” og “MonthlyCharges” en efter en, og klik derefter på knappen “Insert” for at indsætte dem i vinduet “Query Editor”. I vinduet til redigering af forespørgsler skal du tilføje et “+”-tegn mellem de to kolonnenavne og klikke på “OK”-knappen.

Du bør se en ny kolonne “Monthly-Total” tilføjet til tabellen som vist nedenfor. I formellinjen kan du også se den M-forespørgsel, der er genereret for at oprette kolonnen “Monthly-Total”. Kolonnen “Monthly-Total” viser i princippet summen af værdierne i kolonnerne “TotalCharges” og “MonthlyCharges”.

Hvis du nu igen åbner vinduet “Advanced Editor”, vil du se den forespørgsel, der blev brugt til at tilføje kolonnen “Monthly-Total” nederst i forespørgslerne i den avancerede editor.

Nu ved vi, hvordan M-sproget fungerer, og hvordan det ser ud. I næste afsnit vil vi forsøge at oprette den samme kolonne “Monthly-Total 2” via DAX (Data Analysis Expression).

DAX-forespørgsler udføres i datavisningen; derfor skal vi flytte dataene fra forespørgselseditoren til datavisningen. For at gøre dette skal du i Query Editor klikke på “Luk & Anvend” i topmenuen som vist nedenfor:

Når du klikker på knappen “Luk & Anvend”, åbnes datavisningen.

DAX (Data Analysis Expression)

I dette afsnit vil vi se, hvordan vi tilføjer en ny kolonne til tabellen Bøger ved hjælp af DAX. I Data View skal du klikke på “Modeling -> New Column”-indstillingen fra topmenuen som vist nedenfor:

Du bør se følgende vindue, når du klikker på indstillingen “New Column” (Ny kolonne). I formellinjen kan du se standardkolonnens navn. Du kan udføre DAX-forespørgsler i denne formelbjælke.

Indtast forespørgslen “Monthly-Total 2 = + ” i formelbjælken, og tryk på “Enter”-tasten. Når du trykker på Enter, vil du se en ny kolonne “Monthly-Total 2”, som viser summen af værdierne i kolonnerne “TotalCharges” og “MonthlyCharges”.

Du kan se, at DAX-forespørgsler minder mere om MS Excel.

Konklusion

M Language og DAX er de to sprog, der understøttes af Power BI til at manipulere, filtrere og analysere data. Selv om begge sprog har lignende funktionaliteter, fungerer de uafhængigt af hinanden. M bruges til at forbehandle dataene i Query Editor, mens DAX bruges til at analysere dataene, efter at dataene er indlæst i Data View Model.

  • Author
  • Recent Posts
Ben Richardson driver Acuity Training, en førende udbyder af SQL-uddannelse i Storbritannien. De tilbyder et komplet sortiment af SQL-uddannelse fra introduktionskurser til avanceret administration og uddannelse i datawarehouse – se her for flere oplysninger. Acuity har kontorer i London og Guildford, Surrey. Han blogger også lejlighedsvis på Acuitys blog
Se alle indlæg af Ben Richardson

Sidste indlæg af Ben Richardson (se alle)
  • Arbejde med Power BI-rapporttemaer – 25. februar 2021
  • Power BI: Vandfaldsdiagrammer og kombinerede visuals – 19. januar 2021
  • Power BI: Betinget formatering og datafarver i praksis – 14. januar 2021

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.