V minulosti jsem napsal několik tutoriálů na reporting services (najdete je v rubrice reporting services – SSRS). Celkem podrobně jsem prošel jak se dá přes SSRS vytvořit jednoduchý report, jak výsledek reportu omezit přes parametry/filtry a podobně. Složitější a pěknější reporty jsou už jen o zkušenostech a tréninku, s tím vám už moc nepomůžu.

Jedné věci jsem se ale ještě dostatečně nepověnoval. Představil jsem sice možnost omezit výsledek reportu na parametr, ale pouze na parametr o jedné hodnotě. SSRS má možnost tzn. multiple values parametru, tzn. že můžete vybrat více hodnot. V takovém případě je řešení složitější, protože je těžší předat parametr do SQL query, která se z Reporting services pouští.

Multiple values filtry v Reporting services – jak na to?

Ukážu zase na příkladu, pojďme postupně. V příkladu budu chtít udělat report, který využívá multiple filtr.

Datová základna reportu

Data pro jednoduchý report bude seznam geograficky rozdělených zákazníků ze sample databáze AdventureworksDW2016CTP3. Prostě jsem tam něco naflákal, to je pro ukázku jedno

priklad multiple values filtr v ssrs - zadani

Nachystám si v SSRS data source a dataset

návod na dataset zde  a hlavní dataset (návod zde) z předchozího kroku. Navíc si ještě nachystám jeden pomocný dataset, který bude sloužit jako nabídka hodnot pro filtr
(parametr). Protože budu chtít filtrovat podle regionu, tak dataset nastavím jako distinct Regionu:

SELECT
DISTINCT [geo].[EnglishCountryRegionName]
FROM [AdventureworksDW2016CTP3].[dbo].[DimCustomer] [cust]
JOIN [AdventureworksDW2016CTP3].[dbo].[DimGeography] [geo]
ON [cust].[GeographyKey] = [geo].[GeographyKey];

dataset pro multiple values filter v ssrs

Ve výsledku tedy mám v reporting services projektu 2 datasety

ssrs datasety

Vytvořím SSRS report parametr REGION

Jak vytvořit parametr je vysvětleno zde, jako povolené hodnoty (available values) zvolím dataset “filtr_region” a jako defaultní hodnoty (default values) zvolím rovněž tento dataset. Default values znamená, že při spuštění reportu budou zaškrtnuty všechny hodnoty.

ssrs parametr multiple values ssrs multiple values get values from query

Nachystám jednoduchý SSRS report jako zobrazeni tabulky

Vůbec se s tím nemažu a zobrazuji pouze tabulku s hodnotami hlavního datasetu, který jsem si nachystal a zobrazím si náhled (Preview), vypadá to takto:

ssrs report preview

V tomto bodě máme problém jak provázat parametr s datasetem

Pokud nemáme povolenou volbu allow multiple values, tak je řešení jednoduché, protože můžeme z parametru předávat pouze 1 hodnotu, to jsem řešil v 5. díle o SSRS o nastavení parametru. Jak to ale udělat, pokud nám z parametru jde více hodnot, které jsou odděleny středníkem?

  • Postupujeme podle obrázků, nejprve na hlavním datasetu Zakaznici přidáme WHERE klauzuli a vložíme do ní podmínku Region in @REGION (náš parametr) –  1. obrázek
  • Pak je ještě potřeba vypořádat se s tím, aby byl parametr poslán do SQL dotazu ve správném tvaru. K tomu se používá SSRS Expression, které se nastavuje v záložce “Parameters” a napíšeme tam:

=SPLIT(JOIN(Parameters!REGION.Value,”,”),”,”) – to nám vytvoří čárkou oddělené vybrané hodnoty v parametru ,které nám posléze zpracuje SQL dotaz

ssrs multiple values parameter

ssrs multiple value parameter nastaveni parametru pres expression

Funkční SSRS report

Nyní by měl filtr fungovat a pokud vybereme napříklar region Austrálie, Canada tak se nám zobrazí zákazníci pouze za tyto dva regiony

ssrs multiple values vysledek reportu

Dalším způsobem jak se dá problém předání hodnot z parametru do SQL dotazu je přes funkci. V databázi si vytvoříme table funkci, která nám rozparsuje hodnoty v parametru do tabulky a tuto tabulku pak v datasetu INNER JOINUJEME. Tím výsledek automaticky omezíme.

5/5 - (2 votes)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *