Reporting Services

Microsoft SQL Server 2016 SP1 – Atualização Cumulativa 9

A Microsoft disponibilizou para download nesta semana a Atualização Cumulativa 6 para SQL Server 2016 SP1. Atualização Cumulativa 6 para SQL Server 2016 SP1 O artigo KB4037354 com informações sobre o que a atualização traz de novo ainda não está … Continuar lendo

Microsoft SQL Server 2016 – Atualização Cumulative 9

A Microsoft disponibilizou para download nesta semana a Atualização Cumulativa 9 para SQL Server 2016. Atualização Cumulativa 9 para SQL Server 2016 De acordo com o artigo KB4037357 publicado pela Microsoft em seu site de suporte, esta atualização contém correções … Continuar lendo

Creating Custom SSRS Security Roles

When you have a consolidated environment, usually you don’t want to set very broad permissions to users, most of the times you only want them to see what is really necessary. Doing that in the Database Engine is quite easy, but what about Reporting Services? We know that SSRS exposes the following default roles: Browser, […]

SQL Server Mobile Report Publisher

Olá Pessoal! Juntamente com o SQL Server 2016, a Microsoft disponibilizou o novo Reporting Services que está com a cara nova em sua sexta edição. Uma série de novos recursos estão disponíveis e entre eles um que me chamou atenção, o Mobile Report. Para quem não lembra a Microsoft adquiriu ano passado o software Datazen […]

Livro – Do Banco de Dados Relacional à Tomada de Decisão

Fala galera, é com muita alegria que compartilho com vocês a realização de um sonho. Sempre tive vontade de escrever um livro e neste ano consegui. Me dediquei por alguns meses em elaborar um conteúdo Read More ...

Personalizando a paleta de cores do gráfico no Reporting Services 2012

Fala galera, vocês já se depararam com a necessidade de colocar uma determinada paleta de cores em um gráfico do seu relatório para encaixar na identidade visual do seu cliente? A solução de alterar elemento Read More ...

Utilizando parâmetros no Reporting Services II


Bom tarde pessoal, hoje vou mostrar outra forma de inserir um filtro em um relatório do Reporting Services, mas só que desta vez, estaremos criando o filtro direto na consulta T-SQL.

Essa forma de filtro pode melhorar a performance de alguns relatórios, porque ao contrário do primeiro exemplo, onde a consulta carrega todos os dados e a aplicação realiza o filtro, neste caso, o banco é quem realiza o filtro, então, os dados trafegados são controlados, e se o relatório for atualizado 5 vezes por exemplo com filtros diferentes, somente os dados necessários serão consultados. Já no exemplo anterior, sempre é carregado todos os dados, então, se tivermos 5 atualizações, teremos 5 vezes todos os dados da consulta sem filtros solicitado ao banco.


 Veja o plano de execução estimado da consulta:


 No final da consulta sem filtro, temos um número de linhas estimado em 10,0187.




Já na consulta filtrada, esse número cai para 4. Se temos menos linhas, com certeza, teremos menos trabalho para trafegar esses dados,  o que será mais eficiente para o relatório. 


Voltando ao Reporting, vamos utilizar a seguinte consulta T-SQL para o dataset:


SELECT


       E.EnglishProductCategoryName"CategoryName",

       B.CalendarYear "Year",

       B.MonthNumberOfYear "Month",

       SUM(A.SalesAmount - A.TotalProductCost) AS "Profit"

FROM

       FactInternetSalesA

       INNER JOIN

       DimDate B

             ONA.OrderDateKey = b.DateKey

       INNER JOIN

       DimProductC

             ONA.ProductKey = C.ProductKey

       INNER JOIN

       DimProductSubcategoryD

             ONC.ProductSubcategoryKey =d.ProductSubcategoryKey

       INNER JOIN

       DimProductCategoryE

             OND.ProductCategoryKey = E.ProductCategoryKey


WHERE


       B.CalendarYear = @Year

       AND

       B.MonthNumberOfYear IN (@Month)

                   

GROUPBY

       E.EnglishProductCategoryName,

       B.CalendarYear,

       B.MonthNumberOfYear,

          B.EnglishMonthName

ORDERBY

       B.CalendarYear,

       B.MonthNumberOfYear




Neste exemplo, estarei utilizando um dataset incorporado no relatório, mas se quiser, você pode criar os shared datasets, e simplesmente adiciona-los ao relatório.


Na aba Report Data (Ctrl + Alt + D) do relatório, vamos adicionar o data source para conexão com o banco. Neste caso, estou adicionando o Shared Data Source criado no post anterior.




Entre com  a consulta T-SQL com os filtros de ano e mês.





Olhando a aba Parameters, você vai notar que os parâmetros foram criados, clique em OK.





Olhando a pasta Parameters, você vai notar que os parâmetros foram criados automaticamente.



 Vamos adicionar um novo dataset para trazer as informações de ano que irão alimentar o parâmetro Year.  Utilize o seguinte código T-SQL:


SELECTDISTINCT

       B.CalendarYear "Year"

FROM

       FactInternetSalesA

       INNER JOIN

       DimDate B

             ONA.OrderDateKey = b.DateKey

ORDERBY

       B.CalendarYear





O mesmo vamos fazer para trazer dados dos meses, veja que neste caso, estamos filtrando o ano.  Utilize o seguinte código T-SQL:


SELECTDISTINCT

       B.MonthNumberOfYear "Month"

FROM

       FactInternetSalesA

       INNER JOIN

       DimDate B

             ONA.OrderDateKey = b.DateKey

WHERE

             B.CalendarYear = @Year

ORDERBY

       B.MonthNumberOfYear




Na aba Fields, vamos criar o campo MonthName, clique em Add, selecione Calculate Field, coloque o nome do campo e use a seguinte expressão para trazer o nome do mês: =MonthName(Fields!Month.Value)

Repita este passo no dataset da consulta principal, com isso, podemos deixar o relatório com uma interação mais amigável com o usuário final.




No parâmetro Year, altere o tipo para Integer.




Na aba Available Values, selecione a opção Get values from a query, e configure os campos utilizando o dataset Year_data. Neste exemplo, não irei configurar valores default para o parâmetro, você pode ver como realizar esta configuração no post anterior.




No parâmetro Month, altere o tipo para integer e marque a opção Allow multiple values na aba General , e na aba Available Values, vamos fazer igual a configuração do parâmetro ano, configure para pegar valores do dataset Month_data, conforme a imagem.




Agora, seguindo o exemplo de criação do post anterior, o relatório será o mesmo, então qualquer dúvida clique aqui para ver o passo a passo para configurar o relatório, vamos configurar o gráfico de barras, só que em Category Groups, ao invés do campo Month, utilize o campo MonthName.




Para o título do gráfico, utilize a seguinte expressão: ="Internet Sales Profit by Category in " & CStr(Parameters!Year.Value).




Na janela Series Properties , utilize a seguinte expressão para o Tooltip: =FormatCurrency(Fields!Profit.Value).





Em Category Group Properties, na aba Sorting, altere a opção MonthName para Month. Assim, os meses no gráfico apareceram ordenados corretamente, e não por ordem alfabética.





Com o relatório configurado, é só dar o Preview. Como você pode ver, os parâmetros estão encadeados, então só vou ter o Month habilitado quando o parâmetro Year for selecionado.




Como podemos ver, só tenho disponível para seleção no parâmetro Month os meses com informação disponível para o ano de 2008.




Pronto, o relatório exatamente igual ao do post anterior, só que agora com os parâmetros configurados para serem preenchidos automaticamente e encadeados.


Com isso, terminamos aqui com as configurações de parametrização no Reporting Services.


Em breve, como parametrizar relatórios que consomem informações de um cubo do Analysis Services.


