Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Datumtabeller i Power Pivot är nödvändiga för att surfa och beräkna data över tid. I den här artikeln får du ingående förståelse för datumtabeller och hur du kan skapa dem i Power Pivot. I den här artikeln beskrivs särskilt:

  • Varför en datumtabell är viktig för att bläddra och beräkna data efter datum och tid.

  • Så här använder du Power Pivot för att lägga till en datumtabell i datamodellen.

  • Så här skapar du nya datumkolumner som År, Månad och Period i en datumtabell.

  • Skapa relationer mellan datumtabeller och faktatabeller.

  • Så här arbetar du med tid.

Den här artikeln är avsedd för Power Pivot-användare som är nybörjare. Det är dock viktigt att du redan har en bra förståelse för hur du importerar data, skapar relationer och skapar beräknade kolumner och mått.

I den här artikeln beskrivs inte hur du använder DAXTime-Intelligence funktioner i måttformlar. Mer information om hur du skapar mått med DAX-tidsinformationsfunktioner finns i Tidsinformation i Power Pivot i Excel.

Obs!: I Power Pivot är namnen "mått" och "beräknat fält" synonymer. Vi använder namnmåttet i den här artikeln. Mer information finns i Mått i Power Pivot.

Innehåll

Förstå datumtabeller

Nästan alla dataanalyser omfattar bläddring och jämförelse av data över datum och tid. Du kanske till exempel vill summera försäljningsbelopp för det senaste räkenskapsk kvartalet och sedan jämföra summorna med andra kvartal, eller så kanske du vill beräkna en avslutande månadssaldo för ett konto. I vart och ett av dessa fall använder du datum som ett sätt att gruppera och aggregera försäljningstransaktioner eller saldon för en viss tidsperiod.

Power View-rapport

Pivottabell med total försäljning per räkenskapskvartal

En datumtabell kan innehålla många olika representationer av datum och tid. Till exempel innehåller en datumtabell ofta kolumner som Räkenskapsår, Månad, Kvartal eller Period som du kan välja som fält i en fältlista när du ska använda och filtrera data i pivottabeller eller Power View-rapporter.

Power View-fältlista

Power View-fältlista

För att datumkolumner som År, Månad och Kvartal ska innehålla alla datum inom respektive intervall måste datumtabellen ha minst en kolumn med en sammanhängande uppsättning datum. Den kolumnen måste ha en rad för varje dag för varje år i datumtabellen.

Om de data du vill bläddra bland till exempel har datum från den 1 februari 2010 till den 30 november 2012, och du rapporterar för ett kalenderår, så vill du ha en datumtabell med minst ett datumintervall från 1 januari 2010 till den 31 december 2012. Varje år i datumtabellen måste innehålla alla dagar för varje år. Om du regelbundet uppdaterar dina data med nyare data kanske du vill köra slutdatumet med ett eller två år, så att du inte behöver uppdatera datumtabellen allt eftersom.

Datumtabell med en sammanhängande uppsättning datum

Datumtabell med sammanhängande datum

Om du rapporterar ett räkenskapsår kan du skapa en datumtabell med en sammanhängande uppsättning datum för varje räkenskapsår. Om räkenskapsåret till exempel börjar den 1 mars och du har data för räkenskapsår 2010 uppåt till dagens datum (till exempel i RÅ 2013) kan du skapa en datumtabell som börjar den 3/1/2009 och innehåller minst varje dag i varje räkenskapsår till och med det senaste datumet i räkenskapsåret 2013.

Om du ska rapportera både kalenderår och räkenskapsår behöver du inte skapa separata datumtabeller. En enskild datumtabell kan innehålla kolumner för ett kalenderår, räkenskapsår och till och med en trettonde fyraveckorsperiod. Det viktiga är att datumtabellen innehåller en sammanhängande uppsättning datum för alla år med.

Lägga till en datumtabell i datamodellen

Du kan lägga till en datumtabell i en datamodell på flera sätt:

  • Importera från en relationsdatabas eller annan datakälla.

  • Skapa en datumtabell i Excel kopiera eller länka sedan till en ny tabell i Power Pivot.

  • Importera från Microsoft Azure Marketplace.

Låt oss titta närmare på var och en av dessa.

Importera från en relationsdatabas

Om du importerar vissa eller alla dina data från ett datalager eller någon annan typ av relationsdatabas finns det kanske redan en datumtabell och relationer mellan den och resten av informationen som du importerar. Datumen och formatet kommer antagligen att matcha datumen i dina faktauppgifter, och datumen börjar antagligen bra tidigare och går långt in i framtiden. Den datumtabell som du vill importera kan vara mycket stor och innehåller ett datumintervall utöver det du behöver ha med i datamodellen. Du kan använda de avancerade filterfunktionerna i Tabellimportguiden i Power Pivot för att välja ut endast de datum och de kolumner som du verkligen behöver. Det kan avsevärt minska arbetsbokens storlek och förbättra prestanda.

Tabellimportguiden

Dialogruta i guiden Importera tabell

I de flesta fall behöver du inte skapa ytterligare kolumner, till exempel räkenskapsår, vecka, månadsnamn osv. eftersom de redan finns i den importerade tabellen. Men när du har importerat datumtabellen till datamodellen kan du i vissa fall behöva skapa ytterligare datumkolumner, beroende på vilket rapporteringskrav som gäller. Som tur är är är det enkelt att använda DAX. Du får lära dig mer om hur du skapar datumtabellfält senare. Alla miljöer är olika. Kontakta databasadministratören om du är osäker på om datakällorna har ett relaterat datum eller en kalendertabell.

Skapa en datumtabell i Excel

Du kan skapa en datumtabell i Excel och sedan kopiera den till en ny tabell i datamodellen. Det här är riktigt enkelt och ger dig stor flexibilitet.

När du skapar en datumtabell i Excel börjar du med en enda kolumn med ett angränsande datumintervall. Du kan sedan skapa ytterligare kolumner, till exempel År, Kvartal, Månad, Räkenskapsår, Period och så vidare i kalkylbladet Excel med hjälp av Excel-formler, eller så kan du skapa dem som beräknade kolumner när du har kopierat tabellen till datamodellen. Att skapa ytterligare datumkolumner i Power Pivot beskrivs i avsnittet Lägga till nya datumkolumner i datumtabellen längre fram i den här artikeln.

Gör så här: Skapa en datumtabell i Excel och kopiera den till datamodellen

  1. Ange Excel ett kolumnrubriknamn i cell A1i ett tomt kalkylblad i ett tomt kalkylblad för att identifiera ett datumintervall. Vanligtvis är det här något som Datum, Datumtid eller Datumnyckel.

  2. Skriv ett startdatum i cell A2. Till exempel 2010-01-01.

  3. Klicka på fyllningshandtaget och dra det nedåt till ett radnummer som innehåller ett slutdatum. Till exempel 2016-12-31.

    Datumkolumn i Excel

  4. Markera alla rader i kolumnen Datum (inklusive rubriknamnet i cell A1).

  5. Klicka på Formatera som tabell i gruppen Formatoch välj sedan ett format.

  6. Klicka på OK i dialogrutan Formatera som tabell.

    Datumkolumn i Power Pivot

  7. Kopiera alla rader, inklusive rubriken.

  8. Klicka på Klistra in på fliken StartiPower Pivot.

  9. I Klistra in förhandsgranskning > ett namn i tabellnamnet, till exempel Datum eller Kalender. Lämna Använd första raden som kolumnrubriker markeradoch klicka sedan på OK.

    Förhandsgranska inklistring

    Den nya datumtabellen (som heter Kalender i det här exemplet) i Power Pivot ser ut så här:

    Datumtabell i Power Pivot

    Obs!: Du kan också skapa en länkad tabell med hjälp av Lägg till i datamodell. Det gör dock att arbetsboken blir onödigt stor eftersom arbetsboken har två versioner av datumtabellen. en i Excel och en i Power Pivot.

Obs!: Namndatumet är ett nyckelord i Power Pivot. Om du namnlägger tabellen som du skapar i Power Pivot-datum måste du omge tabellnamnet med enkla citattecken i DAX-formler som refererar till den i ett argument. Alla exempelbilder och formler i den här artikeln refererar till en datumtabell som skapas med namnet Kalenderi Power Pivot.

Nu har du en datumtabell i datamodellen. Du kan lägga till nya datumkolumner, till exempel År, Månad osv, med hjälp av DAX.

Lägga till nya datumkolumner i datumtabellen

En datumtabell med en enda datumkolumn med en rad för varje dag för varje år är viktigt för att definiera alla datum i ett datumintervall. Du måste också skapa en relation mellan faktatabellen och datumtabellen. Men den enstaka datumkolumnen med en rad för varje dag är inte användbar när du analyserar efter datum i en pivottabell eller Power View-rapport. Du vill att datumtabellen ska innehålla kolumner som hjälper dig att sammanställa data för ett intervall eller en grupp datum. Du kanske till exempel vill summera försäljningsbelopp per månad eller kvartal, eller så kan du skapa ett mått som beräknar årstillväxt över år. I vart och ett av dessa fall behöver datumtabellen kolumner för år, månad eller kvartal så att du kan aggregera data för den perioden.

Om du har importerat datumtabellen från en relationsdatakälla kanske den redan innehåller de olika typerna av datumkolumner som du vill använda. I vissa fall kanske du vill ändra några av dessa kolumner eller skapa ytterligare datumkolumner. Det gäller särskilt om du skapar en egen datumtabell i Excel kopierar den till datamodellen. Som tur är är det ganska enkelt att skapa nya datumkolumner i Power Pivot med datum- och tidsfunktioner i DAX.

Tips: Om du ännu inte har arbetat med DAX är snabbstart ett bra ställe att börja lära sig: Lär dig grunderna i DAX på 30 minuter på Office.com.

Datum- och tidsfunktioner i DAX

Om du någon gång har arbetat med datum- och tidsfunktioner i Excel-formler är du antagligen bekant med datum- och tidsfunktionerna. Även om dessa funktioner liknar deras motsvarigheter i Excel finns det några viktiga skillnader:

  • Datum- och tidsfunktioner i DAX använder datatypen datetime.

  • De kan använda värden från en kolumn som argument.

  • De kan användas för att returnera och/eller ändra datumvärden.

De här funktionerna används ofta när du skapar anpassade datumkolumner i en datumtabell, så att de är viktiga att förstå. Vi kommer att använda flera av de här funktionerna för att skapa kolumner för År, Kvartal, Räkenskapsmonth och så vidare.

Obs!: Datum- och tidsfunktionerna i DAX är inte samma som funktionen Tidsinformation. Läs mer om Tidsinformation i Power Pivot Excel 2013.

DAX innehåller följande datum- och tidsfunktioner:

Det finns många andra DAX-funktioner som du kan använda i dina formler också. Många av de formler som beskrivs här använder till exempel matematiska och trigonometriska funktioner som MOD och AVKORTA,Logiska funktioner som OMoch Textfunktioner som FORMAT Mer information om andra DAX-funktioner finns i avsnittet Ytterligare resurser längre fram i den här artikeln.

Formelexempel för ett kalenderår

I följande exempel beskrivs formler som används för att skapa ytterligare kolumner i en datumtabell med namnet Kalender. En kolumn med namnet Datum finns redan och innehåller ett angränsande datumintervall från 2010-01-01 till och med 2016-12-31.

År

=ÅR([datum])

I den här formeln returnerar funktionen ÅR året från värdet i kolumnen Datum. Eftersom värdet i kolumnen Datum är av datatypen datetime vet funktionen ÅR hur år returneras från det.

Kolumnen År

Månad

=MÅNAD([datum])

I den här formeln, ungefär som med funktionen ÅR, kan vi helt enkelt använda funktionen MÅNAD för att returnera ett månadsvärde från kolumnen Datum.

Kolumnen Månad

Kvartal

=INT(([Månad]+2)/3)

I den här formeln använder vi funktionen HELTAL för att returnera ett datumvärde som ett heltal. Det argument vi anger för funktionen HELTAL är värdet från kolumnen Månad, lägger till 2 och divider det sedan med 3 för att få kvartalet, 1 via 4.

Kolumnen Kvartal

Månadsnamn

=FORMAT([datum];"mmmm")

I den här formeln använder vi funktionen FORMAT för att hämta månadsnamnet till att konvertera ett numeriskt värde från kolumnen Datum till text. Vi anger kolumnen Datum som det första argumentet och sedan formatet. vi vill att månadsnamnet ska visa alla tecken, så vi använder "mmmm". Resultatet ser ut så här:

Kolumnen Månad Namn

Om vi vill returnera månadsnamnet förkortat till tre bokstäver använder vi "mmm" i argumentet format.

Dag i vecka

=FORMAT([datum];"ddd")

I den här formeln använder vi funktionen FORMAT för att hämta dagens namn. Eftersom vi bara vill ha ett förkortat dagsnamn anger vi "ddd" i argumentet format.

Kolumnen Veckodag
Exempel på pivottabell

När du har fält för datum som År, Kvartal, Månad osv. kan du använda dem i en pivottabell eller rapport. I följande bild visas till exempel fältet Försäljningsbelopp från faktatabellen Försäljning i VÄRDEN och År och Kvartal från dimensionstabellen Kalender i RADER. Försäljningsbelopp aggregeras för år och kvartalssammanhang.

Exempel på pivottabell

Formelexempel för ett räkenskapsår

Räkenskapsår

=OM([Månad]<= 6,[År],[År]+1)

I det här exemplet börjar räkenskapsåret den 1 juli.

Det finns ingen funktion som kan extrahera ett räkenskapsår från ett datumvärde eftersom start- och slutdatum för ett räkenskapsår ofta skiljer sig från kalenderår. För att få räkenskapsåret använder vi först en OM-funktion för att testa om värdet för Månad är mindre än eller lika med 6. I det andra argumentet, om värdet för Månad är mindre än eller lika med 6, returneras värdet från year-kolumnen. Annars returnerar du värdet från År och lägger till 1.

Kolumnen Räkenskapsår

Ett annat sätt att ange ett värde för månadens slutmånad för räkenskapsåret är att skapa ett mått som bara anger månaden. Till exempel OBS:=6. Sedan kan du referera till måttnamnet i stället för månadsnumret. Exempel: =OM([Månad]<=[RÅE];[År];[År]+1). Det ger mer flexibilitet när du refererar till räkenskapsårets slutmånad i flera olikaformler.

Räkenskapsmånad

=OM([Månad]<= 6, 6+[Månad],[Månad]-6)

I den här formeln anger vi om värdet för [Månad] är mindre än eller lika med 6, ta sedan 6 och addera värdet från Månad, annars subtrahera 6 från värdet från [Månad].

Kolumnen Räkenskapsmånad

Räkenskapsk kvartal

=INT(([FiscalMonth]+2)/3)

Formeln vi använder för Räkenskapskvartal är i stort sett densamma som den var för Kvartal under kalenderåret. Den enda skillnaden är att vi anger [Räkenskapsmånad] i stället för [Månad].

Kolumnen Räkenskapskvartal

Helgdagar eller specialdatum

Du kanske vill ta med en datumkolumn som anger att vissa datum är helgdagar eller något annat särskilt datum. Du kanske till exempel vill summera totalförsäljningssummorna för Nya år-dagen genom att lägga till fältet Helgdag i en pivottabell, som ett utsnitt eller filter. I andra fall kanske du vill utesluta dessa datum från andra datumkolumner eller i ett mått.

Att ta med helgdagar eller särskilda dagar är ganska enkelt. Du kan skapa en tabell i Excel som innehåller de datum som du vill ta med. Du kan sedan kopiera eller använda Lägg till i datamodell för att lägga till den i datamodellen som en länkad tabell. I de flesta fall behöver du inte skapa en relation mellan tabellen och tabellen Kalender. Alla formler som refererar till den kan använda funktionen LETAUPPVÄRDE för att returnera värden.

Här är ett exempel på en tabell som skapats i Excel som innehåller helgdagar som ska läggas till i datumtabellen:

Datum

Helgdag

1/1/2010

Nya år

