Power BI — Do Excel para SQL Server
O Power BI é uma ferramenta muito versátil, o qual você consegue criar um cenário de testes usando uma planilha do Excel, adicionar todos os tipos de gráficos, criar medidas, publicar e validar com o usuário.
Após esta fase, entra para produção, só que os dados estão no SQL Server. Será que terei que refazer tudo só porquê a fonte de dados mudou? Claro que não, porém esta resposta é o que muitos não sabem como alterar o projeto e acabam exportando os dados do SQL Server para uma planilha do Excel, e aí vira uma rotina.
Vamos ao projeto no Power BI. Criei um novo PBIX e apontei para a planilha do Excel, contendo os seguintes campos a seguir. Para facilitar, veja que já mostrei a linguagem M no Power Query (clique no botão Editor Avançado):
let
Fonte = Excel.Workbook(File.Contents(“C:\Treinamentos\BaseExcelPBI.xlsx”), null, true),
Dados_Sheet = Fonte{[Item=”Dados”,Kind=”Sheet”]}[Data],
#”Cabeçalhos Promovidos” = Table.PromoteHeaders(Dados_Sheet, [PromoteAllScalars=true]),
#”Tipo Alterado” = Table.TransformColumnTypes(#”Cabeçalhos Promovidos”,{{“Cliente”, Int64.Type}, {“Município”, type text}, {“UF”, type text}, {“UFDescricao”, type text}, {“Gerente”, Int64.Type}, {“Vendedor”, Int64.Type}, {“Categoria”, type text}, {“Produto”, type text}, {“Data”, type date}, {“Qtde”, Int64.Type}, {“Preço”, Int64.Type}, {“Meta”, type number}})
in
#”Tipo Alterado”
Clique em Fechar e Atualizar para retornar ao Power BI. Foque apenas nos campos Categoria, Produto, Qtde e Preço. Em seguida crie uma nova Coluna com a fórmula:
Faturamento = Dados[Qtde] * Dados[Preço]
Adicione alguns objetos gráficos, salve o PBIX e pronto.
Agora vem a parte crucial que muitos desistem. Com o projeto pronto como alterar a fonte de dados para qualquer outro tipo, banco de dados, csv, json, etc? O primeiro passo é ter certeza que os nomes dos campos e os respectivos tipos estejam iguais aos que você usou no Excel. Não necessariamente iguais, pois é possível alterar o tipo de Texto para Número, por exemplo, após apontar no Power Query, mas aí precisará fazer isto via linguagem M.
Mas, sempre tem um truque que costumo usar, mesmo pra produtividade em si. Eu costumo criar uma nova fonte e apontar, neste caso, para o SQL Server, o qual contém a tabela ou consulta.
Para efeito de artigo usei o banco de dados Northwind, criei uma consulta chamada BI_ProdutosVendidos. Note que os nomes dos campos estão em inglês e os renomeei de acordo os nomes que espero no Power Query. Isto facilitará tudo, pois assim que a fonte for reconhecida não teremos problemas com os nomes dos campos.
Veja a instrução T-SQL que pega dados de duas tabelas relacionadas:
SELECT dbo.Categories.CategoryName AS Categoria, dbo.Products.ProductName AS Produto, dbo.Products.UnitPrice AS Preço, dbo.Products.UnitsInStock AS Qtde
FROM dbo.Categories INNER JOIN
dbo.Products ON dbo.Categories.CategoryID = dbo.Products.CategoryID
Retorne ao Power BI, você pode até fazer no mesmo projeto, clique em Obter Dados, SQL Server e forneça todos os dados necessários de conexão para se chegar à consulta.
Neste caso, forneci apenas o nome do servidor e o banco de dados. Deixei o tipo como Importar. Caso você não tenha uma consulta criada no SQL Server, no campo instrução SQL poderia digitar todo o T-SQL e pronto. Mas, como gravei a consulta, quando clicar no botão OK, serão exibidas todas as tabelas e consultas para seleção. Neste caso, selecione BI_ProdutosVendidos.
Clique no botão Carregar. Uma dica: se por acaso os campos numéricos estivessem alinhados à esquerda é porque são textos, e neste caso, você já poderia clicar no botão Transformar Dados para ir direto ao Power Query e alterar os tipos.
Veja a linguagem M como ficou para esta fonte de dados. Isto já é um sinal que se eu pegar este código e substituir qualquer outra fonte, Excel por exemplo, o apontamento já mudará na hora.
let
Fonte = Sql.Database(“EARTH”, “NORTHWND”),
dbo_BI_ProdutosVendidos = Fonte{[Schema=”dbo”,Item=”BI_ProdutosVendidos”]}[Data]
in
dbo_BI_ProdutosVendidos
Como o risco de erros é grande, salve o arquivo. Em seguida, no Power Query, delete a fonte do Excel (Dados) e renomeie esta BI_ProdutosVendidos para Dados. Pronto, agora temos apenas a fonte Dados que aponta para o SQL Server. Clique no botão Fechar e Salvar para retornar ao Power BI.
Note que sem fazer nada o primeiro gráfico de pizza já mostra os novos dados. Mas é exibido um erro na tabela, afinal a coluna Faturamento não existe, portanto, recrie.
Faturamento = Dados[Preço] * Dados[Qtde]
Formate os campos numéricos de acordo a necessidade e pronto. Em segundos alteramos do Excel para o SQL Server.
Salve o projeto e publique para que todos possam visualizar já com os dados oriundos do banco de dados.
Caso a sua estrutura de tabelas no Power BI tenha relacionamentos, sugiro eliminar os relacionamentos antes de realizar o processo, pois a chance de ter conflitos de dados órfãos é enorme.
Conclusão
Este procedimento é usado com frequencia na criação de protótipos, independente da fonte de dados. Tenha em mente que todos os passos realizados são descritos passo a passo na linguagem M, portanto, cabe um estudo pra entender e como alterar diretamente nela.
Boa sorte, sucesso nos projetos de Power BI, se precisar treinar o seu time, fale comigo rehaddad@msn.com
No canal http://www.youtube.com/c/RenatoHaddadMVP você tem uma playlist com vários vídeos de Power BI com dicas e truques.