Johdannaisparametrien käyttö sivutetuissa raporteissa
Tämä artikkeli koskee raportin laatijaa, joka suunnittelee Power BI 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 Johdannaisparametrien lisääminen raporttiin Power BI:n raportin muodostimessa.
Suunnitteluskenaariot
Johdannaisparametrien käyttämiseen on kaksi suunnitteluskenaariota. Niitä voidaan käyttää tehokkaasti
- Suurien tietojoukkojen suodattaminen
- Olennaisten kohteiden
Esimerkki tietokannasta
Tämän artikkelin esimerkit perustuvat Azuren SQL-tietokantaan. 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
- Kaupunki
- Postinumero
On olemassa myös taulukko nimeltä Sales
. 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 seuraavat:
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 tämän mallin avulla PostalCode tietojoukko.
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 Serverin indeksiarkkitehtuuri- 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]
Liitä 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 taulukon.
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 ennalta määritettyjen kirjainryhmien 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]
Liitä Reseller -tietojoukon kyselyparametri vastaavaan raporttiparametriin.
Juomaraha
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 -raporttiparametrit, 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
Aiheeseen liittyvä sisältö
Saat lisätietoja tähän artikkeliin liittyen tutustumalla seuraaviin resursseihin: