{"id":3297,"date":"2017-01-05T12:14:22","date_gmt":"2017-01-05T11:14:22","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=3297"},"modified":"2023-08-22T20:51:04","modified_gmt":"2023-08-22T18:51:04","slug":"interaktywne-raportowanie-przy-uzyciu-ms-reporting-services-sharepoint-i-ms-excel-services","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/interaktywne-raportowanie-przy-uzyciu-ms-reporting-services-sharepoint-i-ms-excel-services\/","title":{"rendered":"Interaktywne raportowanie przy u\u017cyciu MS Reporting Services, Sharepoint i MS Excel Services"},"content":{"rendered":"\n<p>Narz\u0119dzie do raportowania danych Reporting Services stanowi cz\u0119\u015b\u0107 pakietu MS SQL Server i od wielu lat jest wykorzystywane w organizacjach do prezentacji danych w postaci raport\u00f3w. Narz\u0119dzie to posiada bardzo du\u017co mo\u017cliwo\u015bci przy tworzeniu zestawie\u0144, wykres\u00f3w czy tabel, ale ma jednak te\u017c troch\u0119 niedoskona\u0142o\u015bci.<\/p>\n\n\n\n<p>Jedna z uwag pod adresem Reporting Services zg\u0142aszanych przez u\u017cytkownik\u00f3w jest fakt, \u017ce raporty s\u0105 bardzo statyczne i nie pozwalaj\u0105 na du\u017co interakcji podczas wy\u015bwietlania raportu. Obecnie Microsoft oferuje ju\u017c aplikacje, kt\u00f3re w pewien spos\u00f3b odpowiadaj\u0105 na te problemy (Power View, Power BI). Jednak istotne zmiany w Reporting Services nie zosta\u0142y do tej pory zaprezentowane.<\/p>\n\n\n\n<p>Jednym ze sposob\u00f3w na \u201eo\u017cywienie\u201d naszych raport\u00f3w jest wykorzystanie opcji Action. Dzi\u0119ki niej mo\u017cemy przekierowa\u0107 u\u017cytkownika do innego podraportu lub nawet zewn\u0119trznej strony co mo\u017ce zwi\u0119kszy\u0107 funkcjonalno\u015b\u0107 raportu. W tym artykule wykorzystamy mo\u017cliwo\u015bci skoroszytu Excela osadzonego na stronie Sharepoint. Za pomoc\u0105 linku URL mo\u017cna z poziomu raportu RS przekaza\u0107 informacje do filtr\u00f3w w Excelu i zaw\u0119zi\u0107 zakres danych wy\u015bwietlonych w raporcie Excel.<\/p>\n\n\n\n<p>Pierwsz\u0105 czynno\u015bci\u0105 powinno by\u0107 przygotowanie raportu w Excelu do kt\u00f3rego chcemy si\u0119 odwo\u0142a\u0107 z poziomu raportu Reporting Services. W naszym przypadku \u017ar\u00f3d\u0142em danych jest wielowymiarowa kostka danych stworzona w us\u0142udze SSAS. W Excelu kt\u00f3ry korzysta z kostki OLAP musimy utworzy\u0107 Slicery (Fragmentatory) &#8211; b\u0119d\u0105 one filtrowa\u0107 nasze dane.<\/p>\n\n\n\n<p>Aby te fragmentatory by\u0142y widoczne po osadzeniu skoroszytu na stronie Sharepointa musimy przej\u015b\u0107 do zak\u0142adki File -> Info -> Browser View Options, a nast\u0119pnie w zak\u0142adce \u201eParameters\u201d doda\u0107 interesuj\u0105ce nas fragmentatory do listy.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Browser-view-options-300x78-1.png\"><img decoding=\"async\" width=\"300\" height=\"78\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Browser-view-options-300x78-1.png\" alt=\"Browser View Options\" class=\"wp-image-23766\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/parametry-Excel-300x194-1.png\"><img decoding=\"async\" width=\"300\" height=\"194\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/parametry-Excel-300x194-1.png\" alt=\"Parametry excel\" class=\"wp-image-23768\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Tak przygotowany skoroszyt mo\u017cemy osadzi\u0107 na Sharepoint. Po dodaniu pliku do dokument\u00f3w w Sharepoint tworzymy pust\u0105 stron\u0119 i klikamy w link \u201eAdd a Web Part\u201d na dowolnej strefie, kt\u00f3ry poka\u017ce dost\u0119pne rodzaje web part\u2019\u00f3w u g\u00f3ry strony. W Kategoriach wybieramy kolejno \u201eBusiness Data\u201d -> Parts -> Excel Web Access. Nast\u0119pnie w oknie edycji Web Part\u2019u wskazujemy na lokalizacj\u0119 naszego arkusza Excel.<br>Kolejnym krokiem jest skonfigurowanie Web part\u00f3w, kt\u00f3re odpowiadaj\u0105 za filtrowanie danych. W tym celu u\u017cyjemy Web part\u2019u Query String (URL) Filter w kategorii Filters.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Sharepoint-filter.png\"><img decoding=\"async\" width=\"219\" height=\"131\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Sharepoint-filter.png\" alt=\"sharepoint-filter\" class=\"wp-image-3292\"\/><\/a><\/figure>\n\n\n\n<p>Po dodaniu web part\u00f3w do naszej strony nale\u017cy skonfigurowa\u0107 po\u0142\u0105czenia do fragmentator\u00f3w z pliku Excel. Przy konfigurowaniu po\u0142\u0105czenia (&#8222;Connections&#8221;) wybieramy opcje &#8222;Sending values to&#8221;, a nast\u0119pnie wybieramy kolejno nasze fragmentatory, kt\u00f3re pojawi\u0105 si\u0119 na li\u015bcie wyboru.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Sharepoint-slicer.png\"><img decoding=\"async\" width=\"300\" height=\"187\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Sharepoint-slicer-300x187.png\" alt=\"sharepoint-slicer\" class=\"wp-image-3293\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Sharepoint-slicer-300x187.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Sharepoint-slicer.png 494w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n\n\n\n<p>Tak skonfigurowan\u0105 stron\u0119 publikujemy na <a href=\"http:\/\/sii.pl\/offer-page\/sharepoint\/\">Sharepoint<\/a>.<\/p>\n\n\n\n<p>Nast\u0119pnym i ostatnim krokiem jest odpowiednie skonfigurowanie naszego raportu w us\u0142udze Reporting Services. W naszym zapytaniu MDX musimy doda\u0107 informacj\u0119 o unikalnych nazwach cz\u0142onk\u00f3w atrybut\u00f3w. Wtedy na poziomie kolumn i wierszy zapytania dostaniemy dok\u0142adn\u0105 informacj\u0119 o elementach wymiar\u00f3w, kt\u00f3re przeka\u017cemy poprzez link URL do fragmentator\u00f3w na stronie Sharepoint. Aby to uczyni\u0107 przed klauzul\u0105 <code>SELECT<\/code> w MDX mamy mo\u017cliwo\u015b\u0107 dodania kalkulowanych cz\u0142onk\u00f3w (Calculated Members) za pomoc\u0105 s\u0142owa kluczowego <code>WITH<\/code>. Aby wydoby\u0107 informacje o nazwach cz\u0142onk\u00f3w atrybut\u00f3w danego wymiaru, skorzystamy z funkcji <code>CURRENTMEMBER<\/code> i w\u0142a\u015bciwo\u015bci <code>UNIQUENAME<\/code>. Przyk\u0142ad sk\u0142adni takiego zapytania MDX mo\u017ce wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n\n\n\n<p><code>WITH<br>\nMEMBER [Measures].[Customer_Key] AS [Customer].[Customer ID].CURRENTMEMBER.UNIQUENAME<br>\nMEMBER [Measures].[Brand_Key] AS [Brand].[Brand ID].CURRENTMEMBER.UNIQUENAME<\/code><\/p>\n\n\n\n<p><code>SELECT<br>\n{<br>\n[Measures].[Customer_Key]<br>\n[Measures].[Brand_Key]<br>\n} ON COLUMNS,<br>\n{ [Customer].[Customer ID].MEMBERS<br>\n* [Brand].[Brand ID].MEMBERS<br>\n} ON ROWS<br>\nFROM<br>\n[MyOLAPCUBE]<\/code><\/p>\n\n\n\n<p>Do zapytania MDX dodajemy pozosta\u0142e interesuj\u0105ce nas dane i miary. Po dodaniu kodu MDX do projektu raportu i od\u015bwie\u017ceniu p\u00f3l w DataSet mo\u017cemy przej\u015b\u0107 do odpowiedniego pola w naszym raporcie, kt\u00f3re b\u0119dzie interaktywne i przeniesie nas do raportu osadzonego na Sharepoint. W danym polu klikamy prawym klawiszem myszy i wybieramy w\u0142a\u015bciwo\u015bci (Text box properties).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/SSRS-cell.png\"><img decoding=\"async\" width=\"281\" height=\"92\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/SSRS-cell.png\" alt=\"ssrs-cell\" class=\"wp-image-3295\"\/><\/a><\/figure>\n\n\n\n<p>Nast\u0119pnie przechodzimy do zak\u0142adki &#8222;Action&#8221; i wybieramy opcj\u0119 &#8222;Go to URL&#8221;. W oknie &#8222;Select URL:&#8221; wybieramy opcj\u0119 <em><strong>fx<\/strong><\/em> po prawej stronie, kt\u00f3ra pozwoli wprowadzi\u0107 w\u0142asne wyra\u017cenie.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/SSRS-action.png\"><img decoding=\"async\" width=\"300\" height=\"171\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/SSRS-action-300x171.png\" alt=\"ssrs-action\" class=\"wp-image-3294\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/SSRS-action-300x171.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/SSRS-action.png 561w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n\n\n\n<p>W wyra\u017ceniu musimy zawrze\u0107 informacje o adresie naszej strony oraz o parametrach jakie chcemy przekaza\u0107 do fragmentator\u00f3w. Aby odwo\u0142a\u0107 si\u0119 do poszczeg\u00f3lnych fragmentator\u00f3w, nale\u017cy w linku poda\u0107 nazw\u0119 jak\u0105 nadali\u015bmy poszczeg\u00f3lnym Webpart&#8217;om. Musimy uwa\u017ca\u0107 r\u00f3wnie\u017c na symbole specjalne takie jak &#8222;&amp;&#8221;. Przyk\u0142ad wyra\u017cenia, kt\u00f3re przekazuje informacje o dw\u00f3ch parametrach Brand i Customer znajdziemy poni\u017cej:<\/p>\n\n\n\n<p><code>=\"http:\/\/bi-portal.company.net\/sites\/Reports\/Customer.aspx?\"<br>\n+ \"Customer=\"+ Replace(Fields!Customer_Key.Value,\"&amp;\",\"%26\")<br>\n+ \"&amp;Brand=\" + Replace(Fields!Brand_Key.Value,\"&amp;\",\"%26\")<br>\n<\/code><\/p>\n\n\n\n<p>Dzi\u0119ki takim zabiegom mo\u017cemy znacznie &#8222;o\u017cywi\u0107&#8221; nasze raporty stworzone w Reporting Services i sprawi\u0107, \u017ce b\u0119d\u0105 one bardziej funkcjonalne a jednocze\u015bnie ciekawsze wizualnie.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;3297&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( vote: 1)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Interaktywne raportowanie przy u\u017cyciu MS Reporting Services, Sharepoint i MS Excel Services&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( vote: 1)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Narz\u0119dzie do raportowania danych Reporting Services stanowi cz\u0119\u015b\u0107 pakietu MS SQL Server i od wielu lat jest wykorzystywane w organizacjach &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/interaktywne-raportowanie-przy-uzyciu-ms-reporting-services-sharepoint-i-ms-excel-services\/\">Continued<\/a><\/p>\n","protected":false},"author":96,"featured_media":3448,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1316],"tags":[],"class_list":["post-3297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-miekko"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/pexels-photo.jpg","category_names":["Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/3297"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/96"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=3297"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/3297\/revisions"}],"predecessor-version":[{"id":23770,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/3297\/revisions\/23770"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/3448"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=3297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=3297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=3297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}