Share via


Kaksisuuntaisen suhteen ohjeet

Tämä artikkeli koskee tietojen mallintajaa, joka käsittelee Power BI Desktopia. Artikkelissa on ohjeita siitä, milloin tulee luoda kaksisuuntaiset mallisuhteet. Kaksisuuntainen suhde on suhde, jossa suodatetaan molempiin suuntiin.

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 Mallien suhteet Power BI Desktopissa -artikkelin.

On myös tärkeää, että ymmärrät tähtirakenteen suunnittelun. Lisätietoja on kohdassa Tutustu tähtirakenteeseen ja sen merkitykseen Power BI:ssä.

Yleisesti ottaen suosittelemme kaksisuuntaisten suhteiden käytön minimointia. Ne voivat heikentää mallikyselyn suorituskykyä ja mahdollisesti aiheuttaa raporttisi käyttäjille hämmentäviä kokemuksia.

Kaksisuuntainen suodatus voi vastata tiettyihin vaatimuksiin kolmessa tilanteessa:

Erityiset mallisuhteet

Kaksisuuntaiset suhteet ovat tärkeässä roolissa, kun luodaan kahta seuraavaa erityistä mallisuhdetyyppiä:

  • Yksi yhteen: Kaikkien yksi yhteen -suhteiden on oltava kaksisuuntaiisia – muulla tavalla niitä ei voi määrittää. Emme yleensä suosittele tällaisten suhteiden luomista. Koko keskustelu ja vaihtoehtoisia malleja on ohjeaiheessa Yksi-yhteen-suhteen ohjeet.
  • Monta moneen: Kun suhde koskee kahta dimensiotyyppistä taulukkoa, tarvitaan välitaulukko. Kaksisuuntaisen suodattimen avulla varmistetaan, että suodattimet leviävät välitaulukon kautta. Lisätietoja on artikkelissa Monta-moneen-suhteen ohjeet (Liitä monta-moneen-dimensiot).

Osittajan kohteet, "joissa on tietoja"

Kaksisuuntaiset suhteet voivat toimittaa osittajia, jotka rajaavat kohteet siellä, missä on tietoja. (Jos tunnet Excelin Pivot-taulukot ja osittajat, se on oletustoiminta, kun tietoja hankintaan Power BI:n semanttisesta mallista (aiemmin kutsutaan tietojoukoksi) tai Analysis Services -mallista.) Tutustu ensin seuraavaan mallikaavioon, joka auttaa selittämään, mitä se tarkoittaa.

Diagram showing a model containing three tables. The design is described in the following paragraph.

Ensimmäisen taulukon nimi on Customer, ja siinä on kolme saraketta: Country-Region, Customer ja CustomerCode. Toisen taulukon nimi on Product, ja siinä on kolme saraketta: Color, Product ja SKU. Kolmannen taulukon nimi on Sales, ja siinä on neljä saraketta: CustomerCode, OrderDate, Quantity ja SKU. Customer- ja Product-taulukot ovat dimensiotyyppisiä taulukoita, ja kummallakin on yksi moneen -suhde Sales-taulukkoon. Kukin suhde suodattaa yhteen suuntaan.

Mallikaaviota on muokattu taulukon rivien paljastamiseksi, jotta voidaan kuvata kaksisuuntaisen suodatuksen toimintaa. Kaikki tämän artikkelin esimerkit perustuvat näihin tietoihin.

Muistiinpano

Taulukon rivejä ei voi näyttää Power BI Desktop -mallikaaviossa. Tässä artikkelissa niin on kuitenkin tehty, jotta voidaan antaa selkeitä esimerkkejä keskustelun tueksi.

Diagram showing that the model now reveals the table rows. The row details are described in the following paragraph.

Kolmen taulukon rivien tiedot kerrotaan seuraavassa luettelossa:

  • Asiakas-taulukossa on kaksi riviä:
    • CustomerCode CUST-01, Customer Customer-1, Country-Region Yhdysvallat
    • CustomerCode CUST-02, Customer Customer-2, Country-Region Australia
  • Product-taulukossa on kolme riviä:
    • SKU CL-01, Product T-shirt, Color Green
    • SKU CL-02, Product Jeans, Color Blue
    • SKU AC-01, Product Hat, Color Blue
  • Sales-taulukossa on kolme riviä:
    • OrderDate January 1 2019, CustomerCode CUST-01, SKU CL-01, Quantity 10
    • OrderDate February 2 2019, CustomerCode CUST-01, SKU CL-02, Quantity 20
    • OrderDate March 3 2019, CustomerCode CUST-02, SKU CL-01, Quantity 30

Tutustu sitten seuraavaan raporttisivuun.

Diagram showing the report page containing three visuals. The details are described in the following paragraph.

Sivulla on kaksi osittajaa ja kortin visualisointi. Ensimmäinen osittaja liittyy kohteeseen Country-Region, ja siinä on kaksi kohdetta: Australia ja Yhdysvallat. Tällä hetkellä osittaa osittajan Australian mukaan. Toinen osittaja liittyy kohteeseen Product, ja siinä on kolme kohdetta: Hat, Jeans ja T-shirt. Kohteita ei ole valittu (eli mitään tuotteita ei suodateta). Kortin visualisoinnissa näkyy määrä, joka on 30.

