Introduktion

Slutförd

Du kan skriva en DAX-formel (dataanalysuttryck) för att lägga till en beräknad tabell till din modell. Formeln kan duplicera eller omvandla befintliga modelldata för att skapa en ny tabell.

Anteckning

En beräknad tabell kan inte ansluta till externa data. Du måste använda Power Query för att göra det.

En formel för en beräknad tabell måste returnera ett tabellobjekt. Den enklaste formeln kan duplicera en befintlig modelltabell.

Beräknade tabeller har en nackdel: De ökar modellens lagringsstorlek och de kan förlänga tiden det tar att uppdatera data. Orsaken är att beräknade tabeller räknas om när de har formelberoenden till uppdaterade tabeller.

Duplicera en tabell

I följande avsnitt beskrivs en vanlig designutmaning som kan lösas genom att skapa en beräknad tabell. Först ska du hämta och öppna filen Adventure Works DW 2020 M03.pbix och sedan växla till modelldiagrammet.

I modelldiagrammet ser du att tabellen Försäljning har tre relationer till tabellen Date .

En bild visar två tabeller: Försäljning och Datum. Det finns tre relationer mellan tabellerna. Endast en relation är aktiv.

Modelldiagrammet visar tre relationer eftersom tabellen Försäljning lagrar försäljningsdata per orderdatum, transportdatum och förfallodatum. Om du tittar närmare på kolumnerna OrderDateKey, ShipDateKey och DueDateKey ser du att en relation anges med en heldragen linje, vilket är den aktiva relationen. De andra relationerna, som representeras av streckade linjer, är inaktiva relationer.

Anteckning

Det kan bara finnas en aktiv relation mellan två modelltabeller.

I diagrammet placerar du markören över den aktiva relationen för att markera de relaterade kolumnerna, vilket är hur du interagerar med modelldiagrammet för att lära dig om relaterade kolumner. I det här fallet filtrerar den aktiva relationen kolumnen OrderDateKey i tabellen Försäljning . Därför sprids filter som tillämpas på tabellen Date till tabellen Sales för att filtrera efter orderdatum. de filtrerar aldrig efter leveransdatum eller förfallodatum.

Nästa steg är att ta bort de två inaktiva relationerna mellan tabellen Date och tabellen Sales . Om du vill ta bort en relation högerklickar du på den och väljer Ta bort på snabbmenyn. Se till att du tar bort båda de inaktiva relationerna.

Lägg sedan till en ny tabell för att tillåta rapportanvändare att filtrera försäljning efter transportdatum. Växla till rapportvyn och välj sedan Ny tabell i gruppen Beräkningar på fliken Modellering i menyfliksområdet.

En bild visar fliken Modellering i menyfliksområdet i Power BI Desktop. I gruppen Beräkningar är kommandot Ny tabell markerat.

I formelfältet (som finns under menyfliksområdet) anger du följande definition av den beräknade tabellen och trycker sedan på Retur.

Ship Date = 'Date'

Definitionen av den beräknade tabellen duplicerar datumtabelldata för att skapa en ny tabell med namnet Transportdatum. Tabellen Transportdatum har exakt samma kolumner och rader som tabellen Datum . När data i datumtabellen uppdateras beräknas tabellen Transportdatum om, så att de alltid är synkroniserade.

Växla till modelldiagrammet och lägg sedan märke till tillägget av tabellen Transportdatum .

En bild visar tabellen Transportdatum, som består av samma kolumner som tabellen Datum.

Skapa sedan en relation mellan kolumnen DateKey i tabellen Transportdatum och kolumnen ShipDateKey i tabellen Försäljning . Du kan skapa relationen genom att dra kolumnen DateKey i tabellen Transportdatum till kolumnen ShipDateKey i tabellen Försäljning .

En beräknad tabell duplicerar endast data. Den duplicerar inte några modellegenskaper eller objekt som kolumnsynlighet eller hierarkier. Du måste konfigurera dem för den nya tabellen om det behövs.

Tips

Det går att byta namn på kolumner i en beräknad tabell. I det här exemplet är det en bra idé att byta namn på kolumner så att de bättre beskriver sitt syfte. Till exempel kan kolumnen Räkenskapsår i tabellen Transportdatum byta namn till Transport räkenskapsår. När fält från tabellen Transportdatum används i visuella objekt inkluderas deras namn automatiskt i undertexter som den visuella rubriken eller axeletiketterna.

För att slutföra utformningen av tabellen Transportdatum kan du:

  • Byta namn på följande kolumner:
    • Datum till Transportdatum
    • Räkenskapsår till Transporträkenskapsår
    • Räkenskapskvartal till Transporträkenskapskvartal
    • Månad till Transportmånad
    • Fullständigt datum till Fullständigt transportdatum
  • Sortera kolumnen Fullständigt transportdatum efter kolumnen Transportdatum.
  • Sortera kolumnen Transportmånad efter kolumnen MonthKey.
  • Dölja kolumnen MonthKey.
  • Skapa en hierarki med namnet Räkenskap med följande nivåer:
    • Transporträkenskapsår
    • Transporträkenskapskvartal
    • Transportmånad
    • Fullständigt transportdatum
  • Markera tabellen Transportdatum som en datumtabell genom att använda kolumnen Transportdatum.

Beräknade tabeller är användbara för att arbeta i scenarier när det finns flera relationer mellan två tabeller, enligt beskrivningen ovan. De kan också användas för att lägga till en datumtabell i din modell. Datumtabeller krävs för att tillämpa särskilda tidsfilter som kallas för tidsinformation.

Skapa en datumtabell

I nästa exempel skapas en andra beräknad tabell, den här gången med hjälp CALENDARAUTO av DAX-funktionen.

Skapa den beräknade tabellen Förfallodatum med hjälp av följande definition.

Due Date = CALENDARAUTO(6)

DAX-funktionen CALENDARAUTO tar ett enda valfritt argument, som är årets sista månadsnummer, och returnerar en tabell med en kolumn. Om du inte skickar något månadsnummer antas det vara 12 (för december). På Adventure Works upphör exempelvis räkenskapsåret den 30 juni varje år, så värdet 6 (för juni) skickas.

Funktionen genomsöker alla datum- och datum-/tidskolumner i din modell för att fastställa de tidigaste och senaste lagrade datumvärdena. Den genererar sedan en fullständig uppsättning datum som omfattar alla datum i modellen, vilket säkerställer att hela år med datum läses in. Om till exempel det tidigaste datumet som lagras i din modell är 15 oktober 2021 är det första datumet som returneras av CALENDARAUTO funktionen 1 juli 2021. Om det senaste datumet som lagras i modellen är 15 juni 2022 är det sista datumet som returneras av CALENDARAUTO funktionen den 30 juni 2022.

CALENDARAUTO I praktiken garanterar funktionen att följande krav för att markera en datumtabell är uppfyllda:

  • Tabellen måste innehålla en kolumn med datatypen Datum.
  • Kolumnen måste innehålla fullständiga år.
  • Kolumnen får inte ha datum som saknas.

Tips

Du kan också skapa en datumtabell med hjälp CALENDAR av DAX-funktionen och skicka in två datumvärden som representerar datumintervallet. Funktionen genererar en rad för varje datum inom intervallet. Du kan skicka in statiska datumvärden eller skicka uttryck som hämtar de tidigaste/senaste datumen från vissa kolumner i din modell.

Växla sedan till datavyn och välj sedan tabellen Förfallodatum i fönstret Fält. Granska nu kolumnen med datum. Du kanske vill ordna dem så att det tidigaste datumet visas på den första raden genom att markera pilen i kolumnrubriken Datum och sedan sortera i stigande ordning.

Anteckning

Sorterings-och filtreringskolumnerna ändrar inte hur värdena lagras. Dessa funktioner hjälper dig att utforska och förstå data.

En bild visar tabellen Förfallodatum i datavyn. Det finns en kolumn med namnet Datum, och när värdena sorteras från tidigast till senast är det första datumet den 1 juli 2017.

Nu när kolumnen Datum har markerats granskar du meddelandet i statusfältet (finns i det nedre vänstra hörnet). Det beskriver hur många rader som tabellen lagrar och hur många distinkta värden som finns i den markerade kolumnen.

En bild visar status meddelandet: TABELL: Förfallodatum (1 461 rader) KOLUMN: Datum (1 461 distinkta värden).

När tabellraderna och de distinkta värden är desamma innebär det att kolumnen innehåller unika värden. Denna faktor är viktig av två skäl: Det uppfyller kraven för att markera en datumtabell och det tillåter att den här kolumnen används i en ensidig modellrelation.

Den beräknade tabellen Förfallodatum beräknas om varje gång en tabell som innehåller en datumkolumn uppdateras. Med andra ord, när en rad läses in i tabellen Försäljning med orderdatumet 1 juli 2022 utökas tabellen Förfallodatum automatiskt till att omfatta datum fram till slutet av nästa år: 30 juni 2023.

Tabellen Förfallodatum kräver ytterligare kolumner för att stödja kända filtrerings- och grupperingskrav, särskilt efter år, kvartal och månad.