Introduktion

Fuldført

Du kan skrive en DAX-formel (Data Analysis Expressions) for at føje en beregnet tabel til din model. Formlen kan duplikere eller transformere eksisterende modeldata for at oprette en ny tabel.

Bemærk

En beregnet tabel kan ikke oprette forbindelse til eksterne data. Du skal bruge Power Query for at fuldføre opgaven.

En formel for en beregnet tabel skal returnere et tabelobjekt. Den mest enkle formel kan duplikere en eksisterende modeltabel.

Beregnede tabeller har en ulempe: De øger størrelsen på modellageret, og de kan forlænge dataopdateringstiden. Årsagen er, at beregnede tabeller genberegnes, når de har formelafhængigheder i forhold til opdaterede tabeller.

Dupliker en tabel

I følgende afsnit beskrives den almindelige design udfordring, der kan løses ved at oprette en beregnet tabel. Først skal du hente og åbne filen Adventure Works DW 2020 M03. pbix, og derefter skal du skifte til modeldiagrammet.

Bemærk, at tabellen Sales i modeldiagrammet har tre relationer til tabellen Date .

Et billede, der viser to tabeller: Sales og Date. Der er tre relationer mellem tabellerne. Kun én relation er aktiv.

I modeldiagrammet vises der tre relationer, da der lagres salgsdata efter ordredato, afsendelsesdato og forfaldsdato i tabellen Sales. Hvis du kigger nærmere på kolonnerne OrderDateKey, ShipDateKeyog DueDateKey, kan du se, at én relation er repræsenteret af en ubrudt linje, hvilket er den aktive relation. De øvrige relationer, der er repræsenteret af stiplede linjer, er inaktive relationer.

Bemærk

Der kan kun være én aktiv relation mellem to modeltabeller.

Hold markøren over den aktive relation i diagrammet for at fremhæve de relaterede kolonner, hvilket er den måde du interagerer med modeldiagrammet på for at få mere at vide om relaterede kolonner. I dette tilfælde filtrerer den aktive relation kolonnen OrderDateKey i tabellen Sales . Filtre, der anvendes på tabellen Date , overføres derfor til tabellen Sales for at filtrere efter ordredato. de filtrerer aldrig efter afsendelsesdato eller forfaldsdato.

Det næste trin er at slette de to inaktive relationer mellem tabellen Date og tabellen Sales . Hvis du vil slette en relation, skal du højreklikke på den og derefter vælge Slet i genvejsmenuen. Sørg for at slette begge inaktive relationer.

Tilføj derefter en ny tabel for at tillade, at rapportbrugere filtrerer salg efter afsendelsesdato. Skift til rapportvisning, og vælg derefter Ny tabel inde fra gruppen Beregninger på båndfanen Udformning.

Et billede, der viser fanen Modellering på båndet i Power BI Desktop. Kommandoen Ny tabel er fremhævet i gruppen Beregninger.

Angiv følgende definition af en beregnet tabel på formellinjen (placeret under båndet), og tryk derefter på Enter.

Ship Date = 'Date'

Den beregnede tabeldefinition duplikerer dataene i tabellen Date for at oprette en ny tabel med navnet Ship Date. Tabellen Afsendelsesdato indeholder præcis de samme kolonner og rækker som tabellen Date . Når dataene i tabellen Date opdateres, genberegnes tabellen Ship Date , så de altid er synkroniseret.

Skift til modeldiagrammet, og bemærk derefter tilføjelsen af tabellen Ship Date .

Et billede, der viser tabellen Ship Date, som består af de samme kolonner som tabellen Date.

Opret derefter en relation mellem kolonnen DateKey i tabellen Ship Date og kolonnen ShipDateKey i tabellen Sales . Du kan oprette relationen ved at trække kolonnen DateKey i tabellen Ship Date til kolonnen ShipDateKey i tabellen Sales .

En beregnet tabel duplikerer kun data. Den duplikerer ikke nogen modelegenskaber eller -objekter, f.eks. kolonnesynlighed eller hierarkier. Du skal konfigurere dem til den nye tabel, hvis det er nødvendigt.

Tip

Det er muligt at omdøbe kolonner i en beregnet tabel. I dette eksempel er det en god idé at omdøbe kolonner, så de beskriver deres formål bedre. Kolonnen Fiscal Year i tabellen Ship Date kan f.eks. omdøbes til Ship Fiscal Year. Når felter fra tabellen Afsendelsesdato bruges i visualiseringer, medtages deres navne derfor automatisk i billedtekster som f.eks. titlen på visualiseringen eller aksenavnene.

Hvis du vil fuldføre designet af tabellen Afsendelsesdato , kan du:

  • Omdøb følgende kolonner:
    • Date til Ship Date
    • Fiscal Year til Ship Fiscal Year
    • Fiscal Quarter til Ship Fiscal Quarter
    • Month til Ship Month
    • Full Date til Ship Full Date
  • Sortér kolonnen Ship Full Date efter kolonnen Ship Date.
  • Sortér kolonnen Ship Month efter kolonnen MonthKey.
  • Skjul kolonnen MonthKey.
  • Opret et hierarki med navnet Fiscal med følgende niveauer:
    • Ship Fiscal Year
    • Ship Fiscal Quarter
    • Ship Month
    • Ship Full Date
  • Markér tabellen Ship Date som en datotabel ved hjælp af kolonnen Ship Date.

Beregnede tabeller egner sig godt til arbejde i scenarier, når der findes flere relationer mellem to tabeller, som beskrevet tidligere. De kan også bruges til at føje en datotabel til din model. Datotabeller skal anvende særlige tidsfiltre, der kaldes time intelligence.

Opret en datotabel

I det næste eksempel oprettes der en anden beregnet tabel, denne gang ved hjælp CALENDARAUTO af DAX-funktionen.

Create den beregnede tabel Due Date ved hjælp af følgende definition.

Due Date = CALENDARAUTO(6)

CALENDARAUTO DAX-funktionen tager et enkelt valgfrit argument, som er det sidste månedsnummer i året, og returnerer en tabel med en enkelt kolonne. Hvis du ikke angiver et månedsnummer, antages det, at det er 12 (for december). I Adventure Works slutter deres regnskabsår f. eks. den 30. juni hvert år, så værdien 6 (for juni) angives.

Funktionen scanner alle dato- og dato/klokkeslæt-kolonner i din model for at bestemme de tidligste og seneste værdier for gemte datoer. Derefter producerer den et komplet sæt datoer, der spænder over alle datoer i din model, så det sikres, at hele årets datoer er indlæst. Hvis den tidligste dato, der er gemt i din model, f.eks. er den 15. oktober 2021, er den første dato, der returneres af CALENDARAUTO funktionen, den 1. juli 2021. Hvis den seneste dato, der er gemt i modellen, er den 15. juni 2022, er den sidste dato, der returneres af funktionen CALENDARAUTO , den 30. juni 2022.

Funktionen garanterer, CALENDARAUTO at følgende krav til at markere en datotabel er opfyldt:

  • Tabellen skal indeholde en kolonne med datatypen Dato.
  • Kolonnen skal indeholde hele år.
  • Der må ikke mangle nogen datoer i kolonnen.

Tip

Du kan også oprette en datotabel ved hjælp CALENDAR af DAX-funktionen og angive to datoværdier, som repræsenterer datointervallet. Funktionen genererer én række for hver dato i intervallet. Du kan angive statiske datoværdier eller angive udtryk, der henter de tidligste/seneste datoer fra bestemte kolonner i din model.

Derefter skal du skifte til datavisning og derefter vælge tabellen Due Date i ruden Felter. Gennemgå nu kolonnen med datoer. Det kan være en god idé at sortere dem, så du få vist den tidligste dato i den første række, ved at vælge pilen i kolonneoverskriften Date og derefter sortere dem i stigende rækkefølge.

Bemærk

Sortering eller filtrering af kolonner ændrer ikke, den måde værdierne gemmes på. Disse funktioner hjælper dig med at udforske og forstå dataene.

Et billede, der viser tabellen Due Date i datavisning. Der er én kolonne med navnet Date, og når værdierne sorteres fra tidligste til seneste, er den første dato den 1. juli 2017.

Nu, hvor kolonnen Date er markeret, skal du gennemse meddelelsen på statuslinjen (placeret i nederste venstre hjørne). Den beskriver, hvor mange rækker tabellen lagrer, og hvor mange forskellige værdier der findes i den valgte kolonne.

Et billede, der viser statusmeddelelsen: TABLE: Due Date (1,461 rows) COLUMN: Date (1,461 distinct values).

Når tabelrækkerne og de forskellige værdier er ens, betyder det, at kolonnen indeholder entydige værdier. Denne faktor er vigtig af to årsager: Den opfylder kravene til markering af en datotabel, og den gør det muligt at bruge denne kolonne i en modelrelation som en-siden.

Den beregnede tabel Due Date genberegnes, hver gang en tabel, der indeholder en datokolonne, opdateres. Det vil sige, at når en række indlæses i tabellen Sales med ordredatoen 1. juli 2022, udvides tabellen Due Date automatisk til at omfatte datoer til slutningen af det næste år: 30. juni 2023.

Tabellen Due Date kræver yderligere kolonner for at understøtte de kendte krav til filtrering og gruppering, især efter år, kvartal og måned.