Datumne tabele v dodatku Power Pivot so ključnega pomena za brskanje in računanje podatkov v določenem časovnem obdobju. V tem članku je podrobno opisano datumsko tabelo in kako jih lahko ustvarite v dodatku Power Pivot. V tem članku so opisani zlasti ti članki:
-
Zakaj je datumna tabela pomembna za brskanje in računanje podatkov po datumih in času.
-
Kako z dodatkom Power Pivot dodate datumsko tabelo v podatkovni model.
-
Kako ustvariti nove stolpce z datumi, kot so Leto, Mesec in Obdobje v datumski tabeli.
-
Kako ustvariti relacije med datumsko tabelo in tabelami de fact.
-
Kako delati s časom.
Ta članek je namenjen uporabnikom, ki so novi v dodatku Power Pivot. Vendar pa je pomembno, da že dobro razumete uvoz podatkov, ustvarite relacije ter ustvarite izračunane stolpce in mere.
V tem članku ni opisano, kako uporabljati funkcije jezika DAX Time-Intelligence meri formule. Če želite več informacij o ustvarjanju mer s funkcijami časovnega obveščanja DAX, glejte Obveščanje o času v dodatku Power Pivot v Excelu.
Opomba: V dodatku Power Pivot sta imeni »mera« in »izračunano polje« sopomeni. Mero imena uporabljamo v tem članku. Če želite več informacij, glejte Mere v dodatku Power Pivot.
Vsebina
Razumevanje datumovih tabel
Skoraj vse analize podatkov vključujejo brskanje in primerjavo podatkov glede na datume in čas. Morda želite na primer sešteti zneske prodaje za preteklo poslovno četrtletje in nato primerjati te vsote z drugimi četrtletji ali pa želite izračunati končni saldo ob koncu meseca za kont. V vsakem od teh primerov uporabljate datume kot način združevanja in združevanja prodajnih transakcij ali saldov za določeno časovno obdobje.
Poročilo Power View
V datumski tabeli je lahko veliko različnih predstavitev datumov in časa. V datumski tabeli so na primer pogosto stolpci, kot so Poslovno leto, Mesec, Četrtletje ali Obdobje, ki jih lahko izberete kot polja s seznama polj, ko želite pisati in filtrirati podatke v vrtilnih tabelah ali poročilih Power View.
Seznam polj v dodatku Power View
Če želite, da datumski stolpci, kot so »Leto«, »Mesec« in »Četrtletje«, vključujejo vse datume v ustreznem obsegu, mora imeti tabela datumov vsaj en stolpec s neprekinjenim nizom datumov. To pomeni, da mora imeti ta stolpec eno vrstico za vsak dan za vsako leto, vključeno v datumsko tabelo.
Če na primer podatki, po katerih želite brskati, vsebuje datume od 1. februarja 2010 do 30. novembra 2012 in poročilo o koledarskem letu, potem boste želeli tabelo z datumi z vsaj datumski obseg od 1. januarja 2010 do 31. decembra 2012. Vsako leto v tabeli z datumi morajo biti vsi dnevi za vsako leto. Če boste redno osveževali podatke z novejšimi podatki, vam bo morda treba končni datum prikazati za eno leto ali dve, tako da vam ne bo treba posodabljati datumove tabele, ko bo čas potežen.
Date table with a contiguous set of dates
Če prijavite poslovno leto, lahko ustvarite datumsko tabelo z neprekinjenim naborom datumov za vsako poslovno leto. Če se na primer vaše poslovno leto začne 1. marca in imate podatke za poslovna leta 2010 do trenutnega datuma (na primer v PL 2013), lahko ustvarite tabelo datumov, ki se začne 1. 3. 2009 in vključuje vsaj vsak dan v posameznem poslovnem letu do zadnjega datuma v poslovnem letu 2013.
Če boste poročilo ustvarili tako za koledarsko leto kot tudi za poslovno leto, vam ni treba ustvariti ločenih datumovih tabel. V eno tabelo z datumi so lahko stolpci za koledarsko leto, poslovno leto in celo trinajst štiritekovni koledar obdobij. Pomembna stvar je v tabeli z datumi neprekinjen niz datumov za vsa vključena leta.
Adding a date table to the Data Model
Datumsko tabelo lahko v podatkovni model dodate na več načinov:
-
Uvoz iz relacijske zbirke podatkov ali drugega vira podatkov.
-
Ustvarite datumsko tabelo v Excelu in nato kopirajte ali ustvarite povezavo do nove tabele v dodatku Power Pivot.
-
Uvoz iz Microsoft Azure Marketplace.
Podrobneje si o oglejte vse to.
Uvoz iz relacijske zbirke podatkov
Če uvozite nekatere ali vse podatke iz podatkovnega skladišča ali druge vrste relacijske zbirke podatkov, obstaja verjetno že datumska tabela in relacija med to tabelo in preostalimi podatki, ki jih uvažate. Datumi in oblika se bodo verjetno ujemali z datumi v vaših podatkih o dejstvu, datumi pa se bodo verjetno dobro začeli v preteklosti in segali daleč v prihodnost. Tabela z datumi, ki jo želite uvoziti, je lahko zelo velika in vsebuje obseg datumov, ki presega tisto, kar boste morali vključiti v podatkovni model. Z naprednimi funkcijami filtra čarovnika za uvoz tabel v dodatku Power Pivot lahko izberete le datume in določene stolpce, ki jih resnično potrebujete. S tem lahko znatno zmanjšate velikost delovnega zvezka in izboljšate učinkovitost delovanja.
Čarovnik za uvoz tabel
V večini primerov vam ne bo treba ustvariti nobenih dodatnih stolpcev, kot so Poslovno leto, Teden, Ime meseca itd., ker bodo že obstajali v uvoženi tabeli. Vendar pa boste v nekaterih primerih, ko ste datumsko tabelo uvozili v podatkovni model, morda morali ustvariti dodatne stolpce z datumi, odvisno od določene zahteve za poročanje. Na srečo lahko to preprosto naredite z uporabo jezika DAX. Več o ustvarjanju polj v datumski tabeli boste izvedeli pozneje. Vsako okolje je drugačno. Če niste prepričani, ali imajo vaši viri podatkov povezano tabelo z datumom ali koledarjem, se obrnite na skrbnika zbirke podatkov.
Ustvarjanje datumove tabele v Excelu
V Excelu lahko ustvarite datumsko tabelo in jo nato kopirate v novo tabelo v podatkovnem modelu. To je res zelo enostavno in vam daje veliko prilagodljivosti.
Ko v Excelu ustvarite datumsko tabelo, začnete z enim stolpcem z neprekinjenim obsegom datumov. Nato lahko z Excelovimi formulami ustvarite dodatne stolpce, kot so Leto, Četrtletje, Mesec, Poslovno leto, Obdobje itd., z Excelovimi formulami ali, ko kopirate tabelo v podatkovni model, jih lahko ustvarite kot izračunane stolpce. Ustvarjanje dodatnih stolpcev z datumi v dodatku Power Pivot je opisano v razdelku Dodajanje novih stolpcev z datumom v tabelo z datumom v nadaljevanju tega članka.
Navodila: Ustvarjanje datumove tabele v Excelu in kopiranje v podatkovni model
-
V Excelu na praznem delovnem listu v celico A1 vnesite ime glave stolpca, da določite obseg datumov. Običajno so to na primerDatum, DateTime ali DateKey.
-
V celico A2 vnesite začetni datum. Primer: 1/1/2010.
-
Kliknite zapolnitveno ročico in jo povlecite navzdol do številke vrstice, ki vključuje končni datum. Primer: 12/31/2016.
-
Izberite vse vrstice v stolpcu Datum (vključno z imenom glave v celici A1).
-
V skupini Slogi kliknite Oblikuj kot tabelo in izberite slog.
-
V pogovornem oknu Oblikuj kot tabelo kliknite V redu.
-
Kopirajte vse vrstice, vključno z glavo.
-
V dodatku Power Pivot na zavihku Osnovno kliknite Prilepi.
-
V razdelku Predogled > ime tabele vnesite ime, na primer Datum ali Koledar. Pustite polje Uporabi prvo vrstico kot potrjeno kot glavestolpcev in nato kliknite V redu.
Nova datumski tabela (imenovana »Koledar v tem primeru«) v dodatku Power Pivot je videti tako:
Opomba: Povezano tabelo lahko ustvarite tudi tako, da uporabite možnost Dodaj v podatkovni model. Vendar pa je delovni zvezek zato po nepotrebnem velik, ker ima delovni zvezek dve različici tabele z datumi; v Excelu, drugo pa v dodatku Power Pivot.
Opomba: Datum imena je ključna beseda v dodatku Power Pivot. Če tabelo, ki jo ustvarite v datumu dodatka Power Pivot, poimenujte, morate ime tabele postaviti med enojne narekovaje v vseh formulah JEZIKA DAX, na katere se sklicujete v argumentu. Vse vzorčne slike in formule v tem članku se sklicujejo na tabelo z datumi, ustvarjenimi v dodatku Power Pivot z imenom »Koledar«.
V podatkovnem modelu imate zdaj datumsko tabelo. Z dodatkom DAX lahko dodate nove stolpce z datumi, kot so Leto, Mesec itd.
Adding new date columns to the date table
Datumsko tabelo z enim stolpcem z datumom, ki ima eno vrstico za vsak dan za vsako leto, je pomembno za določanje vseh datumov v datumskega obsega. Prav tako je nujno, da ustvarite relacijo med tabelo de factov in tabelo z datumi. Vendar pa en stolpec z eno vrstico za vsak dan ni uporaben pri analizi po datumih v vrtilni tabeli ali poročilu Power View. V datumsko tabelo želite vključiti stolpce, s katerimi lahko združite podatke za obseg ali skupino datumov. Morda želite na primer sešteti zneske prodaje po mesecu ali četrtletju ali pa ustvarite mero, s katero izračunate letno rast. V vsakem od teh primerov vaša datumska tabela potrebuje stolpce za leto, mesec ali četrtletje, s katerih lahko združite podatke za to obdobje.
Če ste uvozili datumsko tabelo iz relacijskih virov podatkov, morda že vključujejo različne vrste želenih stolpcev z datumi. V nekaterih primerih boste morda želeli spremeniti nekatere od teh stolpcev ali ustvariti dodatne stolpce z datumi. To še posebej velja, če ustvarite svojo datumsko tabelo v Excelu in jo kopirate v podatkovni model. Ustvarjanje novih stolpcev z datumi v dodatku Power Pivot je na srečo preprosto s funkcijami za datum in čas v orodju DAX.
Namig: Če še niste delali z orodjem DAX, je odlično mesto za začetek učenja z vodnikom QuickStart: Naučite se osnov jezika DAX v 30 minutah Office.com.
Funkcije za datum in čas jezika DAX
Če ste že kdaj delali s funkcijami za datum in čas v Excelovih formulah, boste verjetno poznali funkcije za datum in čas. Čeprav so te funkcije podobne funkcijam v Excelu, obstajajo nekatere pomembne razlike:
-
Funkcije za datum in čas JEZIKA DAX uporabljajo podatkovni tip »datetime«.
-
Vrednosti iz stolpca lahko vnesete kot argument.
-
Uporabite jih lahko za vračanje in/ali spreminjanje datumskih vrednosti.
Te funkcije se pogosto uporabljajo pri ustvarjanju stolpcev z datumi po meri v datumski tabeli, zato jih je treba razumeti. S temi funkcijami bomo ustvarili stolpce za »Leto«, »Četrtletje«, »FiscalMonth« in tako naprej.
Opomba: Funkcije datuma in ure v funkciji DAX niso enake kot funkcije za obveščanje o času. Več informacij o podatkov o času v dodatku Power Pivot v Excelu.
DAX vključuje te funkcije za datum in čas:
V formulah lahko uporabite tudi številne druge funkcije DAX. Številne formule, opisane tukaj, na primer uporabljajo matematične in trigonometričnefunkcije, kot so MOD in TRUNC, logične funkcije, kot so IF in funkcije besedila, kot je FORMAT. Če želite več informacij o drugih funkcijah jezika DAX, glejte razdelek »Dodatni viri« v nadaljevanju tega članka.
Primeri formul za koledarsko leto
Ti primeri opisujejo formule, ki se uporabljajo za ustvarjanje dodatnih stolpcev v datumski tabeli z imenom »Koledar«. En stolpec z imenom »Datum« že obstaja in vsebuje neprekinjen obseg datumov od 1. 1. 2010 do 31. 12. 2016.
Leto
=YEAR([datum])
V tej formuli funkcija YEAR vrne leto iz vrednosti v stolpcu Datum. Ker je vrednost v stolpcu »Datum« vrste podatkov »datetime«, funkcija YEAR ve, kako vrniti leto.
Mesec
=MONTH([datum])
V tej formuli lahko podobno kot s funkcijo YEAR preprosto uporabite funkcijo MONTH , da vrnemo mesečno vrednost iz stolpca Datum.
Četrtletje
=INT(([Mesec]+2)/3)
V tej formuli funkcijo INT uporabljamo za vrnitev datumske vrednosti kot celo število. Argument, ki ga navedemo za funkcijo INT, je vrednost iz stolpca Mesec, prištejte 2, nato pa to delite s 3, da pridobite naše četrtletje, 1 do 4.
Ime meseca
=FORMAT([datum],"mmmm")
Če želite v tej formuli dobiti ime meseca, s funkcijo FORMAT pretvorite številsko vrednost iz stolpca »Datum« v besedilo. Stolpec Datum določimo kot prvi argument in nato za obliko; želimo, da ime meseca prikazuje vse znake, zato uporabljamo »mmmm«. Naš rezultat je videti tako:
Če želimo dobiti ime meseca, okrajšano na tri črke, bi v argumentu oblike uporabili »mmm«.
Dan v tednu
=FORMAT([datum],"ddd")
V tej formuli smo uporabili funkcijo FORMAT, da pridobimo ime dneva. Ker želimo le okrajšano ime dneva, v argumentu oblike zapisa navedemo »ddd«.
Vzorčna vrtilna tabela
Ko imate polja za datume, kot so Leto, Četrtletje, Mesec itd., jih lahko uporabite v vrtilni tabeli ali poročilu. Na spodnji sliki je na primer prikazano polje »ZnesekProprojekta« iz tabele »Podatki o prodaji« v vrednostih in »Leto« in »Četrtletje« iz tabele dimenzij koledarja v razdelku VRSTICE. Znesek »SalesAmount« je združen za leto in četrtletje.
Primeri formul za poslovno leto
Poslovno leto
=IF([Mesec]<= 6;[Leto],[Leto]+1)
V tem primeru se poslovno leto začne 1. julija.
Ni funkcije, ki bi lahko iz datumske vrednosti izvlečela poslovno leto, ker se začetni in končni datum poslovnega leta pogosto razlikujeta od začetnih in končnih datumov koledarskega leta. Če želite pridobiti poslovno leto, najprej s funkcijo IF preverimo, ali je vrednost za Mesec manjša ali enaka 6. Če je v drugem argumentu vrednost za Mesec manjša ali enaka 6, vrni vrednost iz stolpca Leto. Če ni, vrni vrednost iz polja Year in prišteje 1.
Vrednost končnega meseca za poslovno leto lahko določite tudi tako, da ustvarite mero, ki določa le mesec. Na primer FYE:=6. Nato se lahko sklicujete na ime mere na mestu številke meseca. Primer: =IF([Mesec]<=[FYE],[Leto],[Leto]+1). To zagotavlja večjo prilagodljivost pri sklicevanju na končni mesec poslovnega leta v več različnih formulah.
Fiskalni mesec
=IF([Mesec]<= 6, 6+[Mesec], [Mesec]- 6)
V tej formuli določimo, ali je vrednost za [Mesec] manjša ali enaka 6, nato vzemite 6 in prištejte vrednost iz meseca, sicer odštejte 6 od vrednosti od [Mesec].
Poslovno četrtletje
=INT(([FiscalMonth]+2)/3)
Formula, ki jo uporabljamo za FiscalQuarter, je precej enaka kot za četrtletje v koledarskem letu. Edina razlika je, da določimo [FiscalMonth] namesto [Mesec].
Prazniki ali posebni datumi
Morda boste želeli vključiti stolpec z datumom, ki označuje, da so določeni datumi prazniki ali drugi posebni datumi. Morda boste želeli sešteti skupne vsote prodaje za nov dan let tako, da dodate polje »Praznik« v vrtilno tabelo kot razčlenjevalnik ali filter. V drugih primerih boste morda želeli izključiti te datume iz drugih stolpcev z datumi ali mere.
Preprosto je tudi vnesti praznike ali posebne dni. V Excelu lahko ustvarite tabelo z datumi, ki jih želite vključiti. Nato ga lahko kopirate ali uporabite za dodajanje podatkovnega modela v podatkovni model kot povezano tabelo. V večini primerov ni treba ustvariti relacije med tabelo in tabelo Koledar. Vse formule, na katere se sklicuje, lahko s funkcijo LOOKUPVALUE vrnejo vrednosti.
Spodaj je primer tabele, ustvarjene v Excelu, ki vključuje praznike, ki jih želite dodati v tabelo z datumi:
Datum |
Praznik |
---|---|
1/1/2010 |
Nova leta |
11/25/2010 |
Zahvalni |
12/25/2010 |
Božič |
1. 1. 2011 |
Nova leta |
11/24/2011 |
Zahvalni |
12/25/2011 |
Božič |
01.01.2012 |
Nova leta |
22. 11. 2012 |
Zahvalni |
12/25/2012 |
Božič |
1/1/2013 |
Nova leta |
11/28/2013 |
Zahvalni |
12/25/2013 |
Božič |
11/27/2014 |
Zahvalni |
12/25/2014 |
Božič |
1. 1. 2014 |
Nova leta |
11/27/2014 |
Zahvalni |
12/25/2014 |
Božič |
1/1/2015 |
Nova leta |
11/26/2014 |
Zahvalni |
12/25/2015 |
Božič |
01. 01. 2016 |
Nova leta |
11/24/2016 |
Zahvalni |
12/25/2016 |
Božič |
V tabeli z datumi smo ustvarili stolpec z imenom Praznik in uporabili formulo, podobno tej:
=LOOKUPVALUE(prazniki[prazniki],prazniki[datum],koledar[datum])
Te formule si bomo še bolj natančno omislili.
Funkcijo LOOKUPVALUE uporabljamo za pridobivanje vrednosti iz stolpca Prazniki v tabeli Prazniki. V prvem argumentu smo določili stolpec, kjer bo naša vrednost rezultata. V tabeli Prazniki smo določili stolpec Prazniki , ker je to vrednost, ki jo želimo vrniti.
=LOOKUPVALUE(prazniki[prazniki];prazniki[datum],koledar[datum])
Nato določimo drugi argument, stolpec za iskanje z datumi, ki jih želite poiskati. V tabeli Prazniki smo določili stolpec Datum , in to tako:
=LOOKUPVALUE(prazniki[prazniki],prazniki[datum],koledar[datum])
Na koncu v tabeli Koledar določimo stolpec z datumi, ki jih želimo poiskati, v tabeli Prazniki . To je seveda stolpec Datum v tabeli Koledar.
=LOOKUPVALUE(prazniki[prazniki],prazniki[datum],koledar[datum])
Stolpec Prazniki vrne ime praznika za vsako vrstico z datumsko vrednostjo, ki se ujema z datumom v tabeli Prazniki.
Koledar po meri – trinajst štiritevnih obdobij
Nekatere organizacije, na primer maloprodajne ali prehranske storitve, pogosto poročajo o različnih obdobjih, na primer trinajst štirih tedenskih obdobjih. S trinajstimi štiritevni koledarji je vsako obdobje 28 dni; Zato vsako obdobje vsebuje štiri ponedeljke, štiri torek, štiri srede in tako naprej. Vsako obdobje vsebuje enako število dni in običajno prazniki vsako leto padejo v enako obdobje. Izberete lahko, da želite začeti obdobje na kateri koli dan v tednu. Tako kot pri datumih v koledarju ali poslovnem letu lahko uporabite dax za ustvarjanje dodatnih stolpcev z datumi po meri.
V spodnjih primerih se prvo polno obdobje začne na prvo nedeljo v proračunskem letu. V tem primeru se poslovno leto začne 7/1.
Teden
Ta vrednost nam da številko tedna, ki se začne s prvim polnim tednom v proračunskem letu. V tem primeru se prvi polni teden začne v nedeljo, tako da se prvi polni teden v prvem poslovnem letu v tabeli Koledar dejansko začne 4. 7. 2010 in se nadaljuje skozi zadnji polni teden v tabeli Koledar. Čeprav ta vrednost sama po sebi ni tako uporabna v analizi, je treba izračunati za uporabo v drugih 28-dnevnih formulah.
=INT([datum]-40356)/7)
Te formule si bomo še bolj natančno omislili.
Najprej ustvarimo formulo, ki vrne vrednosti iz stolpca »Datum« kot celo število, na primer:
=INT([datum])
Nato želimo poiskati prvo nedeljo v prvem poslovnem letu. Vemo, da je 4. 7. 2010.
Odštejte 40356 (kar je celo število za 27. 6. 2010, zadnjo nedeljo od prejšnjega poslovnega leta) od te vrednosti, da dobite število dni od začetka dni v tabeli Koledarja, in to naredite tako:
=INT([datum]-40356)
Nato rezultat delite s 7 (dnevi v tednu), kot je prikazano tukaj:
=INT(([datum]-40356)/7)
Rezultat je videti tako:
Pika
Obdobje v tem koledarju po meri vsebuje 28 dni in vedno se bo začelo na nedeljo. V tem stolpcu je vrnjeno število obdobja, ki se začne s prvo nedeljo v prvem poslovnem letu.
=INT(([Teden]+3)/4)
Te formule si bomo še bolj natančno omislili.
Najprej ustvarimo formulo, ki vrne vrednost iz stolpca Teden kot celo število, kot je to:
=INT([Teden])
Nato tej vrednosti dodajte 3, tako:
=INT([Teden]+3)
Nato rezultat delite s 4, kot je prikazano tukaj:
=INT(([Teden]+3)/4)
Rezultat je videti tako:
Poslovno leto obdobja
Ta vrednost vrne poslovno leto za obdobje.
=INT(([Obdobje]+12)/13)+2008
Te formule si bomo še bolj natančno omislili.
Najprej ustvarimo formulo, ki vrne vrednost iz obdobja in prišteje 12:
= ([Obdobje]+12)
Rezultat delimo s 13, ker je trinajst 28-dnevnih obdobij v proračunskem letu:
=(([Obdobje]+12)/13)
Leto 2010 smo dodali, ker je to prvo leto v tabeli:
=(([Obdobje]+12)/13)+2010
Funkcijo INT na koncu uporabljamo za odstranitev katerega koli dela rezultata in za vrnitev celega števila, če ga delimo s 13, kot je prikazano tukaj:
=INT(([Obdobje]+12)/13)+2010
Rezultat je videti tako:
Obdobje v poslovnem letu
Ta vrednost vrne število obdobij od 1 do 13, pri tem pa začne s prvim polnim obdobjem (z začetkom v nedeljo) v vsakem poslovnem letu.
=IF(MOD([Obdobje],13), MOD([Obdobje],13),13)
Ta formula je nekoliko bolj zapletena, zato jo bomo najprej opisali v jeziku, ki ga bolje razumemo. Ta formula določa, delite vrednost iz [Obdobje] s 13, da dobite številko obdobja (1–13) v letu. Če je to število 0, vrni 13.
Najprej ustvarimo formulo, ki vrne preostanek vrednosti iz obdobja za 13. Funkcijo MOD (matematične in trigonometrične funkcije) lahko uporabite tako:
=MOD([Obdobje],13)
Ta rezultat je v večini primerov rezultat, ki ga želimo, razen če je vrednost za obdobje 0, ker ti datumi niso znotraj prvega poslovnega leta, kot v prvih petih dneh naše vzorčne tabele z datumom v koledarju. Za to lahko poskrbimo s funkcijo IF. Če je naš rezultat 0, vrnemo 13, in sicer tako:
=IF(MOD([Obdobje],13),MOD([obdobje],13),13)
Rezultat je videti tako:
Vzorčna vrtilna tabela
Na spodnji sliki je prikazana vrtilna tabela s poljem »ZnesekProjekta« iz tabele »Podatki o prodaji« v razdelku »VREDNOSTI« ter polji »ObdobjeFiscalYear« in »ObdobjeInFiscalYear« iz tabele »Datum koledarja« v tabeli z dimenzijami »ROWS«. Znesek prodaje Sešteje za kontekst po poslovnem letu in 28-dnevnem obdobju v proračunskem letu.
Relacije
Ko v podatkovnem modelu ustvarite datumsko tabelo, začnete brskati po podatkih v vrtilnih tabelah in poročilih ter združete podatke na podlagi stolpcev v tabeli datumskih dimenzij, morate ustvariti relacijo med podatkovno tabelo z dejstvom in tabelo z datumi.
Ker morate ustvariti relacijo na podlagi datumov, se prepričajte, da ste ustvarili relacijo med stolpci, katerih vrednosti so vrste podatkov »datum in čas« (datum).
Za vsako datumsko vrednost v tabeli dejavnih podatkov mora stolpec za iskanje v relaciji v tabeli z datumi vsebovati ujemajoče se vrednosti. Vrstica (zapis transakcije) v tabeli de factov »Prodaja« z vrednostjo 8/15/2012 12:00 AM v stolpcu DateKey mora imeti ustrezno vrednost v povezanem stolpcu Datum v tabeli datuma (imenovan Koledar). To je eden najpomembnejših razlogov, zakaj želite, da je v stolpcu z datumi v tabeli z datumi neprekinjen niz datumov, ki vključuje morebitne datume v tabeli de fact.
Opomba: Čeprav mora biti stolpec z datumom v vsaki tabeli istega podatkovnega tipa (Datum), oblika posameznega stolpca ni važno.
Opomba: Če dodatek Power Pivot ne omogoča ustvarjanja relacij med dvema tabelama, datumska polja morda ne bodo shranila datuma in ure na enako raven natančnosti. Vrednosti so lahko videti enako, vendar so shranjene drugače, odvisno od oblikovanja stolpca. Poiščite več informacij o delu s časom.
Opomba: Izogibajte se uporabi celoštevilskih nadomestkom v relacijah. Ko uvozite podatke iz relacijskih virov podatkov, so pogosto stolpci z datumom in uro predstavljeni z nadomestkom ključa, ki je stolpec s celim številom, ki predstavlja enoličen datum. V dodatku Power Pivot ne ustvarjajte relacij z datumskimi/časovnimi tipkami na celo število, namesto tega pa uporabite stolpce, ki vsebujejo enolične vrednosti z datumom podatkovnega tipa. Čeprav je uporaba nadomestkov najboljša praksa v tradicionalnih podatkovnih skladiščih, ključi celih števil niso potrebni v orodju Power Pivot in lahko otežijo združevanje vrednosti v vrtilnih tabelah po različnih datumskih obdobjih.
Če se pri ustvarjanju relacije prikaže sporočilo o napaki zaradi neujemanja vrste, je to verjetno zato, ker stolpec v tabeli z dejstvom ni podatkovni tip »Datum«. Do tega lahko pride, če Power Pivot ne more samodejno pretvoriti nedimni datum (po navadi besedilni podatkovni tip) v podatkovni tip datuma. Stolpec lahko še vedno uporabljate v tabeli de fact, vendar boste morali podatke pretvoriti s formulo DAX v novem izračunanem stolpcu. Glejte Pretvorba datumov besedilnih podatkovnih tipov v podatkovni tip datuma v nadaljevanju dodatka.
Več relacij
V nekaterih primerih bo morda treba ustvariti več relacij ali ustvariti več datumovih tabel. Če je na primer v tabeli z vrednostjo »DatumProdaje« več polj z datumi, na primer »DatumPošiljanja«, »DatumPošiljanja« in »DatumPojavnegaDatuma«, imajo lahko vsi relacije do polja »Datum« v tabeli »Datum koledarja«, vendar je lahko le ena od teh aktivni odnos. Ker DateKey predstavlja datum transakcije in zato najpomembnejši datum, bi bilo to najbolje služiti kot aktivni odnos . Drugi imajo neaktivne odnose.
Ta vrtilna tabela izračuna skupno prodajo po poslovnem letu in poslovnem četrtletju. Mera z imenom »Skupna prodaja« s formulo Total Sales:=SUM([KoličinaPro prodaja])) je v vrednostih, polja »FiscalYear« in »FiscalQuarter« iz tabele »Datum koledarja« pa so postavljena v vrstice.
Ta vrtilna tabela za neposredno posredovanje deluje pravilno, ker želimo skupno prodajo sešteti po datumutransakcije v funkciji DateKey. Mera Total Sales uporablja datume v ključu DateKey in sešteje po poslovnem letu in poslovnem četrtletju, ker obstaja odnos med »Datumski ključ« v tabeli »Prodaja« in stolpcem »Datum« v tabeli »Datum koledarja«.
Neaktivni odnosi
Kaj pa, če želimo sešteti skupno prodajo ne po datumu transakcije, ampak po datumu odpreme? Potrebujemo relacijo med stolpcem »DatumPošiljanja« v tabeli »Prodaja« in stolpcem »Datum« v tabeli »Koledar«. Če tega odnosa ne ustvarimo, naša združevanja vedno temeljijo na datumu transakcije. Vendar pa lahko imamo več relacij, čeprav je lahko aktivna le ena, in ker je datum transakcije najpomembnejši, dobi aktivni odnos s tabelo Koledar.
V tem primeru ima »DatumPošiljanja« nedejaven odnos, zato mora vsaka formula mere, ustvarjena za združevanje podatkov na podlagi datumov odpreme, s funkcijo USERELATIONSHIP določiti neaktivni odnos.
Ker je na primer med stolpcem »DatumPošiljanja« v tabeli »Prodaja« in stolpcem »Datum« v tabeli »Koledar« nedejaven odnos, lahko ustvarimo mero, ki sešteje skupno prodajo po datumu odpreme. Tako formulo uporabljamo za določanje relacije, ki jo želite uporabiti:
Skupna prodaja po datumu odpreme:=CALCULATE(SUM(Prodaja[KoličinaProdaje]), USERELATIONSHIP(Prodaja[DatumPošiljanja], Koledar[Datum]))
Ta formula preprosto določa: Izračunajte vsoto za »ZnesekProdaje«, vendar filtrirajte tako, da uporabite relacijo med stolpcem »DatumPošiljanja« v tabeli »Prodaja« in stolpcem »Datum« v tabeli »Koledar«.
Če zdaj ustvarimo vrtilno tabelo in mero »Skupna prodaja po datumu odpreme« v vrednostih, poslovno leto in poslovno četrtletje pa v vrstice, je prikazana enaka skupna vsota, vsi drugi zneski za poslovno leto in fiskalno četrtletje pa so drugačni, ker temeljijo na datumu dostave in ne datumu transakcije.
Če uporabljate neaktivne relacije, lahko uporabite le eno datumsko tabelo, vendar pa potrebujete, da se vse mere (na primer Total Sales by Ship Date) sklicujejo na neaktivno relacijo v svoji formuli. Obstaja druga druga možnost, to je uporaba več datumovih tabel.
Več datumovih tabel
Z več datumski stolpci v tabeli dejavnih podatkov lahko delate tudi tako, da ustvarite več datumovih tabel in med njimi ustvarite ločene aktivne relacije. Opišite si primer tabele »Prodaja«. Imamo tri stolpce z datumi, za katere morda želimo združiti podatke:
-
Datumski ključ z datumom prodaje za vsako transakcijo.
-
DatumPošiljanja – z datumom in uro, ko so bili prodani artikli odpremljeni stranki.
-
ReturnDate – z datumom in uro, ko je bil vrnjen en element ali več.
Ne pozabite, da je polje DateKey z datumom transakcije najpomembnejše. Večino svojih združevanj bomo odpravili na podlagi teh datumov, zato si bomo gotovo želeli relacijo med njim in stolpcem »Datum« v tabeli »Koledar«. Če ne želimo ustvariti neaktivnih odnosov med »DatumPošiljanja« in »DatumPošiljanja« in poljem »Datum« v tabeli »Koledar«, zato je potrebna posebna formula mere, lahko ustvarimo dodatne tabele datumov za datum dostave in datum vračila. Med njimi lahko nato ustvarimo aktivne odnose.
V tem primeru smo ustvarili drugo datumsko tabelo z imenom ShipCalendar. To seveda pomeni tudi ustvarjanje dodatnih stolpcev z datumi in ker so ti datumski stolpci v drugi datumski tabeli, jih želimo poimenujte tako, da jih ločite od istih stolpcev v tabeli Koledar. Ustvarili smo na primer stolpce z imenom »ShipYear«, »ShipMonth«, »ShipQuarter« in tako naprej.
Če ustvarimo vrtilno tabelo in mero Total Sales vnesemo v VREDNOSTI, leto »ShipFiscalYear« in »ShipFiscalQuarter« pa v vrstice, bomo videli enake rezultate, kot smo jih videli, ko smo ustvarili neaktivni odnos, in posebno izračunano polje »Skupno prodajo po datumu dostave«.
Vsak od teh pristopov zahteva skrbno upoštevanje. Če uporabljate več relacij z eno datumsko tabelo, boste morda morali ustvariti posebne mere, ki s funkcijo USERELATIONSHIP prevajajo neaktivne relacije. Po drugi strani pa je ustvarjanje več datumovih tabel lahko nejasno na seznamu polj in ker imate v podatkovnem modelu več tabel, boste za to morali imeti več pomnilnika. Preizkusite tisto, kar vam najbolj ustreza.
Lastnost »Date Table«
Lastnost Datumska tabela nastavi metapodatke, ki so potrebni za Time-Intelligence, kot so TOTALYTD, PREVIOUSMONTH in DATESBETWEEN, za pravilno delovanje. Ko zaženete izračun z eno od teh funkcij, mehanizem formul v dodatku Power Pivot ve, kam je treba pridobiti datume, ki jih potrebuje.
Opozorilo: Če ta lastnost ni nastavljena, mere, ki uporabljajo funkcije DAXTime-Intelligence morda ne vrnejo pravilnih rezultatov.
Ko nastavite lastnost Tabela datuma, določite datumsko tabelo in stolpec z datumom v podatkovnem tipu »Datum( datum/čas)«.
Navodila: Nastavitev lastnosti »Tabela datuma«
-
V oknu dodatka PowerPivot izberite tabelo Koledar.
-
Na zavihku Načrt kliknite Označi kot datumsko tabelo.
-
V pogovornem oknu Označi kot datumsko tabelo izberite stolpec z enoličnimi vrednostmi in podatkovni tip Datum.
Delo s časom
Vse datumske vrednosti s podatkovnega tipa »Datum« v Excelu ali strežniku SQL Server so dejansko število. V to številko so vključene števke, ki se sklicujejo na uro. V mnogih primerih je čas za vsako vrstico polnoč. Če so na primer v polju DateTimeKey v tabeli de factov »Prodaja« vrednosti, na primer 19/19/2010 12:00:00 AM, to pomeni, da so vrednosti nastavljene na raven natančnosti dneva. Če so v vrednosti polja DateTimeKey vključeni časi, na primer 10/19/2010 8:44:00 AM, to pomeni, da so vrednosti na minuto raven natančnosti. Vrednosti so lahko tudi natančnost ravni ure ali celo raven natančnosti sekund. Raven natančnosti časovne vrednosti bo znatno vplivala na to, kako ustvarite datumsko tabelo ter odnose med to tabelo in tabelo de fact.
Ugotoviti morate, ali boste podatke združeli na raven natančnosti dneva ali na časovno raven natančnosti. Z drugimi besedami, morda boste želeli uporabiti stolpce v datumski tabeli, kot so »Jutro«, »Popoldne« ali »Ura« kot časovna polja z datumi v območjih »Vrstica«, »Stolpec« ali »Filter« v vrtilni tabeli.
Opomba: Dnevi so najmanjša časovna enota, s katero lahko funkcije časovnega obveščanja DAX delujejo. Če ne želite delati s časovnimi vrednostmi, zmanjšajte natančnost podatkov, da uporabite dneve kot najmanjšo enoto.
Če nameravate podatke združiti na raven ure, boste v datumski tabeli potrebovali stolpec z datumom in vključeno uro. Pravzaprav bo potreboval datumski stolpec z eno vrstico za vsako uro ali morda celo vsako minuto za vsak dan, za vsako leto v datumskega obsega. Če želite ustvariti relacijo med stolpcem DateTimeKey v tabeli de fact in datumom v tabeli z datumom, morate imeti ujemajoče se vrednosti. Kot si lahko predstavljate, če vključite veliko let, je to lahko zelo velika datumski mizi.
V večini primerov pa želite podatke združiti le do dneva. Z drugimi besedami, stolpce, kot so »Leto«, »Mesec«, »Teden« ali »Dan v tednu«, boste uporabili kot polja v območjih »Vrstica«, »Stolpec« ali »Filter« v vrtilni tabeli. V tem primeru mora stolpec z datumom v tabeli z datumom vsebovati le eno vrstico za vsak dan v letu, kot smo opisali prej.
Če vaš stolpec z datumi vključuje časovno raven natančnosti, vendar boste podatke združeli le na ravni dneva, boste morda morali spremeniti tabelo de factov tako, da boste ustvarili nov stolpec, ki prireže vrednosti v stolpcu z datumom na vrednost dneva. Z drugimi besedami, pretvorite vrednost, kot je 10/19/2010 8:44:00AM , v 19. 10. 2010 12:00:00 AM. Nato lahko ustvarite relacijo med tem novim stolpcem in stolpcem z datumom v tabeli z datumom, ker se vrednosti ujemajo.
O poglejmo primer. Na tej sliki je prikazan stolpec DateTimeKey v tabeli de factov »Prodaja«. Vsa združevanja za podatke v tej tabeli morajo biti le na ravni dneva, tako da uporabite stolpce v tabeli z datumom v koledarju, kot so »Leto«, »Mesec«, »Četrtletje« itd. Čas, ki je vključen v vrednost, ni pomemben, ampak le dejanski datum.
Ker vam teh podatkov ni treba analizirati na ravni časa, ne potrebujemo stolpca Datum v tabeli Datum koledarja, da bi vsako uro in vsako minuto vsakega dneva v vsako leto vključevali eno vrstico. Stolpec »Datum« v tabeli z datumom je videti tako:
Če želite ustvariti odnos med stolpcem DateTimeKey v tabeli »Prodaja« in stolpcem »Datum« v tabeli »Koledar«, lahko ustvarimo nov izračunan stolpec v tabeli de factov »Prodaja« in uporabite funkcijo TRUNC , da prirežemo datumsko in časovno vrednost v stolpcu DateTimeKey v datumsko vrednost, ki se ujema z vrednostmi v stolpcu Datum v tabeli Koledar. Naša formula je videti tako:
=TRUNC([DateTimeKey],0)
S tem pridobite nov stolpec (imenujemo ga DateKey) z datumom iz stolpca DateTimeKey in uro 12:00:00 AM za vsako vrstico:
Zdaj lahko ustvarimo relacijo med tem novim stolpcem (DateKey) in stolpcem Datum v tabeli Koledar.
Podobno lahko v tabeli »Prodaja« ustvarimo izračunan stolpec, ki zmanjša časovno natančnost stolpca DateTimeKey na raven natančnosti ure. V tem primeru funkcija TRUNC ne bo delovala, še vedno pa lahko uporabljamo druge funkcije za datum in čas JEZIKA DAX, da izvlečemo in znova združimo novo vrednost na eno uro ravni natančnosti. Uporabite lahko tako formulo:
= DATE (YEAR([DateTimeKey]), MONTH([DateTimeKey]), DAY([DateTimeKey]) ) + TIME (HOUR([DateTimeKey]), 0, 0)
Naš novi stolpec je videti tako:
Če so v stolpcu »Datum« v datumski tabeli vrednosti do ravni natančnosti ure, lahko ustvarimo relacijo med njimi.
Ustvarjanje bolj primernih datumov
Veliko stolpcev z datumi, ki jih ustvarite v datumski tabeli, je potrebnih za druga polja, vendar v resnici niso vsi, ki so uporabni v analizi. Polje DateKey v tabeli »Prodaja«, ki smo ga omenili in prikazali v tem članku, je na primer pomembno, saj je za vsako transakcijo zabeleženo, da se transakcija pojavi na določen datum in uro. Toda iz analize in pogleda poročanja ni vse to uporabno, ker ga ne moremo uporabiti kot polje vrstice, stolpca ali polja filtra v vrtilni tabeli ali poročilu.
V našem primeru je tudi stolpec »Datum« v tabeli »Koledar« zelo uporaben, pravzaprav ključnega pomena, vendar ga ne morete uporabiti kot dimenzijo v vrtilni tabeli.
Če želite, da bodo tabele in stolpci v njih čim bolj uporabni, in če želite poenostaviti krmarjenje po seznamih polj v vrtilni tabeli ali poročilu »Power View«, je pomembno, da pred odjemalskimi orodji skrijete nepotrebne stolpce. Morda boste želeli skriti tudi določene tabele. V tabeli »Prazniki«, ki je prikazana prej, so praznični datumi, ki so pomembni za določene stolpce v tabeli »Koledar«, ne morete pa uporabiti stolpcev »Datum« in »Prazniki« v tabeli »Prazniki« kot polja v vrtilni tabeli. Če želite poenostaviti krmarjenje po seznamih polj, lahko skrijete celotno tabelo »Prazniki«.
Pomemben vidik dela z datumi so pravila poimenovanja. Tabele in stolpce v dodatku Power Pivot lahko poimenujte, kar želite. Vendar ne pozabite, še posebej, če boste delovni zvezek delili z drugimi uporabniki, boste z dobro konvencijo poimenovanja lažje prepoznali tabele in datume, ne le na seznamih polj, ampak tudi v dodatku Power Pivot in formulah jezika DAX.
Ko imate v podatkovnem modelu datumsko tabelo, lahko začnete ustvarjati mere, s katerimi boste lahko kar najbolje izkoristili svoje podatke. Nekatere so lahko tako preproste, kot je seštevanje vsot prodaje za tekoče leto, druge pa so lahko bolj zapletene, kjer morate filtrirati določen obseg enoličnih datumov. Več informacij najdete v članku Mere v dodatku Power Pivot infunkcijah za obveščanje o času.
Dodatek
Pretvarjanje datumov besedilnih podatkovnih tipov v podatkovni tip »datum«
V nekaterih primerih lahko tabela de factov s podatki o transakcijah vsebuje datume besedilnega podatkovnega tipa. To pomeni, da datum, ki je prikazan kot 2012-12-04T11:47:09, pravzaprav ni datum ali pa vsaj vrsta datuma, ki ga Power Pivot ne more razumeti. To je res samo besedilo, ki bere kot datum. Če želite ustvariti relacijo med stolpcem z datumom v tabeli z dejstvom in stolpcem z datumom v tabeli z datumom, morata biti oba stolpca vrste podatkov » Datum«.
Ko želite podatkovni tip za stolpec z datumi, ki so besedilni podatkovni tip, spremeniti v podatkovni tip datuma, lahko Power Pivot po navadi interpretira datume in jih samodejno pretvori v pravi podatkovni tip datuma. Če Power Pivot ne more pretvarjati podatkovnega tipa, se prikaže napaka zaradi neujemanja vrste.
Vendar pa lahko še vedno pretvorite datume v pravi podatkovni tip datuma. Ustvarite lahko nov izračunan stolpec in s formulo DAX razčlenite leto, mesec, dan, čas itd. iz besedilnih nizov in jo nato znova združite na način, ki ga lahko Power Pivot prebere kot pravi datum.
V tem primeru smo v Power Pivot uvozili tabelo de factov z imenom »Prodaja«. Vsebuje stolpec z imenom DateTime. Vrednosti so prikazane tako:
Če si v skupini »Oblikovanje« ogledate zavihek »Osnovno« v skupini »Oblikovanje«, je prikazano, da gre za podatkovni tip »Besedilo«.
Relacije med stolpcema DateTime in Date v datumski tabeli ni mogoče ustvariti, ker se podatkovni tipi ne ujemajo. Če poskušamo podatkovni tip spremeniti v »Datum«, pride do napake zaradi neujemanja vrste:
V tem primeru Power Pivot ni mogel pretvoriti podatkovnega tipa iz besedila v datum. Ta stolpec lahko še vedno uporabljamo, vendar moramo ustvariti nov stolpec, ki razčleni besedilo in ga znova ustvari v vrednost, ki jo Power Pivot lahko ustvari kot podatkovni tip »Datum«.
Ne pozabite, v razdelku Delo s časom prej v tem članku; če ni nujno, da je vaša analiza natančno nastavljena na časovno raven dneva, pretvorite datume v tabeli de factov na raven natančnosti dneva. V mislih želimo, da so vrednosti v novem stolpcu na dnevni ravni natančnosti (brez časa). Vrednosti v stolpcu DateTime lahko pretvorimo v podatkovni tip datuma in s to formulo odstranimo časovno raven natančnosti:
=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2))
Prikaže se nov stolpec (v tem primeru imenovan Datum). Power Pivot celo zazna vrednosti kot datume in samodejno nastavi podatkovni tip na Datum.
Če želimo ohraniti časovno raven natančnosti, formulo preprosto razširimo tako, da vključuje ure, minute in sekunde.
=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2)) +
TIME(MID([DateTime],12,2), MID([DateTime],15,2), MID([DateTime],18,2))
Zdaj, ko imamo stolpec »Datum« v podatkovnem tipu »Datum«, lahko v datumu ustvarimo relacijo med njim in stolpcem z datumom.
Dodatni viri
Izračuni v dodatku Power Pivot
Vodnik za hitri začetek: naučite se osnov jezika DAX v 30 minutah