11/25/2010

Hann7

12/25/2010

Julkort

2011-01-01

Nya år

11/24/2011

Hann7

12/25/2011

Julkort

1/1/2012

Nya år

2012-11-22

Hann7

12/25/2012

Julkort

1/1/2013

Nya år

11/28/2013

Hann7

12/25/2013

Julkort

11/27/2014

Hann7

12/25/2014

Julkort

2014-01-01

Nya år

11/27/2014

Hann7

12/25/2014

Julkort

1/1/2015

Nya år

11/26/2014

Hann7

12/25/2015

Julkort

2016-01-01

Nya år

11/24/2016

Hann7

12/25/2016

Julkort

I datumtabellen skapar vi en kolumn med namnet Helgdag och använder en formel som den här:

=LETAUPPVÄRDE(Helgdagar[Semester],Helgdagar[datum],Kalender[datum])

Låt oss titta närmare på den här formeln.

Vi använder funktionen LETAUPPVÄRDE för att hämta värden från kolumnen Helgdag i tabellen Helgdagar. I det första argumentet anger vi den kolumn där resultatet ska vara. Vi anger kolumnen Helgdagar i tabellen Helgdagar eftersom det är det värde vi vill returnera.

=LETAUPPVÄRDE(Helgdagar[Helgdag],Helgdagar[datum],Kalender[datum])

Sedan anger vi det andra argumentet, sökkolumnen som innehåller de datum vi vill söka efter. Vi anger kolumnen Datum i tabellen Helgdagar, så här:

=LETAUPPVÄRDE(Helgdagar[Semester],Helgdagar[datum],Kalender[datum])

Slutligen anger vi den kolumn i tabellen Kalender som innehåller de datum vi vill söka efter i tabellen Semester. Det här är naturligtvis kolumnen Datum i tabellen Kalender.

=LETAUPPVÄRDE(Helgdagar[Semester],Helgdagar[datum],Kalender[datum])

Kolumnen Helgdag returnerar helgdagens namn för varje rad som har ett datumvärde som matchar ett datum i tabellen Helgdagar.

Tabellen Helgdagar

Anpassad kalender – tretton fyraveckorsperioder

Vissa organisationer, som detaljhandel och livsmedelstjänster, rapporterar ofta olika perioder, t.ex. tretton fyraveckorsperioder. Med en trettond fyraveckorsperiod är varje period 28 dagar. Därför innehåller varje period fyra måndagar, fyra tisdagar, fyra onsdagar och så vidare. Varje period innehåller samma antal dagar och vanligtvis faller helgdagarna inom samma period varje år. Du kan välja att börja perioden på valfri veckodag. Precis som med datum i en kalender eller ett räkenskapsår kan du använda DAX för att skapa ytterligare kolumner med anpassade datum.

I exemplen nedan börjar den första fullständiga perioden på den första söndagen i räkenskapsåret. I det här fallet börjar räkenskapsåret 2011-07-01.

Vecka

Det här värdet ger oss veckonumret som börjar med den första fullständiga veckan under räkenskapsåret. I det här exemplet börjar den första hela veckan på söndag, så den första fullständiga veckan i det första räkenskapsåret i tabellen Kalender börjar faktiskt 2010-07-04 och fortsätter till och med den senaste fullständiga veckan i tabellen Kalender. Även om själva värdet inte är så användbart i analysen, så är det nödvändigt att beräkna för användning i andra 28-dagarsformel.

=INT([datum]-40356)/7)

Låt oss titta närmare på den här formeln.

Först skapar vi en formel som returnerar värden från kolumnen Datum som ett heltal, så här:

=INT([datum])

Sedan vill vi titta efter den första söndagen i det första räkenskapsåret. Vi ser att det är 2010-07-04.

Kolumnen Vecka

Subtrahera 40356 (som är heltalet för 2010-06-27, den sista söndagen från det föregående räkenskapsåret) från det värdet för att få antalet dagar sedan början av dagarna i tabellen Kalender, så här:

=INT([datum]-40356)

Dividera sedan resultatet med 7 (dagar i en vecka), så här:

=INT(([datum]-40356)/7)

Så här ser resultatet ut:

Kolumnen Vecka

Punkt

Perioden i den här anpassade kalendern innehåller 28 dagar och börjar alltid på en söndag. Den här kolumnen returnerar numret på perioden som börjar med den första söndagen i det första räkenskapsåret.

=INT(([Vecka]+3)/4)

Låt oss titta närmare på den här formeln.

Först skapar vi en formel som returnerar ett värde från kolumnen Vecka som ett heltal, så här:

=INT([Vecka])

Lägg sedan till 3 till det värdet, så här:

=INT([Vecka]+3)

Dividera sedan resultatet med 4, så här:

=INT(([Vecka]+3)/4)

Så här ser resultatet ut:

Kolumnen Period

Period – räkenskapsår

Det här värdet returnerar räkenskapsåret för en period.

=INT(([Punkt]+12)/13)+2008

Låt oss titta närmare på den här formeln.

Först skapar vi en formel som returnerar ett värde från punkt och adderar 12:

= ([Punkt]+12)

Resultatet delas upp med 13 eftersom det finns tretton 28 dagar under räkenskapsåret:

=(([Punkt]+12)/13)

Vi lägger till 2010 eftersom det är det första året i tabellen:

=(([Punkt]+12)/13)+2010

Slutligen använder vi funktionen HELTAL för att ta bort en del av resultatet och returnera ett heltal, om det divideras med 13, så här:

=INT(([Punkt]+12)/13)+2010

Så här ser resultatet ut:

Kolumnen Räkenskapsår för period

Period i räkenskapsår

Det här värdet returnerar periodnumret 1–13, med början från den första fullständiga perioden (som börjar på söndag) för varje räkenskapsår.

=OM(MOD([Punkt];13);MOD([Punkt];13);13)

Den här formeln är lite mer komplex, så vi beskriver den först på ett språk vi bättre förstår. Den här formeln säger att dividera värdet från [Period] med 13 för att få ett periodnummer (1-13) på året. Om talet är 0 returneras 13.

Först skapar vi en formel som returnerar resten av värdet från period med 13. Vi kan använda MOD (matematiska och trigonometriska funktioner) så här:

=MOD([Punkt],13)

Det ger i de flesta fall det resultat vi vill ha, förutom där värdet för Period är 0 eftersom datumen inte faller inom det första räkenskapsåret, som i de första fem dagarna i vår exempeltabell för kalenderdatum. Vi kan sköta det här med en OM-funktion. Om resultatet är 0 returnerar vi 13, så här:

=OM(MOD([Punkt],13),MOD([Punkt],13),13)

Så här ser resultatet ut:

Period i räkenskapsåret

Exempel på pivottabell

På bilden nedan visas en pivottabell med fältet Försäljningsbelopp från faktatabellen Försäljning i VÄRDEN och fälten PeriodFiscalYear och PeriodInFiscalYear från datumdimensionstabellen Kalender i RADER. Försäljningsbelopp aggregeras för sammanhanget per räkenskapsår och 28-dagars period under räkenskapsåret.

Exempel på pivottabell för räkenskapsår

Relationer

När du har skapat en datumtabell i datamodellen, och vill börja bläddra bland data i pivottabeller och rapporter, och aggregera data baserat på kolumnerna i tabellen med datumdimensionen, måste du skapa en relation mellan faktatabellen med dina transaktionsdata och datumtabellen.

Eftersom du måste skapa en relation baserat på datum bör du skapa relationen mellan kolumner med värden av datatypen datetime (Datum).

För varje datumvärde i faktatabellen måste den relaterade uppslagskolumnen i datumtabellen innehålla matchande värden. En rad (transaktionspost) i faktatabellen Försäljning med värdet 2012-08-15 12:00 i kolumnen Datumnyckel måste ha ett motsvarande värde i den relaterade datumkolumnen i datumtabellen (som heter Kalender). Det här är en av de viktigaste anledningarna till att datumkolumnen i datumtabellen ska innehålla ett angränsande datumintervall som innehåller alla möjliga datum i faktatabellen.

Relationer i diagramvyn

Obs!: Även om datumkolumnen i varje tabell måste ha samma datatyp (Datum), spelar varje kolumns format ingen roll.

Obs!: Om du inte kan skapa relationer mellan de två tabellerna med Power Pivot kanske datum- och tidsfälten inte lagras i samma precisionsnivå i datumfälten. Beroende på kolumnformateringen kan värdena se likadana ut, men lagras på olika sätt. Läs mer om att arbeta med tid.

Obs!: Undvik att använda heltal av surrogattangenter i relationer. När du importerar data från en relationsdatakälla representeras ofta datum- och tidskolumner av en surrogatnyckel, som är en heltalskolumn som representerar ett unikt datum. I Power Pivot bör du undvika att skapa relationer med datum-/tidstangenter för heltal och i stället använda kolumner som innehåller unika värden med en datumdatatyp. Även om användningen av surrogattangenter är en bra metod i traditionella datalager, så behövs inte heltalsnycklarna i Power Pivot och kan göra det svårt att gruppera värden i pivottabeller efter olika datumperioder.

Om du får ett Type mismatch-fel när du försöker skapa en relation beror det förmodligen på att kolumnen i faktatabellen inte är av datatypen Datum. Det här kan inträffa när Power Pivot inte automatiskt kan konvertera ett icke-datum (vanligtvis en textdatatyp) till en datumdatatyp. Du kan fortfarande använda kolumnen i faktatabellen, men du måste konvertera data med en DAX-formel i en ny beräknad kolumn. Se Konvertera datum av textdatatyp till en datumdatatyp längre fram i bilaga.

Flera relationer

I vissa fall kan det vara nödvändigt att skapa flera relationer eller skapa flera datumtabeller. Om det till exempel finns flera datumfält i faktatabellen Försäljning, till exempel DatumNyckel, Leveransdatum och Returdatum, kan alla ha relationer till fältet Datum i datumtabellen Kalender, men bara ett av dem kan vara en aktiv relation. Eftersom DateKey i det här fallet representerar datumet för transaktionen, och därför det viktigaste datumet, bör det här fungera bäst som den aktiva relationen. De andra har inaktiva relationer.

I följande pivottabell beräknas den totala försäljningen per räkenskapsår och räkenskapsk kvartal. Ett mått med namnet Total försäljning, med formeln Total försäljning:=SUMMA([Försäljningsbelopp])placeras i VÄRDEN och fälten Räkenskapsår och Räkenskapskvartalt från tabellen Kalenderdatum placeras i RADER.

Pivottabell med total försäljning per räkenskapskvartal Fältlista för pivottabell

