Relacije med tabelami v podatkovnem modelu

Dodajte več moči analizi podatkov z ustvarjanjem relacij v različnih tabelah. Relacija je povezava med dvema tabelama, ki vsebujeta podatke: en stolpec v vsaki tabeli je osnova za relacijo. Če želite bolje razumeti, zakaj so odnosi uporabni, si predstavljajte, da v svojem podjetju spremljate podatke o naročilih strank. Lahko sledite vsem podatkom v eni tabeli, ki ima takšno strukturo:

IDStranke Ime EMail OdstotekPopusta IDNaročila Datum naročila Izdelek Količina
1 Ashton chris.ashton@contoso.com .05 256 2010-01-07 Compact Digital 11
1 Ashton chris.ashton@contoso.com .05 255 2010-01-03 SLR Camera 15
2 Jaworski michal.jaworski@contoso.com .10 254 2010-01-03 Budget Movie-Maker 27

Ta pristop lahko deluje, vendar vključuje shranjevanje veliko odvečnih podatkov, kot je e-poštni naslov stranke za vsako naročilo. Prostor za shranjevanje je poceni, če pa se e-poštni naslov spremeni, morate posodobiti vsako vrstico za to stranko. Ena od rešitev tega problema je, da podatke razdelite v več tabel in določite relacije med temi tabelami. To je pristop, ki se uporablja v relacijskih bazah podatkov, kot je SQL Server. Zbirka podatkov, ki jo uvozite, lahko na primer predstavlja podatke naročila s tremi povezanimi tabelami:

Stranke

[ID stranke] Ime E-pošta
1 Ashton chris.ashton@contoso.com
2 Jaworski michal.jaworski@contoso.com

PopustiZaStranke

[ID stranke] OdstotekPopusta
1 .05
2 .10

Naročila

[ID stranke] IDNaročila Datum naročila Izdelek Količina
1 256 2010-01-07 Compact Digital 11
1 255 2010-01-03 SLR Camera 15
2 254 2010-01-03 Budget Movie-Maker 27

Relacije obstajajo v podatkovnem modelu – tistega, ki ga izrecno ustvarite, ali tistega, ki ga Excel samodejno ustvari v vašem imenu, ko hkrati uvozite več tabel. Z dodatkom Power Pivot lahko ustvarite ali upravljate tudi model. Če želite izvedeti več, glejte Ustvarjanje podatkovnega modela v Excelu.

Če uporabite dodatek Power Pivot za uvoz tabel iz iste zbirke podatkov, lahko Power Pivot zazna relacije med tabelami na podlagi stolpcev, ki so v [oklepajih], in lahko te relacije reproducira v podatkovnem modelu, ki ga ustvari v ozadju. Če želite več informacij, glejte Samodejno zaznavanje in določanje odnosov v tem članku. Če uvozite tabele iz več virov, lahko ročno ustvarjate relacije, kot je opisano v razdelku Ustvarjanje relacije med dvema tabelama.

Stolpci in ključi

Odnosi temeljijo na stolpcih v vsaki tabeli, ki vsebuje enake podatke. Tabelo »Stranke « lahko na primer povežete s tabelo »Naročila «, če vsaka vsebuje stolpec, v katerem je shranjen ID stranke. V opisanem primeru imata stolpca enaki imeni, vendar to ni pogoj. Ime enega bi lahko bilo CustomerID, drugega pa CustomerNumber; pogoj je le, da vse vrstice v tabeli Orders vsebujejo številko ID, ki je shranjena tudi v tabeli Customers.

V relacijski bazi podatkov obstaja več vrst ključev. Ključ je običajno stolpec s posebnimi lastnostmi. Če razumete namen posameznega ključa, lažje upravljate podatkovni model z več tabelami, ki zagotavlja podatke za vrtilne tabele, vrtilne grafikone ali poročila Power View.

Čeprav obstaja veliko vrst ključev, so ti najpomembnejši za naš namen tukaj:

  • Primarni ključ: enolično identificira vrstico v tabeli, na primer CustomerID v tabeli »Stranke «.
  • Nadomestni ključ (ali ključ kandidata): stolpec, ki ni primarni ključ in je enoličen. Tabela Employees lahko na primer vsebuje številko ID zaposlenega in številko socialnega zavarovanja, ki sta obe enolični.
  • Tuji ključ: stolpec, ki se sklicuje na enolični stolpec v drugi tabeli, na primer ID stranke v tabeli Naročila , ki se sklicuje na ID stranke v tabeli Stranke.

V podatkovnem modelu se primarni ali alternativni ključ imenuje povezani stolpec. Če ima tabela primarni in alternativni ključ, lahko kot osnovo za relacijo med tabelama uporabite oba. Tuji ključ se imenuje izvorni stolpec ali samo stolpec. V našem primeru bi bila relacija določena med CustomerID v tabeli Orders (stolpec) in CustomerID v tabeli Customers (stolpec za iskanje). Če uvozite podatke iz relacijske zbirke podatkov, Excel privzeto izbere tuji ključ iz ene tabele in ustrezni primarni ključ iz druge tabele. Vendar lahko kot stolpec za iskanje uporabite kateri koli stolpec, ki ima enolične vrednosti.

Vrste relacij

Odnos med stranko in naročilom je odnos »ena proti mnogo«. Vsaka stranka ima lahko več naročil, naročilo pa ne more biti povezano z več strankami. Druga pomembna relacija med tabelami je ena proti ena. V našem primeru ima tabela CustomerDiscounts , ki določa enotno stopnjo popusta za vsako stranko, odnos »ena proti ena« s tabelo Customers.

V tej tabeli so prikazani odnosi med tremi tabelami (Customers, CustomerDiscounts in Orders):

Relacija Vrsta Stolpec za iskanje Stolpec
Stranke-PopustiZaStranke ena proti ena Stranke.IDStranke PopustiZaStranke.IDStranke
Stranke-Naročila ena na mnogo Stranke.IDStranke Naročila.IDStranke

Opomba

Podatkovni model ne podpira relacij »mnogo na mnogo«. Primer odnosa »mnogo na mnogo« je neposreden odnos med tabelama Products in Customers: stranka lahko kupi veliko izdelkov, enak izdelek pa lahko kupi veliko strank.

Relacije in učinkovitost delovanja

Po ustvarjanju vsakega odnosa mora Excel običajno preračunati vse formule, ki uporabljajo stolpce iz tabel v novem odnosu. Obdelava lahko traja nekaj časa, odvisno od količine podatkov in zapletenosti odnosov. Če želite več podrobnosti, glejte Preračunavanje formul.

Več relacij med tabelami

V podatkovnem modelu je med dvema tabelama lahko več relacij. Za ustvarjanje natančnih izračunov Excel potrebuje eno samo pot od ene tabele do druge. Zato je naenkrat aktiven samo en odnos v vsakem paru tabel. Čeprav so ostali neaktivni, lahko v formulah in poizvedbah določite neaktivni odnos.

V pogledu diagrama je aktivni odnos označen s polno, neaktivni pa s črtkano črto. Na primer: tabela DimDate v AdventureWorksDW2012 vsebuje stolpec DateKey, ki je povezan s tremi različnimi stolpci v tabeli FactInternetSales: OrderDate, DueDate in ShipDate. Če je aktivni odnos med DateKey in OrderDate, je to privzeti odnos v formulah, razen če ne določite drugače.

Zahteve za relacije med tabelama

Relacije ni mogoče ustvariti, kadar so izpolnjeni ti pogoji:

Pogoji Opis
Enolični identifikator za vsako tabelo Vsaka tabela mora imeti en stolpec, ki enolično prepozna vsako vrstico v tej tabeli. Ta stolpec se pogosto imenuje primarni ključ.
Enolični stolpci za iskanje Podatkovne vrednosti v stolpcu za iskanje morajo biti enolične. Z drugimi besedami, stolpec ne sme vsebovati dvojnikov. V podatkovnem modelu so ničle in prazni nizi enaki prazni vrednosti, ki je razlikovalna podatkovna vrednost. To pomeni, da ne morete imeti več ničel v stolpcu za iskanje.
Združljivi podatkovni tipi Podatkovni tipi v izvornem stolpcu in stolpcu za iskanje morajo biti združljivi. Če želite več informacij o podatkovnih tipih, glejte Podatkovni tipi, ki jih podpirajo podatkovni modeli.

Nepodprte funkcije zbirke podatkov v Excelovem podatkovnem modelu

V podatkovnem modelu ne morete ustvariti relacije med tabelama, če je ključ sestavljen ključ. Prav tako je omejeno ustvarjanje relacij »ena na ena« in »ena na mnogo«. Druge vrste relacij niso podprte.

Sestavljeni ključi in stolpci za iskanje

Sestavljeni ključ je sestavljen iz več kot enega stolpca. Podatkovni modeli ne morejo uporabljati sestavljenih ključev: v tabeli mora biti vedno natančno en stolpec, ki enolično prepozna vsako vrstico v tabeli. Če uvozite tabele z obstoječo relacijo, ki temelji na sestavljenem ključu, bo čarovnik za uvažanje tabel v dodatku Power Pivot relacijo prezrl, ker je v modelu ni mogoče ustvariti.

Če želite ustvariti odnos med dvema tabelama z več stolpci, ki definirajo primarne in tuje ključe, najprej združite vrednosti, da ustvarite en sam stolpec s ključem, preden ustvarite odnos. To lahko naredite pred uvozom podatkov ali tako, da v podatkovnem modelu z dodatkom Power Pivot ustvarite izračunani stolpec.

Odnosi »mnogo na mnogo«

Podatkovni model ne podpira odnosov »mnogo na mnogo«. Vanj ne morete preprosto dodati združevalnih tabel . Lahko pa uporabite funkcije DAX za modeliranje odnosov »mnogo na mnogo«.

Samozdruževanja in zanke

Samozdruževanja v podatkovnem modelu niso dovoljena. Samozdruževanje je rekurziven odnos, pri katerem se tabela združi sama s seboj. Velikokrat se uporablja za določanje hierarhij »nadrejeni–podrejeni«. Tabelo Employees bi lahko na primer združili samo s seboj, da bi ustvarili hierarhijo, ki prikazuje vodstveno verigo v podjetju.

Excel ne dovoljuje ustvarjanja zank med odnosi v delovnem zvezku. Z drugimi besedami, spodnji nabor odnosov je prepovedan.

Tabela 1, stolpec a proti Tabela 2, stolpec f

Tabela 2, stolpec f proti Tabela 3, stolpec n

Tabela 3, stolpec n proti Tabela 1, stolpec a

Če poskusite ustvariti odnos, ki bi povzročil nastanek zanke, pride do napake.

Samodejno zaznavanje in določanje relacij v orodju Power Pivot

Ena od prednosti uvažanja podatkov z dodatkom Power Pivot je, da Power Pivot včasih zazna relacije in ustvari nove relacije v podatkovnem modelu, ki ga ustvari v Excelu.

Ko uvozite več tabel, PowerPivot samodejno zazna morebitne obstoječe relacije med njimi. Ko ustvarite vrtilno tabelo, Power Pivot analizira tudi podatke v tabelah. Zazna morebitne odnose, ki še niso določeni, in predlaga stolpce, ki bi bili primerni za vključitev v te odnose.

Algoritem zaznavanja uporablja statistične podatke o vrednostih in metapodatke stolpcev ter tako odloča o verjetnosti odnosov.

  • Podatkovni tipi v vseh povezanih stolpcih morajo biti združljivi. Samodejno zaznavanje podpira samo podatkovne tipe celih števil in besedila. Če želite več informacij o podatkovnih tipih, glejte Podatkovni tipi, ki jih podpirajo podatkovni modeli.
  • Za uspešno zaznavanje odnosa mora biti število enoličnih ključev v stolpcu za iskanje večje od vrednosti v tabeli na strani »mnogo«. Z drugimi besedami, stolpec s ključem na strani odnosa »mnogo« ne sme vsebovati vrednosti, ki ne obstajajo v stolpcu s ključem v tabeli za iskanje. Predstavljajte si na primer tabelo, ki našteje izdelke z njihovimi številkami ID (tabela za iskanje) in tabelo prodaj, ki našteje prodaje za vsak izdelek (stran odnosa »mnogo«). Če vaši zapisi o prodajah vsebujejo številko ID izdelka, ki nima ustrezne številke ID v tabeli Products, odnosa ni mogoče samodejno ustvariti, morda pa ga lahko ustvarite ročno. Če želite, da Excel zazna odnos, morate najprej posodobiti tabelo za iskanje Product s številkami ID izdelkov, ki manjkajo.
  • Prepričajte se, da je ime stolpca s ključem na strani odnosa »mnogo« podobno imenu stolpca s ključem v tabeli za iskanje. Ni treba, da sta imeni povsem enaki. V poslovnem okolju se na primer pogosto pojavijo različice imen stolpcev, ki pravzaprav vsebujejo iste podatke: Emp ID, EmployeeID, Employee ID EMP_ID in tako dalje. Algoritem zazna podobna imena in pripiše višjo verjetnost stolpcem, ki imajo podobna ali popolnoma enaka imena. Če želite povečati verjetnost za ustvarjanje odnosa, lahko poskusite zamenjati imena stolpcev podatkov, ki jih uvažate, z imeni, ki so podobna imenom stolpcev v obstoječih tabelah. Če Excel najde več možnih odnosov, odnosa ne ustvari.

Te informacije vam lahko pomagajo razumeti, zakaj se ne zaznajo vsi odnosi ali kako lahko spremembe metapodatkov--kot npr. ime polja in podatkovni tipi--izboljšajo rezultate samodejnega zaznavanja odnosov. Če želite več informacij, glejte »Odpravljanje težav z relacijami«.

Samodejno zaznavanje za poimenovane nize

Odnosi med poimenovanimi nizi in povezanimi polji v vrtilni tabeli se ne zaznajo samodejno. Ustvarite jih lahko ročno. Če želite, da se odnosi zaznajo samodejno, odstranite vsak poimenovani niz in dodajte posamezna polja iz poimenovanega niza neposredno v vrtilno tabelo.

Določanje odnosov

V nekaterih primerih se odnosi med tabelami samodejno združijo. Če na primer ustvarite odnos med prvima dvema paroma tabel spodaj, se predpostavlja odnos med preostalima dvema tabelama in se tudi samodejno ustvari.

Products in Category -- ročno ustvarjen odnos

Category in SubCategory -- ročno ustvarjen odnos

Products in SubCategory -- odnos se predpostavlja

Če želite, da se odnosi samodejno povežejo, morajo potekati v eno smer, kot je prikazano zgoraj. Če bi bil začetni odnos vzpostavljen na primer med tabelami Sales in Products ter Sales in Customers, se odnos ne določi. Razlog je v tem, da je odnos med Products in Customers odnos »mnogo na mnogo«.