Qualquer dúvida, estamos ai para ajudar. Se quiserem, sugestões sobre assuntos para novos posts são bem vindas.


Abraços! 


Utilizando parâmetros no Reporting Services I


Acabou as férias, e a rotina de trabalho começou pegando fogo neste início de ano, e como sempre, devemos estar sempre preparados para qualquer problema.  A alguns dias, uma amiga me perguntou se ela poderia parametrizar um relatório que trazia informações do mês corrente, mas ela gostaria que o usuário pudesse selecionar outros meses. Dei uma rápida explicação de como ela poderia proceder neste caso, mas ainda assim, para ajudá-la, resolvi fazer um post mostrando como ela poderia adicionar um filtro no relatório dela.


Há duas formas de criar filtros, uma alterando a consulta SQL e adicionando parâmetros (@param) nas consultas nos datasets, isso irá gerar automaticamente os parâmetros, e ai temos que definir como será feita a entrada de informações para esses parâmetros, seja por digitação, uma lista com um único valor ou múltiplos valores.


A outra forma é criarmos os filtros na propriedade do dataset, sem precisar alterar consultas, e se formos pensar no caso da minha amiga, provavelmente ela está consultando informações de uma lista do SharePoint, sendo a opção mais viável para ela.


Vou utilizar o AdventureWorksDW2012 para o exemplo, e não faremos nada muito complicado, então segue uma consulta da base relacional. Lembre-se que nestes exemplos, ainda não estou me preocupando com performance de consultas, isso ainda será assunto para vários posts durante o ano.


SELECT

       E.EnglishProductCategoryName"CategoryName",

       B.CalendarYear "Year",

       B.MonthNumberOfYear "Month",

       SUM(A.SalesAmount - A.TotalProductCost) AS "Profit"

FROM

       FactInternetSalesA

       INNER JOIN

       DimDate B

             ON A.OrderDateKey = b.DateKey

       INNER JOIN

       DimProductC

             ON A.ProductKey = C.ProductKey

       INNER JOIN

       DimProductSubcategoryD

             ON C.ProductSubcategoryKey =d.ProductSubcategoryKey

       INNER JOIN

       DimProductCategoryE

             ON D.ProductCategoryKey = E.ProductCategoryKey

GROUPBY

       E.EnglishProductCategoryName,

       B.CalendarYear,

       B.MonthNumberOfYear

ORDERBY

       B.CalendarYear,

       B.MonthNumberOfYear



O primeiro exemplo, irei criar um shared dataset, onde a informação não poderão ser alterada  na consulta do relatório, simulando o filtro direto na informação recebida para o relatório.


Utilizando o SQL Server Data Tools, vamos abrir um projeto para o Reporting Services. Você pode ver como criar um projeto e relatório no Reporting Services aqui.


 Na aba Solution Explorer (Ctrl + Alt + L), vamos criar um Shared Dataset para ser utilizado como camada de dados de acesso ao AdventureWorks 2012.



 Defina um nome e tipo para a conexão (no nosso caso, SQL Server), e clique em Edit para configurar a conexão.


Entre com o Servidor de Banco de Dados e selecione o banco AdventureWorksDW2012. Teste a conexão e clique em OK.


Agora vamos criar a camada de dados, criando um Shared Dataset. Depois de criado, esta consulta pode ser utilizada em diversos relatórios.



Entre com um nome para o dataset, selecione o data source criado a pouco, e entre com a consulta SQL a ser utilizada para os dados necessários para o relatório. Clique em OK.




Agora que temos os dados pronto, vamos criar um relatório com um gráfico de barras simples para o exemplo. Clique com o botão direito em Reports,  Add e New Item, para adicionar um novo objeto. Você pode criar o relatório no Wizard, mas não estarei utilizando esta opção agora.





Selecione a opção Report, entre com um nome para o relatório e clique em Add.




