23. května 2016

Power BI – Parametry dotazu

V minulém článku o Power BI jsem sepisoval, co nového v dubnové aktualizaci http://www.neoral.cz/2016/05/power-bi-update-duben-2016.html. U parametrizace dotazů jsem psal, že je tohle si zaslouží samostatný článek. Dnešní článek. Než přibyla možnost parametrizovat dotaz, bylo celkem utrpení přemapovat Power BI report na jiný server/databázi. Pokud jste používali import, museli jste překlikat všechny dotazy a názeve serveru/db přepsat. Pokud pracujete s Reporting Services, Váš tento problém byste vyřešili pomocí Sdílených datových zdrojů (Shared Datasource). V Power BI desktopu problém vyřešíte právě pomocí parametrů. A nejen tento problém. Tak pěkně postupně
Parametrizace datového zdroje
Co se bude měnit? Pravděpodobně název serveru a/nebo název databáze. Začnu pouze jendoduchým příkladem s parametrizací názvu serveru.
Po startu Power BI desktopu jdu do dialogu Home, Edit Queries, Edit Queries, Manage Parameters, New Parameter
Name napíši SERVER_NAME, nechám zatrhlé required pro povinný parametr. Datový typ text. Allowed values měním na list of values pro „combo box“ A vpisuji povolené hodnoty tečku a localhost (což je sice to stejné, ale pro ilustraci chování stačí). Výchozí hodnotu default value můžu použít tečku a stejně tak current. Rozdíl mezi default hodnotou a current je, že default se použije jako výchozí pro nové soubory (na základě šablony – taky novinka poslední aktualizace). Current value je hodnota použitá v aktuálním souboru.
Parametr mám nachystaný a můžu se pustit do tvorby datového zdroje. Například SQL Serveru.
Get data, from SQL Server a při volbě serveru můžu vybrat parametr místo konstanty
Vybírám AdventureWorksDW2012 a tři tabulky. Close and apply. Po načtení dat můžu změnít odkaz na zdrojový server ze záložky Home, Edit Queries, Edit Parameters. Po potvrzení dojde k opakovanému načtení dat z druhého zdroje.
Jak vypadá M kód pod dotazem?
let
   Source = Sql.Databases(SERVER_NAME),
   AdventureWorksDW2012 = Source{[Name="AdventureWorksDW2012"]}[Data],
   dbo_DimDate = AdventureWorksDW2012{[Schema="dbo",Item="DimDate"]}[Data]
in
   dbo_DimDate
Čili můžete opravit i stávající skripty pouze přepsáním konstant v uvozovkách na jméno parametru. Využití je široké, kromě parametrizace datového zdroje jako takového bychom mohli vložit podmínku do dotazu při načítání dat. Udělat například dynamické měřítko na základě výběru parametru Měna. Ty stejné věci na které používáme parametry v SSRS.
Závěr

Parametry dotazů jsou velmi důležitou funkcí, která umožní mimo jiné snadné přemapování z vývojového serveru na server produkční. V současné době jdou měnit pouze v Power BI desktopu a umí jen jednohodnotové parametry. Časem se dočkáme vícepoložkových parametrů a možnosti měnit hodnoty z portálu Power BI.com A věřím, že to nebude moc dlouhá doba.

2 komentáře:

  1. Dnes jsem, velmi bolestivě po dvoudenním hledání problému, zjistil pěkný bug. Pokud zparametrizujete datový zdroj, jak ukazuji v tutorialu, způsobí to chybu při aktualizacích přes Enterprise Gateway. Tento bug jsem nahlásil, prosím hlasujte pro podporu opravy této chyby http://community.powerbi.com/t5/Desktop/Server-name-parameterization-causes-refresh-issues/m-p/38395#U38395 Díky Jirka

    OdpovědětVymazat