Den här pivottabellen fungerar korrekt eftersom vi vill summera den totala försäljningen senasttransaktionsdatumet i DateKey. Totalförsäljningsmåttet använder datumen i Datumnyckel och summeras med räkenskapsår och räkenskapsk kvartal eftersom det finns ett samband mellan DatumNyckel i tabellen Försäljning och kolumnen Datum i datumtabellen Kalender.

Inaktiva relationer

Men tänk om vi vill summera totalförsäljningen inte efter transaktionsdatum utan efter leveransdatum? Vi behöver en relation mellan kolumnen Leveransdatum i tabellen Försäljning och kolumnen Datum i tabellen Kalender. Om vi inte skapar relationen är våra aggregeringar alltid baserade på transaktionsdatumet. Men vi kan ha flera relationer, även om bara en kan vara aktiv, och eftersom transaktionsdatumet är det viktigaste får den aktiva relationen med tabellen Kalender.

I det här fallet har Leveransdatum en inaktiv relation, så alla måttformel som skapas för att aggregera data baserade på leveransdatum måste ange den inaktiva relationen med hjälp av funktionen USERELATIONSHIP.

Eftersom det till exempel finns en inaktiv relation mellan kolumnen Leveransdatum i tabellen Försäljning och kolumnen Datum i tabellen Kalender kan vi skapa ett mått som summerar den totala försäljningen per leveransdatum. Vi använder en sådan formel för att ange vilken relation som ska användas:

Total försäljning per leveransdatum:=CALCULATE(SUMMA(Försäljning[Försäljningsbelopp]), USERELATIONSHIP(Försäljning[Leveransdatum], Kalender[Datum]))

Den här formeln visar helt enkelt: Beräkna en summa för Försäljningsbelopp, men filtrera genom att använda relationen mellan kolumnen Leveransdatum i tabellen Försäljning och kolumnen Datum i tabellen Kalender.

Om vi skapar en pivottabell och lägger måttet Total försäljning per leveransdatum i VÄRDEN och Räkenskapsår och Räkenskapsk kvartal i RADER ser vi samma totalsumma men alla andra summabelopp för räkenskapsår och räkenskapsk kvartal skiljer sig åt eftersom de är baserade på leveransdatumet och inte transaktionsdatumet.

Pivottabell med Total försäljning per leveransdatum Fältlista för pivottabell

Om du använder inaktiva relationer kan du bara använda en datumtabell, men det krävs att alla mått (som Total Sales by Ship Date) refererar till den inaktiva relationen i formeln. Det finns ett annat alternativ, det vill säga använda flera datumtabeller.

Flera datumtabeller

Ett annat sätt att arbeta med flera datumkolumner i faktatabellen är att skapa flera datumtabeller och skapa separata aktiva relationer mellan dem. Nu ska vi titta på tabellexempel för Försäljning igen. Vi har tre kolumner med datum som vi kanske vill aggregera data för:

  • En Datumnyckel med försäljningsdatumet för varje transaktion.

  • Ett Leveransdatum – med datum och tid då de sålda artiklarna levererades till kunden.

  • Ett Returdatum – med datum och tid då ett eller flera objekt togs emot.

Kom ihåg att fältet Datumnyckel med transaktionsdatumet är viktigast. Vi kommer att göra de flesta av våra aggregeringar baserat på dessa datum, så vi kommer definitivt att vilja ha en relation mellan den och kolumnen Datum i tabellen Kalender. Om vi inte vill skapa inaktiva relationer mellan Leveransdatum och Returdatum och fältet Datum i tabellen Kalender, vilket kräver speciella måttformlar, kan vi skapa ytterligare datumtabeller för leveransdatum och returdatum. Vi kan sedan skapa aktiva relationer mellan dem.

Relationer med flera datumtabeller i diagramvyn

I det här exemplet har vi skapat en annan datumtabell med namnet ShipCalendar. Det innebär förstås också att skapa ytterligare datumkolumner, och eftersom datumkolumnerna finns i en annan datumtabell vill vi namnge dem på ett sätt som skiljer dem från samma kolumner i tabellen Kalender. Vi har till exempel skapat kolumnerna ShipYear, ShipMonth, ShipQuarter och så vidare.

Om vi skapar pivottabellen och visar Total Sales-måttet i VÄRDEN och ShipFiscalYear och ShipFiscalQuarter på ROWS, ser vi samma resultat som när vi skapade en inaktiv relation och ett särskilt beräknat fält för Total försäljning per leveransdatum.

Pivottabell med Total försäljning per leveransdatum med leveranskalender Fältlista för pivottabellen

Var och en av dessa metoder kräver noggranna överväganden. När du använder flera relationer med en enda datumtabell kan du behöva skapa speciella mått som transiteras inaktiva relationer med hjälp av funktionen USERELATIONSHIP. Att skapa flera datumtabeller kan å andra sidan vara förvirrande i en fältlista, och eftersom du har fler tabeller i datamodellen krävs mer minne. Experimentera med det som passar dig bäst.

Egenskapen Datumtabell

Egenskapen Datumtabell anger metadata som krävs för att Time-Intelligence funktioner som SUMMA.TILL, FÖREGÅENDE MÅNAD och DATUM.MELLAN ska fungera korrekt. När en beräkning körs med någon av dessa funktioner vet formelmotorn i Power Pivot var de ska gå för att hämta de datum som behövs.

Varning!: Om den här egenskapen inte är inställd kanske inte mått som använder DAX Time-Intelligence returnerar rätt resultat.

När du anger egenskapen Datumtabell anger du en datumtabell och en datumkolumn med datatypen Datum (datum/tid).

Dialogrutan Markera som datumtabell

Så här gör du: Ange egenskapen Datumtabell

  1. I PowerPivot väljer du tabellen Kalender.

  2. Klicka på Markera som datumtabell på flikenDesign.

  3. I dialogrutan Markera som datumtabell väljer du en kolumn med unika värden och datatypen Datum.

Arbeta med tid

Alla datumvärden med datatypen Datum i Excel eller SQL Server är i själva verket ett tal. Siffrorna i talet omfattar siffror som refererar till en tid. Den tiden för varje rad är i många fall midnatt. Om ett DateTimeKey-fält i en faktatabell för försäljning till exempel har värden som 2010-10-19 12:00:00, innebär det att värdena ligger på dagsprecisionen. Om DatumtidNyckel-fältvärdena innehåller en tid, till exempel 2010-10-19 2010 8:44:00, innebär det att värdena ligger på minutnivån för precisionen. Värdena kan också vara precisionen på timnivån eller till och med sekunders precisionsnivå. Precisionsnivån i tidsvärdet har stor inverkan på hur du skapar datumtabellen och relationerna mellan den och faktatabellen.

Du måste bestämma om du ska aggregera dina data till en dagsprecision eller till en tidsnivå för precision. Med andra ord kanske du vill använda kolumner i datumtabellen, till exempel Morgon, Eftermiddag eller Timme som datumfält i en pivottabells rad-, kolumn- eller filterområden.

Obs!: Dagar är den minsta tidsenheten som DAX-tidsinformationsfunktioner kan arbeta med. Om du inte behöver arbeta med tidsvärden bör du minska dataprecisionen och använda dagar som minsta enhet.

Om du har för avsikt att aggregera data till tidsnivån behöver datumtabellen en datumkolumn där tiden ingår. Faktum är att den kommer att behöva en datumkolumn med en rad för varje timme, eller kanske varje minut, för varje dag, för varje år i datumintervallet. Det beror på att du måste ha matchande värden för att skapa en relation mellan kolumnen DateTimeKey i faktatabellen och datumkolumnen i datumtabellen. Som du kan föreställa dig kan det här ge en mycket stor datumtabell om du tar med många år.

Men i de flesta fall vill du aggregera data endast till dagen. Med andra ord kommer du att använda kolumner som År, Månad, Vecka eller Dag i vecka som fält i en pivottabells rad-, kolumn- eller filterområden. I det här fallet behöver datumkolumnen i datumtabellen bara innehålla en rad för varje dag på ett år, som vi beskrev tidigare.

Om datumkolumnen innehåller en tidsnivå med precision, men du bara aggregerar till en dagnivå, så kan du behöva ändra faktatabellen genom att skapa en ny kolumn som trunkerar värdena i datumkolumnen till ett dagvärde. Med andra ord, konvertera ett värde som 2010-10-19 08:44:00till2010-10-19 12:00:00. Du kan sedan skapa relationen mellan den nya kolumnen och datumkolumnen i datumtabellen eftersom värdena matchar.

Låt oss titta på ett exempel. Den här bilden visar kolumnen DateTimeKey i faktatabellen Försäljning. Alla aggregeringar för data i den här tabellen behöver bara vara på dagnivån, med hjälp av kolumner i tabellen Kalenderdatum som År, Månad, Kvartal osv. Tiden som ingår i värdet är inte relevant, bara det faktiska datumet.

Datumtidnyckel-kolumn

Eftersom vi inte behöver analysera dessa data på tidsnivån behöver vi inte ha kolumnen Datum i tabellen Kalenderdatum för att ta med en rad för varje timme och minut varje dag på varje år. Så kolumnen Datum i datumtabellen ser ut så här:

Datumkolumn i Power Pivot

För att skapa en relation mellan kolumnen DateTimeKey i tabellen Försäljning och kolumnen Datum i tabellen Kalender kan vi skapa en ny beräknad kolumn i faktatabellen Försäljning och använda funktionen AVKORTA för att trunkera värdet för datum och tid i kolumnen DateTimeKey till ett datumvärde som matchar värdena i kolumnen Datum i tabellen Kalender. Formeln ser ut så här:

=AVKORTA([DateTimeKey],0)

Det ger oss en ny kolumn (vi heter DateKey) med datumet från kolumnen DateTimeKey och en tid på 12:00:00 AM för varje rad:

Kolumnen Datumnyckel

Nu kan vi skapa en relation mellan den här nya kolumnen (Datumnyckel) och kolumnen Datum i tabellen Kalender.

På samma sätt kan vi skapa en beräknad kolumn i tabellen Försäljning som minskar tidsprecisionen i kolumnen DateTimeKey till timprecisionen. I det här fallet fungerar inte funktionen TRUNC, men vi kan fortfarande använda andra DAX-datum- och tidsfunktioner för att extrahera och sammanfoga ett nytt värde till en timmes precisionsnivå. Vi kan använda en sådan här formel:

= DATUM (ÅR([DatumtidNyckel]), MÅNAD([DatumtidNyckel]), DAG([DatumTidNyckel]) ) + TID (TIMME([DatumtidNyckel]), 0, 0)

Den nya kolumnen ser ut så här:

Datumtidnyckel-kolumn

Förutsatt att kolumnen Datum i datumtabellen har värden som timprecisionsnivå kan vi sedan skapa en relation mellan dem.

Göra datum mer användbara