Abra a aba Report Data (Crtl + Alt + D) e vamos adicionar o dataset criado a pouco. Clique com o botão direito em Datasets e clique Add Dataset.




Como podemos ver, podemos selecionar a opção para usar um dataset incorporado ao relatório, não podendo ser utilizado por nenhuma outra camada, ou podemos utiliza o shared dataset que criamos. Como podem ver, aqui, não temos acesso a nenhum código de consulta para os dados. Somente acesso a eles. Vamos criar os parâmetros, e depois vamos configurar os filtros.




Ainda na aba Report Data, clique com o botão direito em Parameters e clique em Add Parameter...



Entre com um nome para o parâmetro, a forma como o usuário ira ver o nome do parâmetro no relatório, o tipo dele, como sabemos que na consulta a coluna ano retorna um valor inteiro, se não especificarmos o tipo certo e deixarmos como Text, o relatório irá gerar um erro no tipo de dados na hora da comparação.





Em Available Values, vamos definir os valores do ano manualmente. Poderiamos utilizar uma consulta para popular este parâmetro, e vamos fazer isso no próximo exemplo. Por enquanto, vamos entrar com os valores manualmente.





Na aba Default Values, vamos colocar manualmente o valor 2008, mas se isso estivesse que ser preenchido com informações do sistema, você poderia utiliza a expressão =Year(Now) para pegar o ano corrente das configurações de tempo do servidor. Clique em OK.


Vamos repetir a mesma operação para criar o parâmetro Mounth.




Seguindo a mesma linha de raciocínio do exemplo anterior, vamos configurar o parâmetro de meses, onde podemos ver que podemos selecionar múltiplos valores.





Vamos preencher os labels com os nomes dos meses e definir seus valores como inteiros, assim, assim não teremos problemas na hora de validação de tipo de dados nos filtros.





Da mesma forma que o ano, podemos utilizar a expressão =Month(Now)  para pegar o mês corrente do sistema. No exemplo estou utilizando o ano 2008 e o mês de julho como valores default, porque sei que são os últimos dados registrados no banco, simulando como se hoje fosse julho de 2008.





Agora vamos configurar o dataset para que os parâmetros passem seus valores como filtros no relatório. Clique no dataset do relatório criado e selecione a opção Dataset Properties.





Na aba Filters, é só configurar conforme a imagem, associando os parâmetros aos filtros desejados. Note que na opção Year só podemos utilizar um valor, na opção Month, podemos selecionar múltiplos valores, tendo operadores diferentes.




Vamos adicionar um gráfico de barras no corpo do relatório. Na aba Toolbox (Crtl + Alt + X), selecione a opção Chart, selecione a aba Column e selecione o primeiro gráfico da lista.


Para as configurações do gráfico, defina o campo Profit em Values, Month em Category Groups e CategoryName em Series Group. Com isso, temos os eixos e valores do relatório configurados.



Vamos customizar o título do relatório, clique sobre a área ChartTitle, cique com o botão direito do mouse e clique em Title Properties.




Para customizar o título do relatório, podemos concatenar o nome do relatório com o ano de exibição das informações. Para isso é só colocar a expressão ="Internet Sales Profit by Category in " & CStr(Parameters!Year_Param.Value) no campo Title text.



Podemos também alterar a forma como os valores serão apresentados na opção Vertical Axix Properties. Aqui, só alterei a forma de apresentação dos valores para Currency e defini o símbolo para a moeda americana. Também configurei para que os valores sejam apresentados em Milhares, então, para melhor visualizar, alterei o text box Axis Title para Thousands. Alterei também o Horizontal Axis Title para Month.


Clicando sobre as colunas com o botão direito do mouse e clicando em Series Properties, podemos editar para que quando passemos o mouse sobre uma coluna, ele apresente o valor da mesma.



No campo ToolTip, entre com a seguinte expressão: =FormatCurrency(Fields!Profit.Value)