Kun raportin käyttäjät osittavat tiedot Australian mukaan, haluat ehkä rajoittaa Product-osittajan näyttämään kohteet, joiden tiedot liittyvät Australian myyntiin. Tätä tarkoitetaan näyttämällä osittajakohteet, "joissa on tietoja". Voit toteuttaa tämän toiminnan määrittämällä Product- ja Sales-taulukoiden välisen suhteen suodattamaan molempiin suuntiin.

Diagram showing a model that the relationship between the Product and Sales table is now bi-directional.

Product-osittaja näyttää nyt yhden kohteen: T-shirt. Tämä kohde edustaa ainoaa australialaisille asiakkaille myytyä tuotetta.

Diagram showing the report page containing three visuals with Product called out. The details are described in the following paragraph.

Suosittelemme harkitsemaan huolellisesti, sopiiko tämä rakenne raporttisi käyttäjille. Jotkut raportin käyttäjät pitävät käyttökokemusta hämmentävänä. He eivät ymmärrä, miksi osittajakohteita tulee näkyviin tai katoaa dynaamisesti, kun he käsittelevät muita osittajia.

Jos päätät näyttää osittajakohteet, "joissa on tietoja", emme suosittele kaksisuuntaisten suhteiden määrittämistä. Kaksisuuntaiset suhteet edellyttävät enemmän käsittelyä, joten ne voivat vaikuttaa negatiivisesti kyselyn suorituskykyyn – varsinkin kun kaksisuuntaisten suhteiden määrä mallissasi kasvaa.

Saman tuloksen voi saavuttaa paremmallakin tavalla: Kaksisuuntaisten suodattimien sijasta voit käyttää visualisointitason suodatinta itse Product-osittajaan .

Ajatellaan, että Product- ja Sales-taulukon välinen suhde ei enää suodata molempiin suuntiin. Lisäksi Sales-taulukkoon on lisätty seuraava mittarimääritys.

Total Quantity = SUM(Sales[Quantity])

Jos haluat näyttää Product-osittajan kohteet, "joissa on tietoja", osittaja tulee vain suodattaa Total Quantity -mittarin mukaan käyttämällä ehtoa "ei ole tyhjä".

Diagram showing that the Filters pane for the Product slicer now filters by

Dimensioiden ja dimension analyysi

Toinen kaksisuuntaisiin suhteisiin liittyvä skenaario käsittelee faktatyyppistä taulukkoa välitaulukkona. Näin se tukee dimensiotyypin taulukkotietojen analysointia toisen dimensiotyyppisen taulukon suodatinkontekstissa.

Käytetään tämän artikkelin esimerkkimallia ja pohditaan, miten seuraaviin kysymyksiin voidaan vastata:

  • Montako väriä australialaisille asiakkaille myytiin?
  • Kuinka monesti maista tai alueista ostettiin farkkuja?

Molempiin kysymyksiin voidaan vastata ilman , että faktatyyppisessä välitaulukossa tehdään yhteenvetoa. Ne kuitenkin edellyttävät, että suodattimet välitettävät yhdestä dimensiotyyppisestä taulukosta toiseen. Kun suodattimet välitetään faktatyyppisen taulukon kautta, dimensiotyyppisten taulukkosarakkeiden yhteenveto voidaan tehdä käyttämällä DAX-funktiota DISTINCTCOUNT – sekä mahdollisesti DAX-funktioita MIN ja MAX .

Faktatyyppinen taulukko toimii välitaulukkona, joten voit seurata monta-moneen-suhteen ohjeita siitä, miten kaksi ulottuvuustyyppistä taulukkoa liitetään. Vähintään yksi suhde on määritettävä suodattamaan molempiin suuntiin. Lisätietoja on artikkelissa Monta-moneen-suhteen ohjeet (Liitä monta-moneen-dimensiot).

Kuten tässä artikkelissa on kuitenkin jo kuvattu, tällainen rakenne heikentää luultavasti suorituskykyä sekä vaikuttaa käyttäjäkokemukseen, joka liittyy osittajan kohteisiin, "joissa on tietoja". On siis suositeltavaa aktivoida kaksisuuntainen suodatus mittarimäärityksessä käyttämällä sen sijaan DAX-funktiota CROSSFILTER . CROSSFILTER-funktiolla voidaan lausekkeen arvioinnin aikana muokata suodatuksen ohjeita – tai jopa poistaa suhde käytöstä.

Katso seuraavaa mittarimääritystä, joka lisättiin Sales-taulukkoon. Tässä esimerkissä Customer- ja Sales-taulukoiden välinen mallisuhde on määritetty suodattamaan yhteen suuntaan.

Different Countries Sold =
CALCULATE(
    DISTINCTCOUNT(Customer[Country-Region]),
    CROSSFILTER(
        Customer[CustomerCode],
        Sales[CustomerCode],
        BOTH
    )
)

Kun Different Countries Sold -mittarilauseketta arvioidaan, Customer- ja Sales-taulukoiden välinen suhde suodatetaan molempiin suuntiin.

Seuraavassa taulukossa esitetään kunkin myydyn tuotteen nykyiset tilastotiedot. Quantity-sarake on yksinkertaisesti määräarvojen summa. Different Countries Sold -sarake edustaa kaikkien tuotteen ostaneiden asiakkaiden erillisten maa-alue-arvojen määrää.

Diagram showing that two products are listed in a table visual. In the

Saat lisätietoja tähän artikkeliin liittyen tutustumalla seuraaviin resursseihin: