Innledning
Du kan skrive en DAX-formel for å legge til en beregnet tabell til modellen. Formelen kan duplisere elle transformere eksisterende modelldata for å opprette en ny tabell.
Obs!
En beregnet tabell kan ikke koble til eksterne data. Du må bruke Power Query til å utføre denne oppgaven.
En beregnet tabellformel må returnere et tabellobjekt. Den enkleste formelen kan duplisere en eksisterende modelltabell.
Beregnede tabeller har en kostnad: De øker lagringsstørrelsen for modellen, og de kan forlenge tiden det tar for dataoppdatering. Årsaken er at beregnede tabeller beregnes på nytt når de har formelavhengigheter til oppdaterte tabeller.
Duplisere en tabell
Den følgende delen beskriver en felles utformingsutfordring som kan løses ved å opprette en beregnet tabell. Først må du laste ned og åpne Adventure Works DW 2020 M03.pbix-filen og deretter bytte til modelldiagrammet.
Legg merke til at Salg-tabellen har tre relasjoner til Dato-tabellen i modelldiagrammet.
Modelldiagrammet viser tre relasjoner fordi Salg-tabellen lagrer salgsdata etter ordredato, forsendelsesdato og forfallsdato. Hvis du undersøker OrderDateKey, ShipDateKeyog DueDateKey-kolonnene, merk at én relasjon representeres av en heltrukket linje, som er den aktive relasjonen. De andre relasjonene, som representeres av stiplede linjer, er inaktive relasjoner.
Obs!
Det kan bare være én aktiv relasjon mellom to modelltabeller.
Beveg markøren over den aktive relasjonen i diagrammet for å utheve de relaterte kolonnene, som er hvordan du samhandler med modelldiagrammet for å finne ut mer om relaterte kolonner. I dette tilfellet filtrerer den aktive relasjonen OrderDateKey-kolonnen i Salg-tabellen . Derfor overføres filtre som brukes på Dato-tabellen , til Salg-tabellen for å filtrere etter ordredato. de filtrerer aldri etter forsendelsesdato eller forfallsdato.
Det neste trinnet er å slette de to inaktive relasjonene mellom Dato-tabellen og Salg-tabellen . Hvis du vil slette en relasjon, høyreklikker du på den og velger deretter Slett i hurtigmenyen. Sørg for at du sletter begge inaktive relasjoner.
Deretter kan du legge til en ny tabell for å tillate rapportbrukere å filtrere salg etter forsendelsesdato. Bytt til rapportvisning, og velg deretter Ny tabell på fanen Modellering på båndfanen Modellering i Beregninger-gruppen.
Skriv inn følgende beregnede tabelldefinisjon på formellinjen (plassert under båndet), og trykk deretter ENTER.
Ship Date = 'Date'
Den beregnede tabelldefinisjonen dupliserer datotabelldataene for å produsere en ny tabell kalt Forsendelsesdato. Forsendelsesdato-tabellen har nøyaktig de samme kolonnene og radene som Dato-tabellen. Når data i datotabellen oppdateres, beregnes forsendelsesdatotabellen på nytt, slik at de alltid er synkronisert.
Bytt til modelldiagrammet, og legg deretter merke til tillegget av Forsendelsesdato-tabellen .
Deretter oppretter du en relasjon mellom DateKey-kolonnen i Forsendelsesdato-tabellen og ShipDateKey-kolonnen i Salg-tabellen . Du kan opprette relasjonen ved å dra DateKey-kolonnen i Forsendelsesdato-tabellen til ShipDateKey-kolonnen i Salg-tabellen .
En beregnet tabell dupliserer bare data. den dupliserer ingen modellegenskaper eller objekter som kolonnesynlighet eller hierarkier. Du må konfigurere dem for den nye tabellen om nødvendig.
Tips
Det er mulig å gi nytt navn til kolonnene i en beregnet tabell. I dette eksemplet er det lurt å gi nytt navn til kolonner slik at de bedre beskriver formålet med dem. Kolonnen Regnskapsår i Forsendelsesdato-tabellen kan for eksempel gis nytt navn som Forsendelses regnskapsår. Når felt fra Forsendelsesdato-tabellen brukes i visualobjekter, inkluderes navnene automatisk i bildetekster som tittelen på visualobjektet eller akseetikettene.
Hvis du vil fullføre utformingen av Forsendelsesdato-tabellen , kan du:
- Gi nytt navn til følgende kolonner:
- Dato som Forsendelsesdato
- Regnskapsår som Forsendelses-regnskapsår
- Regnskapskvartal som Forsendelses-regnskapskvartal
- Måned som Forsendelses-måned
- Full dato som Leverings-fullstendig dato
- Sorter Leverings-fullstendig dato kolonne etter Forsendelsesdato-kolonnen.
- Sorter Forsendelsesmåned kolonne på MonthKey kolonnen.
- Skjul MonthKey-kolonnen.
- Opprett et hierarki med navnet Regnskap med følgende nivåene:
- Forsendelse regnskapsår
- Forsendelse regnskapskvartal
- Forsendelse måned
- Forsendelse fullstendig dato
- Merk forsendelsesdato-tabellen som en datotabell, ved hjelp av Forsendelsesdato-kolonnen.
Beregnede tabeller er nyttige for å arbeide i scenarier når det finnes flere relasjoner mellom to tabeller, som beskrevet tidligere. De kan også brukes til å legge til en datotabell i modellen din. Datotabeller er nødvendige for å kunne bruke spesielle tidsfiltre kjent som tidsintelligens.
Opprett en datatabell
I det neste eksemplet opprettes en annen beregnet tabell, denne gangen ved hjelp CALENDARAUTO
av DAX-funksjonen.
Opprett beregnet forfallsdato ved hjelp av følgende definisjon.
Due Date = CALENDARAUTO(6)
CALENDARAUTO
DAX-funksjonen tar ett enkelt valgfritt argument, som er det siste månedsnummeret i året, og returnerer en tabell med én kolonne. Hvis du ikke angir et måneds tall, antas det at det er 12 (for desember). For eksempel, hos Adventure Works, avsluttes regnskapsåret 30. juni i hvert år, slik at verdien 6 (for juni) blir angitt.
Funksjonen skanner alle dato- og dato/klokkeslett-kolonner i modellen for å bestemme de tidligste og siste lagrede datoverdiene. Deretter produserer den et komplett sett med datoer som spenner over alle datoer i modellen din, slik at du et fullt år med datoer lastes. Hvis for eksempel den tidligste datoen som er lagret i modellen er 15. oktober 2021, vil den første datoen som returneres av CALENDARAUTO
funksjonen, være 1. juli 2021. Hvis den siste datoen som er lagret i modellen, er 15. juni 2022, vil den siste datoen som returneres av CALENDARAUTO
funksjonen, være 30. juni 2022.
Funksjonen garanterer effektivt CALENDARAUTO
at følgende krav for å markere en datotabell er oppfylt:
- Tabellen må inneholde en kolonne med datatypen Dato.
- Kolonnen må inneholde fullstendige år.
- Kolonnen kan ikke ha manglende datoer.
Tips
Du kan også opprette en datotabell ved hjelp CALENDAR
av DAX-funksjonen og sende inn to datoverdier, som representerer datointervallet. Funksjonen genererer én rad for hver dato i området. Du kan sende inn statiske datoverdier eller sende inn uttrykk som henter de tidligste/siste datoene fra bestemte kolonner i modellen.
Bytt deretter til datavisning, og velg deretter Forfallsdato-tabellen i Felter-ruten. Nå kan du se gjennom kolonnen med datoer. Det kan være lurt å sortere dem for å se den tidligste datoen i første rad ved å velge pilen i kolonneoverskriften Dato og deretter sortere i stigende rekkefølge.
Obs!
Sorterings- eller filtrerings-kolonner endrer ikke måten verdiene lagres på. Disse funksjonene hjelper deg med å utforske og forstå dataene.
Nå som det er merket av for Dato-kolonnen, kan du se gjennom meldingen på statuslinjen (i hjørnet nederst til venstre). Den beskriver hvor mange rader tabellen lagrer, og hvor mange distinkte verdier som blir funnet i den valgte kolonnen.
Når tabellradene og distinkte verdier er like, betyr det at kolonnen inneholder unike verdier. Denne faktoren er viktig av to årsaker: Det oppfyller kravene for å merke en datotabell, og den tillater at denne kolonnen kan brukes i en modellrelasjon som én side.
Den beregnede forfallsdatotabellen beregnes på nytt hver gang en tabell som inneholder en datokolonne, oppdateres. Med andre ord, når en rad lastes inn i Salg-tabellen med en ordredato på 1. juli 2022, utvides forfallsdatotabellen automatisk til å inkludere datoer frem til slutten av neste år: 30. juni 2023.
Forfallsdato-tabellen krever flere kolonner for å støtte kjente krav til filtrering og gruppering, spesielt etter år, kvartal og måned.