Pronto, já temos o relatório pronto para uso. Clique em Preview para ver como ficou, deixe a seta do mouse sobre uma das colunas, e verifique o valor. Como podemos ver, temos os valores para o que deveria ser o ano e mês corrente, mas e se quiser ver todos os meses de 2008?





Agora vamos testar os parâmetros que criamos, selecione todos os meses no para Month e clique em View Report.




Pronto, podemos ver que os meses foram plotados no gráfico, agora só para finalizar, o cliente quer ver as informações do ano passado (no nosso caso, 2007), é só alterar o parâmetro de ano e executar o relatório novamente.



Pronto, conforme podemos ver no título do relatório, temos todos os meses de 2007. Agora é só fazer o deploy no SharePoint e deixar o usuário desfrutar do relatório parametrizado.



Como pudemos ver, não é complicado criar filtros no relatório, mas temos um problema, os valores dos parâmetros foram colocados manualmente, o que pode ter que gerar manutenção para a adição de novos anos. No próximo post, vou mostrar como parametrizar o relatório direto na consulta do relatório, e como fazer para alimentar os parâmetros com valores validos automaticamente, e ainda fazer os parâmetros serem visualizados em cascata, evitando valores que não existam, como no exemplo de marcação de todos os meses   relnoatório, sendo que os meses de agosto para cima eram desnecessários, uma vez que não há valor para eles em 2008.


Até lá pessoal!

Instalando o PowerPivot no SharePoint 2013


Buenas pessoal, todo estudo que tenho feito para o PowerView me leva direto ao PowerPivot, como terei que habilitar esta feature no SharePoint 2013, percebi em algumas leituras que a sua  instalação no SQL Server 2012 só serve para o SharePoint 2010, e que o instalador para a nova versão se encontrava disponível no Service Pack 1 do SQL Server 2012. Procurei alguns links para baixar o sppowerpivot.msi, mas como já tinha o Service Pack na máquina, para economizar tempo, resolvi descompactar e copiar o arquivo dali mesmo. 
O processo é bem simples, e o SP1 do SQL Server vem em um arquivo no formato executável (exe).





No prompt de comando, no modo administrador, execute o seguinte comando: <Service Pack> /X

No meu caso, ficou SQLServer2012SP-KB2674319-ENU.exe /X .




Uma janela se abre pedindo o local para onde você quer extrair o arquivo.





Na pasta para onde você extraiu o arquivo, navegue para a pasta: 1033_enu_lp\x64\setup e localize o arquivo sppowerpivot.msi.





Execute o arquivo para iniciar sua instalação.





Aceite o termo de licença.




Por padrão, todas as features já vem habilitadas para a instalação.





Agora é só instalar as features.






No menu iniciar, podemos ver agora o PowerPivot for SharePoint 2013. 
Execute-o em modo de administrador. 
Para executar esta instalação, você deve estar logado com um usuário administrador da farm.






A opção configurar vem marcada por padrão, e também é a unica opção disponível! Clique em OK.





O programa irá analisar o seu ambiente de SharePoint e irá gerar os scripts de configuração.






Depois da análise, você tem que verificar os warnings ou erros gerados para poder continuar com a instalação.





No meu caso, os warnings foram gerados pela falta de senha para a conta de domínio administradora da farm.





Entre com  a senha e clique em Validar.





Depois de tudo validado, temos os scripst prontos para serem executados.





Na aba Script, você pode ver o código gerado para execução.





Agora é só clicar em Executar.





Confirme a execução.





Pronto, agora vamos conferir se o serviço já está disponível na Central de Administração do SharePoint .



 Na opção Application Management, selecione a opção Manage services on server, e procure pelo serviço SQL Server PowerPivot System Service.


Pronto, mais um serviço para a plataforma de BI do SQL Server disponível para uso.

 

Em breve, vamos criar o repositório no SharePoint 2013, e alguns exemplos no Excel 2013.


Até lá!

















Go to Top