Många av datumkolumnerna som du skapar i datumtabellen är nödvändiga för andra fält, men det är ändå inte så användbart i analys. Till exempel är fältet DateKey i tabellen Försäljning vi hänvisar till och visar i den här artikeln viktigt eftersom den transaktionen registreras vid ett visst datum och en viss tidpunkt för varje transaktion. Men utifrån en analys- och rapporteringsvy är det inte så användbart eftersom vi inte kan använda det som ett rad-, kolumn- eller filterfält i en pivottabell eller rapport.

I vårt exempel är kolumnen Datum i tabellen Kalender mycket användbar, mycket kritisk, men du kan inte använda den som en dimension i en pivottabell.

För att tabeller och kolumner i dem ska vara så användbara som möjligt, och för att göra det lättare att navigera i fältlistor för pivottabeller eller Power View-rapporter, är det viktigt att dölja onödiga kolumner från klientverktyg. Du kanske även vill dölja vissa tabeller. Tabellen Helgdagar som visas tidigare innehåller helgdagar som är viktiga för vissa kolumner i tabellen Kalender, men du kan inte använda kolumnerna Datum och Helgdag i tabellen Helgdagar som fält i en pivottabell. Du kan göra det lättare att navigera i fältlistor genom att dölja hela tabellen Helgdagar.

En annan viktig del i att arbeta med datum är namnkonventioner. Du kan namnge tabeller och kolumner i Power Pivot vad du vill. Men kom ihåg, särskilt om du ska dela arbetsboken med andra användare, att ett bra namngivningskonventioner gör det enklare att identifiera tabeller och datum, inte bara i fältlistor utan även i Power Pivot och i DAX-formler.

När du har en datumtabell i datamodellen kan du börja skapa mått som hjälper dig att få ut mesta av dina data. Vissa kan vara så enkla som att summera total försäljning för det aktuella året och andra kan vara mer komplexa, där du måste filtrera efter ett visst intervall med unika datum. Mer information finns i Mått i Funktionerna Power Pivot och Tidsinformation.

Bilaga

Konvertera datum av textdatatyp till en datumdatatyp

I vissa fall kan en faktatabell med transaktionsdata innehålla datum av datatypen text. Det vill säga ett datum som visas som 2012-12-04T11:47:09 är faktiskt inte ett datum alls, eller åtminstone inte den typ av datum som Power Pivot kan förstå. Det är i egentligen bara text som läser ett datum. För att skapa en relation mellan en datumkolumn i faktatabellen och en datumkolumn i en datumtabell måste båda kolumnerna vara av datatypen Datum.

När du försöker ändra datatypen för en kolumn med datum som är textdatatyp till en datumdatatyp, kan Power Pivot tolka datumen och konvertera dem automatiskt till en sant datumdatatyp. Om Power Pivot inte kan konvertera datatyper visas ett typfel.

Du kan dock fortfarande konvertera datum till datatypen sant datum. Du kan skapa en ny beräknad kolumn och använda en DAX-formel för att tolka år, månad, dag, tid osv. från textsträngarna och sedan sammanfoga tillbaka det på ett sätt som Power Pivot kan läsa som ett sant datum.

I det här exemplet har vi importerat en faktatabell med namnet Försäljning till Power Pivot. Den innehåller en kolumn med namnet DateTime. Värden visas så här:

Kolumnen Datumtid i en faktatabell.

Om vi tittar på datatypen i gruppen Formatering på fliken Start i Power Pivot ser vi att det är datatypen Text.

Datatyp i menyflik

Det går inte att skapa en relation mellan DateTime-kolumnen och datumkolumnen i datumtabellen eftersom datatyperna inte stämmer överens. Om vi försöker ändra datatypen till Datumvisas ett typfel:

Matchningsfel

I det här fallet kunde Power Pivot inte konvertera datatypen från text till datum. Vi kan fortfarande använda den här kolumnen, men för att få till en sann datumdatatyp måste vi skapa en ny kolumn som parsar texten och skapar den på nytt till ett värde som Power Pivot kan göra till datatypen Datum.

Kom ihåg från avsnittet Arbeta med tid tidigare i den här artikeln. Om det inte är nödvändigt att analysen ska gå till en tidsprecisionsnivå, bör du konvertera datum i faktatabellen till en dagsprecision. Med detta i åtanke vill vi att värdena i den nya kolumnen ska vara på dagprecisionsnivån (exklusive tid). Vi kan båda konvertera värdena i kolumnen DateTime till en datumdatatyp och ta bort tidsnivån för precision med följande formel:

=DATUM(VÄNSTER([Datumtid],4), EXVÄRDE([Datumtid],6,2), EXK([Datumtid],9,2))

Då får vi en ny kolumn (i det här fallet Datum). Power Pivot identifierar till och med datumvärdena och ställer automatiskt in datatypen till Datum.

Kolumnen Datum i en faktatabell

Om vi vill bevara tidsnivån för precision utökar vi bara formeln så att den inkluderar timmar, minuter och sekunder.

=DATUM(VÄNSTER([Datumtid],4), EXVÄRDE([Datumtid],6,2), EXK([Datumtid],9,2)) +

TIME(MID([DateTime],12,2), MID([DateTime],15,2), MID([DateTime],18,2))

Nu när vi har en kolumn av datatypen Datum kan vi skapa en relation mellan den och en datumkolumn i ett datum.

Fler resurser

Datum i PowerPivot

Beräkningar i Power Pivot

Snabbstart: Grunderna i DAX på 30 minuter

Referens för dataanalysuttryck

DAX Resource Center

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×