Johdannaisparametrien käyttö sivutetuissa raporteissa
Tämä artikkeli koskee raportin laatijaa, joka suunnittelee Power BI :n sivutettuja raportteja. Se tarjoaa skenaarioita johdannaisparametrien suunnitteluun. Johdannaisparametrit ovat raportin parametreja, joilla on riippuvuussuhteita. Kun raportin käyttäjä valitsee parametrin arvon (tai arvot), sen avulla voidaan määrittää toisen parametrin käytettävissä olevat arvot.
Muistiinpano
Tässä artikkelissa ei esitellä johdannaisparametreja eikä niiden määrittämistä. Jos et ole perehtynyt johdannaisparametreihin, suosittelemme, että luet ensin artikkelista Johdannaisparametrien lisääminen raporttiin Power BI Raportin muodostin.
Suunnitteluskenaariot
Johdannaisparametrien käyttämiseen on kaksi suunnitteluskenaariota. Niitä voidaan käyttää tehokkaasti
- Suurien kohdejoukkojen suodattaminen
- Olennaisten kohteiden esittäminen
Esimerkki tietokannasta
Tämän artikkelin esimerkit perustuvat Azure-SQL-tietokanta. Tietokanta kirjaa myyntitoiminnot ja sisältää erilaisia taulukoita, jotka tallentavat jälleenmyyjiä, tuotteita ja myyntitilauksia.
Taulukko nimeltä Reseller tallentaa kullekin jälleenmyyjälle yhden tietueen ja sisältää useita tuhansia tietueita. Reseller-taulukossa on seuraavat sarakkeet:
- ResellerCode (kokonaisluku)
- ResellerName
- Country-Region
- State-Province
- Paikkakunta
- PostalCode
Saatavilla on myös taulukko nimeltä Myynti. Se tallentaa myyntitilaustietueet ja sillä on viiteavainsuhde Reseller-taulukkoon ResellerCode-sarakkeessa.
Esimerkki vaatimuksesta
Jälleenmyyjän profiilia koskevan raportin laatimista vaaditaan. Raportti on suunniteltava siten, että se näyttää yksittäisen jälleenmyyjän tiedot. Ei ole asianmukaista, että raportin käyttäjä syöttää jälleenmyyjän koodin, koska hän harvoin muistaa sitä.
Suurien kohdejoukkojen suodattaminen
Tarkastellaanpa kolmea esimerkkiä, joiden avulla voit rajoittaa suurten käytettävissä olevien kohteiden joukkoa, kuten jälleenmyyjiä. Ne ovat:
Suodata liittyvien sarakkeiden mukaan
Tässä esimerkissä raportin käyttäjä soveltaa viittä raportin parametria. Käyttäjän on valittava maa tai alue, osavaltio tai maakunta, kaupunki ja postinumero. Viimeisessä parametrissa luetellaan jälleenmyyjät, jotka asuvat kyseisessä maantieteellisessä sijainnissa.
Voit kehittää johdannaisparametrit seuraavasti:
Luo viisi raportin parametria, jotka on järjestetty oikeaan järjestykseen.
Luo CountryRegion-tietojoukko, joka hakee erilliset maa- tai aluearvot, käyttämällä seuraavaa kyselylauseketta:
SELECT DISTINCT [Country-Region] FROM [Reseller] ORDER BY [Country-Region]
Luo StateProvince-tietojoukko, joka hakee valitun maan tai alueen erilliset osavaltio- tai maakunta-arvot, käyttämällä seuraavaa kyselylauseketta:
SELECT DISTINCT [State-Province] FROM [Reseller] WHERE [Country-Region] = @CountryRegion ORDER BY [State-Province]
Luo City-tietojoukko, joka hakee valitun maan tai alueen erilliset kaupunkiarvot, käyttämällä seuraavaa kyselylauseketta:
SELECT DISTINCT [City] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince ORDER BY [City]
Luo postalcode-tietojoukko tämän mallin avulla.
Luo Reseller-tietojoukko, jotta voit hakea valittujen maantieteellisten arvojen kaikki jälleenmyyjät, käyttämällä seuraavaa kyselylauseketta:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince AND [City] = @City AND [PostalCode] = @PostalCode ORDER BY [ResellerName]
Yhdistä jokaisen tietojoukon ensimmäistä lukuun ottamatta kyselyparametrit vastaaviin raportin parametreihin.
Muistiinpano
Kaikki näissä esimerkeissä näytetyt kyselyparametrit (edessä @-symboli) voidaan upottaa SELECT-lausekkeisiin tai välittää tallennettuihin toimintosarjoihin.
Yleensä tallennetut toimintosarjat ovat parempi rakennemenetelmä. Tämä johtuu siitä, että niiden kyselysuunnitelmat on tallennettu välimuistiin nopeampaa suoritusta varten, ja niiden avulla voit kehittää edistyneempää logiikkaa tarvittaessa. Niitä ei kuitenkaan tällä hetkellä tueta yhdyskäytävään liittyviä tietolähteitä (SQL Server, Oracle ja Teradata) varten.
Lopuksi on aina varmistettava, että käytössä on sopivat indeksit, jotta tiedot haetaan tehokkaasti. Muussa tapauksessa raportin parametrien täyttäminen voi olla hidasta, ja tietokanta voi ylikuormittua. Lisätietoja SQL Server -indeksoinnista on artikkelissa SQL Server -indeksin arkkitehtuuri- ja suunnitteluopas.
Suodata ryhmittelysarakkeen mukaan
Tässä esimerkissä raportin käyttäjä soveltaa raportin parametria jälleenmyyjän ensimmäisen kirjaimen valitsemiseksi. Toinen parametri luettelee sitten jälleenmyyjät, kun nimi alkaa valitulla kirjaimella.
Voit kehittää johdannaisparametrit seuraavasti:
Luo ReportGroup- ja Reseller-raportin parametrit, jotka on järjestetty oikeaan järjestykseen.
Luo ReportGroup-tietojoukko, jotta voit hakea kaikkien jälleenmyyjien käyttämät ensimmäiset kirjaimet, käyttämällä seuraavaa kyselylauseketta:
SELECT DISTINCT LEFT([ResellerName], 1) AS [ReportGroup] FROM [Reseller] ORDER BY [ReportGroup]
Luo Reseller-tietojoukko, jotta voit hakea valitulla kirjaimella alkavat kaikki jälleenmyyjät, käyttämällä seuraavaa kyselylauseketta:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE LEFT([ResellerName], 1) = @ReportGroup ORDER BY [ResellerName]
Yhdistä Reseller-tietojoukon kyselyparametri vastaavaan raporttiparametriin.
Ryhmittelysarake kannattaa lisätä Reseller-taulukkoon . Kun se on jatkuva ja indeksoitu, se tuottaa parhaan tuloksen. Lisätietoja on kohdassa Laskettujen sarakkeiden määrittäminen taulukossa.
ALTER TABLE [Reseller]
ADD [ReportGroup] AS LEFT([ResellerName], 1) PERSISTED
Tämä tekniikka voi tarjota vieläkin enemmän mahdollisuuksia. Harkitse seuraavaa komentosarjaa, joka lisää uuden ryhmittelysarakkeen jälleenmyyjien suodattamiseksi esimääritettyjen kirjainkaistan mukaan. Se luo myös indeksin, joka hakee tehokkaasti raportin parametrien edellyttämät tiedot.
ALTER TABLE [Reseller]
ADD [ReportGroup2] AS CASE
WHEN [ResellerName] LIKE '[A-C]%' THEN 'A-C'
WHEN [ResellerName] LIKE '[D-H]%' THEN 'D-H'
WHEN [ResellerName] LIKE '[I-M]%' THEN 'I-M'
WHEN [ResellerName] LIKE '[N-S]%' THEN 'N-S'
WHEN [ResellerName] LIKE '[T-Z]%' THEN 'T-Z'
ELSE '[Other]'
END PERSISTED
GO
CREATE NONCLUSTERED INDEX [Reseller_ReportGroup2]
ON [Reseller] ([ReportGroup2]) INCLUDE ([ResellerCode], [ResellerName])
GO
Suodata hakumallin mukaan
Tässä esimerkissä raportin käyttäjä soveltaa raportin parametria hakumallin syöttämistä. Toinen parametri luettelee sitten jälleenmyyjät, kun nimi sisältää mallin.
Voit kehittää johdannaisparametrit seuraavasti:
Luo Search- ja Reseller-raportin parametrit, jotka on järjestetty oikeaan järjestykseen.
Luo Reseller-tietojoukko, jotta voit hakea hakutekstin sisältävät kaikki jälleenmyyjät, käyttämällä seuraavaa kyselylauseketta:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [ResellerName] LIKE '%' + @Search + '%' ORDER BY [ResellerName]
Yhdistä Reseller-tietojoukon kyselyparametri vastaavaan raporttiparametriin.
Vihje
Tämän mallin avulla voit tarjota raportin käyttäjille parempia hallintatoimintoja. Sen avulla he voivat määrittää arvon täsmäyttämisen oman mallinsa. Esimerkiksi hakuarvo "red%" suodattaa jälleenmyyjiin, joiden nimet alkavat merkeillä "red".
Lisätietoja on kohdassa LIKE (Transact-SQL).
Näin voit antaa raportin käyttäjien määrittää oman mallinsa.
WHERE
[ResellerName] LIKE @Search
Monet käyttäjät, jotka eivät ole tietokanta-ammattilaisia, eivät kuitenkaan tiedä prosenttiosuuden (%) yleismerkkiä. Sen sijaan he tuntevat tähden (*). Muokkaamalla WHERE-lausetta voit antaa heidän käyttää tätä merkkiä.
WHERE
[ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')
Olennaisten kohteiden esittäminen
Tässä skenaariossa voit käyttää faktatietoja käytettävissä olevien arvojen rajoittamiseen. Raportin käyttäjille esitetään kohteet, joissa toiminta on tallennettu.
Tässä esimerkissä raportin käyttäjä soveltaa kolmea raportin parametria. Kaksi ensimmäistä joukkoa määrittää myyntitilausten päivämäärien päivämääräalueen. Kolmas parametri luettelee jälleenmyyjät, jotka ovat tehneet tilauksia kyseisenä ajanjaksona.
Voit kehittää johdannaisparametrit seuraavasti:
Luo OrderDateStart-, OrderDateEnd- ja Reseller-raportin parametrit, jotka on järjestetty oikeaan järjestykseen.
Luo Reseller-tietojoukko, jotta voit hakea kaikki jälleenmyyjät, jotka loivat tilauksia päivämääräjaksolla, käyttämällä seuraavaa kyselylauseketta:
SELECT DISTINCT [r].[ResellerCode], [r].[ResellerName] FROM [Reseller] AS [r] INNER JOIN [Sales] AS [s] ON [s].[ResellerCode] = [r].[ResellerCode] WHERE [s].[OrderDate] >= @OrderDateStart AND [s].[OrderDate] < DATEADD(DAY, 1, @OrderDateEnd) ORDER BY [r].[ResellerName]
Suosituksia
Suosittelemme, että suunnittelet raportit johdannaisparametrien avulla aina, kun se on mahdollista. Tämä johtuu siitä, että:
- Takaat raporttisi käyttäjille intuitiivisia ja hyödyllisiä kokemuksia.
- Ovat tehokkaita, koska ne hakevat pienempiä käytettävissä olevien arvojen joukkoja
Varmista, että optimoit tietolähteesi:
- käyttämällä tallennettuja toimintosarjoja aina kun se on mahdollista,
- Lisäämällä asianmukaiset indeksit tietojen tehokkaaksi hakemiseen
- Materialisoimalla sarakkeiden arvot – ja jopa rivit – kalliiden kyselyaika-arviointien välttämiseksi
Liittyvä sisältö
Saat lisätietoja tähän artikkeliin liittyen tutustumalla seuraaviin resursseihin: