Aktiivisten ja passiivisten suhteiden ohjeet
Tämä artikkeli koskee tietojen mallintajaa, joka työskentelee Power BI Desktopin kanssa. Artikkelissa on ohjeita siitä, milloin tulee luoda aktiivisia tai passiivisia mallisuhteita. Oletusarvon mukaan aktiiviset suhteet levittävät suodattimia muihin taulukoihin. Passiivinen suhde kuitenkin levittää suodattimia vain, kun DAX-lauseke aktivoi suhteen (käyttää suhdetta).
Muistiinpano
Tämä artikkeli ei johdata malliyhteyksiin. Jos et ole täysin perehtynyt suhteisiin, niiden ominaisuuksiin tai niiden määrittämiseen, suosittelemme, että luet ensin Model -suhteet Power BI Desktop -artikkelissa.
On myös tärkeää, että ymmärrät tähtirakenteen suunnittelun. Lisätietoja on kohdassa Tutustu tähtirakenteeseen ja sen merkitykseen Power BI -.
Aktiiviset suhteet
Yleensä suosittelemme aktiivisten suhteiden määrittämistä aina kun se on mahdollista. Ne laajentavat mallisi käyttöaluetta ja mahdollisuuksia, joita raportin tekijät sekä Q&A:n kanssa työskentelevät käyttäjät voivat käyttää.
Otetaan esimerkiksi Tuontimalli-, joka on suunniteltu analysoimaan lentoyhtiön lennonaikaista suoritustehoa (OTP). Mallilla on Flight
-taulukko, joka on faktataulukko,, joka tallentaa yhden rivin lentoa kohden. Kullakin rivillä on kirjaa lennon päivämäärä, lennon numero, lähtö- ja saapumislentokenttä sekä mahdollinen viiveaika (minuutteina). Mukana on myös Airport
taulukko, joka on -dimensiotaulukko,, jossa on yksi rivi lentokenttää kohden. Kullakin rivillä on lentokentän koodi, lentokentän nimi sekä maa tai alue.
Tässä on kahden taulukon osittainen mallikaavio.
Flight
ja Airport
taulukoiden välillä on kaksi mallisuhdetta.
Flight
-taulukossa DepartureAirport
- ja ArrivalAirport
-sarakkeet liittyvät Airport
-taulukon Airport
-sarakkeeseen. Tähtirakenteessa Airport
-taulukko kuvataan rooliulottuvuuden . Tässä mallissa kaksi roolia ovat departure airport - ja arrival airport .
Tämä rakenne toimii hyvin suhteellisten tähtirakenteiden suunnittelussa, mutta se ei toimi hyvin Power BI -malleissa. Tämä johtuu siitä, että malliyhteydet ovat suodattimen levittämispolkuja ja polkujen on oltava deterministisiä. Lisätietoja siitä, että suodattimien levityspolut ovat deterministisiä, on ratkaista suhdepolun moniselitteisyys. Näin ollen – kuten tässä esimerkissä esitetään – yksi suhde on aktiivinen, kun taas toinen on passiivinen (esitetään katkoviivana). Aktiivisena on suhde ArrivalAirport
-sarakkeeseen, mikä tarkoittaa, että Airport
-taulukkoon käytetyt suodattimet leviävät automaattisesti Flight
-taulukon ArrivalAirport
sarakkeeseen.
Tähän mallirakenteeseen liittyy vakavia rajoituksia sen mukaan, miten tietoja voidaan raportoida. Tarkemmin sanottuna ei ole mahdollista suodattaa Airport
taulukkoa niin, että se automaattisesti eristää lähtölentokentän lentotiedot. Koska raporttien on suodatettava (tai ryhmiteltävä) lähtö- ja saapumislentokenttien mukaan samaan aikaan, tarvitaan kaksi aktiivista suhdetta. Tämän vaatimuksen kääntäminen Power BI -mallirakenteena tarkoittaa sitä, että mallissa on oltava kaksi lentokenttätaulukkoa.
Tässä on paranneltu mallirakenne.
Mallissa on nyt kaksi lentokenttätaulukkoa: Departure Airport
ja Arrival Airport
. Näiden taulukoiden ja Flight
taulukon välinen malliyhteys on aktiivinen. Huomaa myös, että Departure Airport
- ja Arrival Airport
-taulukoiden sarakkeiden nimien etuliitteenä on sana Departure tai Arrival.
Paranneltu mallirakenne tukee seuraavan raporttimallin tuottamista.
Raporttisivu on suodatettu niin, Melbourne lähtökenttänä, ja taulukon visualisointi ryhmittelee tiedot kohdelentokenttien mukaan.
Muistiinpano
Tuontimalleissa toisen dimensiotaulukon lisääminen on kasvattanut mallin kokoa ja pidentänyt päivitysaikoja. Näin ollen se on ristiriidassa niiden suositusten kanssa, jotka on kuvattu artikkelissa Tietojen vähentämisen tekniikat tuonnin mallinnusta varten. Tässä esimerkissä vaatimus vain aktiivisten suhteiden esittämisestä kuitenkin ohittaa nämä suositukset.
On myös yleistä, että dimensiotaulukot tallentavat vähäisiä rivimääriä suhteessa faktataulukon rivimääriin. Niinpä kasvanut mallin koko ja pidentyneet päivitysajat eivät todennäköisesti ole vielä kohtuuttoman suuria.
Muodostamismenetelmät
Tämän menetelmän avulla voidaan muodostaa malli yhdestä rooliulottuvuustaulukosta rakenteeseen, jossa on yksi taulukko roolia kohden.
Poista passiiviset yhteydet.
Harkitse rooliulottuvuustaulukon nimeämistä uudelleen, jotta sen rooli kuvataan paremmin. Tämän artikkelin esimerkissä
Airport
-taulukko liittyyFlight
-taulukonArrivalAirport
sarakkeeseen, joten taulukon nimeksi muutetaanArrival Airport
.Luo kopio roolitaulukosta ja anna sille sen roolia vastaava nimi. Jos kyseessä on tuontitaulukko, suosittelemme, että luot lasketun taulukon. Jos kyseessä on DirectQuery-taulukko, voit monistaa Power Query -kyselyn.
Esimerkissä
Departure Airport
-taulukko luotiin käyttämällä seuraavaa lasketun taulukon määritystä.Departure Airport = 'Arrival Airport'
Luo aktiivinen suhde, joka yhdistää uuden taulukon.
Harkitse taulukoiden sarakkeiden nimeämistä uudelleen niin, että ne vastaavat sarakkeiden roolia. Tämän artikkelin esimerkissä kaikkien sarakkeiden etuliitteenä on sana Departure tai Arrival. Näiden nimien ansiosta raportin visualisoinneilla on oletusarvoisesti kuvaavat ja yksiselitteiset otsikot. Se myös parantaa Q&A-käyttökokemusta, jolloin käyttäjät voivat kirjoittaa helposti tarkkoja kysymyksiä.
Harkitse kuvausten lisäämistä roolitaulukoihin. (Tiedot -ruudussa näkyy kuvaus työkaluvihjeessä, kun raportin tekijä siirtää kohdistimen taulukon päälle.) Näin voit välittää muille suodatuksen levityksen tiedoille raportin tekijöille.
Passiiviset yhteydet
Tietyissä tilanteissa passiiviset yhteydet voivat vastata raportoinnin erityisiin tarpeisiin.
Huomioi erilaisia malli- ja raportointivaatimuksia:
- Myyntimalli sisältää
Sales
taulukon, jossa on kaksi päivämääräsaraketta:OrderDate
jaShipDate
. - Jokainen
Sales
taulukon rivi kirjaa yhden järjestyksen. - Päivämääräsuodattimia käytetään lähes aina
OrderDate
sarakkeeseen, joka tallentaa aina kelvollisen päivämäärän. - Vain yksi mittari edellyttää päivämääräsuodattimen levittämistä
ShipDate
sarakkeeseen, joka voi sisältää tyhjiä kohtia (kunnes tilaus on lähetetty). - Tilausten (tai ryhmittelyn) samanaikaista suodatusta (tai ryhmittelyä) ei vaadita lähetyspäivämäärän ja.
Tässä on kahden taulukon osittainen mallikaavio.
Sales
ja Date
taulukoiden välillä on kaksi mallisuhdetta.
Sales
-taulukossa OrderDate
- ja ShipDate
-sarakkeet liittyvät Date
-taulukon Date
-sarakkeeseen. Tässä mallissa Date
-taulukon kaksi roolia ovat tilauspäivämäärän ja lähetyspäivämäärän. Suhde OrderDate
sarakkeeseen on aktiivinen.
Kaikki kuusi mittaria – yhtä lukuun ottamatta – on suodatettava OrderDate
sarakkeen mukaan.
Orders Shipped
mittari on kuitenkin suodatettava ShipDate
sarakkeen mukaan.
Tässä on Orders
mittarin määritys. Se vain laskee Sales
taulukon rivit suodatinkontekstissa.
Date
taulukkoon käytetyt suodattimet leviävät OrderDate
sarakkeeseen.
Orders = COUNTROWS(Sales)
Tässä on Orders Shipped
mittarin määritys. Se käyttää USERELATIONSHIP DAX-funktiota, joka aktivoi suodattimen leviämisen tietyssä suhteessa, mutta vain lausekkeen arvioinnin aikana. Tässä esimerkissä käytetään suhdetta ShipDate
-sarakkeeseen.
Orders Shipped =
CALCULATE(
COUNTROWS(Sales)
,USERELATIONSHIP('Date'[Date], Sales[ShipDate])
)
Tämä mallirakenne tukee seuraavan raporttimallin tuottamista.
Raporttisivu suodattaa vuosineljänneksen 2019 4. vuosineljänneksenmukaan. Taulukon visualisointi ryhmittelee kuukauden mukaan ja näyttää useita myyntitilastoja.
Orders
ja Orders Shipped
mittarit tuottavat erilaisia tuloksia. Ne käyttävät samaa yhteenvetologiikkaa (Sales
taulukon rivien laskeminen), mutta eri Date
taulukon suodatuksen levittämistä.
Huomaa, että vuosineljänneksen osittajassa on TYHJÄ-vaihtoehto. Tämä osittaja-asetus tulee näkyviin taulukon laajennuksen. Jokaisella Sales
taulukon rivillä on kelvollinen tilauspäivä, mutta joillakin riveillä on tyhjä lähetyspäivämäärä – näitä tilauksia ei ole vielä lähetetty. Taulukon laajennus ottaa huomioon myös passiiviset yhteydet, joten tyhjiä kohtia saattaa ilmestyä, jos suhteessa on monta puolta (tai jos tiedoissa on eheysongelmia).
Muistiinpano
Rivitason suojauksen (RLS) suodattimet leviävät vain aktiivisten suhteiden kautta. RLS-suodattimet eivät koskaan levitä passiivisia suhteita, vaikka USERELATIONSHIP- DAX-funktiota käytetään mittarimäärityksessä.
Suosituksia
Suosittelemme, että määrität aktiiviset suhteet aina kun se on mahdollista, erityisesti silloin, kun tietomallillesi on määritetty rivitason suojauksen rooleja. Ne laajentavat mallisi käyttöaluetta ja mahdollisuuksia, joita raportin tekijät sekä Q&A:n kanssa työskentelevät käyttäjät voivat käyttää. Tämä tarkoittaa sitä, että rooliulottuvuustaulukot tulee monistaa mallissasi.
Tietyissä tilanteissa voit kuitenkin määrittää yhden tai useamman passiivisen suhteen rooliulottuvuustaulukolle. Voit harkita tätä lähestymistapaa seuraavassa:
- Raportin visualisointien ei tarvitse samanaikaisesti suodattua eri roolien mukaan.
- Käytät DAX-funktiota USERELATIONSHIP aktivoidaksesi tietyn suhteen asiaan liittyville mallin laskutoimituksille.
Aiheeseen liittyvä sisältö
Saat lisätietoja tähän artikkeliin liittyen tutustumalla seuraaviin resursseihin:
- mallisuhteiden Power BI Desktopin
- Tutustu tähtirakenteeseen ja sen merkitykseen Power BI -
- yhteyden vianmääritysohjeiden
- Kysymyksiä? Voit esittää kysymyksiä Fabric-yhteisön
- Ehdotuksia? Edistä ideoita Fabric- parantamiseksi