Ako sa pripojiť k dátovým modelom na Power BI Report Serveri

Power BI Report Server sa používa na publikovanie reportov Power BI na vlastné vnútropodnikové servery. Málokto však vie, že tento server má v sebe zabalené SQL Server Analysis Services 2019 Tabular, skrátene SSAS Tabular 2019, aby vedel poskytnúť funkcionalitu Power Query a PowerPivotu pre reporty Power BI rovnako, ako tomu je vo všetkých verziách Power BI. A podobne ako existuje diagnostický port Power BI Desktopu, tak je možné sa pripojiť k dátovým modelom pre účely diagnostiky aj na SSAS Tabular v Power BI Report Serveri. A vy ho viete využiť napr. na zdokumentovanie už nasadeného dátového modelu na serveri cez Power BI Analyzer. Či na zdieľanie dátového modelu z reportu s užívateľmi v Exceli.

Port interného SSAS Tabularu

Podľa oficiálnej dokumentácie načúvajú interné Analysis Services na porte 5132. Takže na tento port sa pripojíte rovnako, ako aj na diagnostický port Power BI. Problém však je v tom, že tento SSAS Tabular počúva iba na lokálne pripojenia, a teda je možné sa k nemu pripojiť iba z lokálneho stroja. A keďže nepredpokladám, že admin servera vám to dovolí, tak si potrebujeme najprv povoliť, aby SSAS Tabular počúval aj na vonkajšie pripojenia z ľubovoľného počítača.

Tento interný SSAS Tabular má svoj vlastný konfiguračný súbor, ktorý sa nachádza v jednom z podadresárov inštalačného adresára Power BI Report Servera – konkrétne v podadresári “PBIRS\ASEngine”. Ak máte default inštaláciu Power BI Report Servera, tak celá tá cesta bude takáto:

C:\Program Files\Microsoft Power BI Report Server\PBIRS\ASEngine

Tam sa nachádza klasický konfigurák SSAS, a to msmdsrv.ini. A cez neho sa menia vlastnosti aj tej inštancie SSAS Tabularu.

V tomto konfiguráku si nájdite nastavenie “ListenOnlyOnLocalConnections”. Štandardná hodnota je “1”, čo znamená, že SSAS Tabular načúva iba na lokálne pripojenia. Preto ju zmeňte na 0, čo znamená, že bude počúvať na všetky pripojenia:

Potom tento súbor uložte, a reštartujte Power BI Report Server. SSAS Tabular potom bude počúvať aj na externé pripojenia. Len nezabudnite na to, že keď budete robiť upgrade Power BI Report Serveru, tak sa tento konfigurák prepíše na pôvodné hodnoty. Preto si tieto nové nastavenia niekam zapíšte, a po upgrade ich nastavte znova.

A ako sa pripojiť k dátovým modelom?

Cez ľubovoľného DAX alebo OLAP klienta – čiže napr. cez Excel, Power BI Desktop, SQL Server Management Studio, Power BI Analyzer, DAX Studio, SQL Server Reporting Services, a pod..

Ak sa napr. chcete pripojiť cez SQL Server Management Studio, tak:

  1. ako typ servera vyberte Analysis Services,
  2. ako názov servera uveďte názov vášho servera aj s portom 5132.

V mojom prípade sa môj server nazýva PBIRS, a preto sa pripojím na server “PBIRS:5132”:

…a voilááá, som pripojený k internému SSAS Tabularu v Power BI Report Serveri, kde vidím všetky databázy na serveri:

Ak sa chcete pripojiť napr. z Power BI Analyzera, tak ako názov serveru zadajte názov vášho serveru, a ako port uveďte 5132:

Ak máte na serveri viac ako 1 report (aké prekvapivé), tak Power BI Analyzer vie zdokumentovať iba dátový model v prvej databáze. Ak chcete databázu pre iný report, tak si zistite alebo tipnite jej poradové číslo v DMV, a potom v Rozšírenom editore Power Query zmeňte vo funkcii ZistiDB, v piatom riadku odspodu, index databázy v zložených zátvorkách:

{0} je prvá databáza, {1} je druhá databáza, a pod.. A ak neviete, ktorá to je, tak jednoducho skúšajte postupne všetky, alebo si to zistite napr. cez DAX Studio, cez ktoré sa pripojíte rovnakým spôsobom (treba vybrať typ pripojenia “Tabular Server”). Alebo cez Power BI Desktop, pomocou konektora Analysis Services, pripojením sa na “server:port”.

Nie je to síce pohodlná možnosť, ale pre diagnostické či dokumentačné účely je to vždy 100x lepšie, ako hádať či prepisovať všetko ručne. Prípadne ak chcete zdieľať dátový model z reportu aj v iných aplikáciách, najmä v Exceli či vo viacerých Power BI Desktopoch, a nechcete migrovať dátový model z reportu na samostatný SSAS Tabular. V tomto prípade je znalosť tento funkcie jednoducho nenahraditeľná 🙂