Consumindo dados do Azure IoT Hub com o Power BI

Olá Pessoal!

Tenho trabalhado cada vez mais com um portfólio extenso de produtos no Azure relacionados a Data Platform e com certa frequência, tenho que fazer algumas apresentações de soluções. Vou mostrar neste artigo um exemplo de como consumir dados com origem no Azure IoT Hub dentro do Power BI Service em tempo real.

Para esse exemplo utilizarei como fonte de dados o Raspberry Pi Web Simulator, que irá basicamente gerar dados de telemetria aleatórios de temperatura e umidade de forma continua. Você pode acessar através do link: https://azure-samples.github.io/raspberry-pi-web-simulator/

Para mais informações acesse o repositório dessa aplicação no Github: https://github.com/Azure-Samples/raspberry-pi-web-simulator

Utilizaremos 4 componentes na solução, a aplicação web do Raspberry Pi, o Azure IoT Hub, Azure Stream Analytics e Power BI Service.

O Azure IoT Hub é um serviço que atua como hub central de mensagens para comunicação entre as aplicações IoT e o dispositivo. Sendo assim, a primeira tarefa a ser feita é criação do serviço no Azure com a camada “F1: Free Tier”, dessa forma será possível enviar até 8 mil mensagens por dia sem custo, ideal para realização de testes.

Após a criação do serviço, devemos criar o “IoT Device” no qual será cadastrado o dispositivo e obtido a string de conexão a ser utilizada dentro do Raspberry Pi Web.

Devemos agora acessar a aplicação web do Raspberry Pi e alterar apenas a linhas 15, na qual é solicitado o “IoT hub device connection string”. Nesse trecho deve ser colocado a string de conexão obtido no IoT Device e ao final selecionado a opção “Run” para iniciar o envio dos dados de telemetria para o Azure IoT Hub.

Após o inicio do envio, as informações estatísticas podem ser consultadas na visão geral do serviço do IoT Hub.

Uma vez que os dados de telemetria estejam chegando no IoT Hub, devemos avançar para a segunda parte. Precisaremos utilizar o serviço do Azure Stream Analytics, que tem como objetivo criar uma “pipeline” para processamento dos eventos que estão sendo carregados no IoT Hub e jogá-los no Power BI Service em tempo real.

Assim como no serviço anterior, deve ser criado o recurso no Azure.

Para esse serviço deve ser configurado a fonte de entrada e saída, sendo assim, a entrada será definida com a origem do IoT Hub e a saída será um Workspace do Power BI Service.

A consulta do Stream Analytics deve ser editada para utilizar como parâmetros as fontes criadas e por último, o serviço precisa ser iniciado.

Após concluir a etapa anterior, os eventos começaram a passar pelo serviço do Stream Analytics e o conjunto de dados “IoTDataset” aparecerá no Power BI Service.

O passo final será criar um relatório e dashboard com os dados que estão chegando no Power BI em tempo real.

Chegamos ao final do processo e foi possível simular um cenário que os dados são consumidos pelo Power BI através de componentes específicos do Azure. Para mais detalhes, seguem as documentações oficiais dos serviços que utilizamos no Azure:

https://docs.microsoft.com/pt-br/azure/iot-hub/

https://docs.microsoft.com/pt-br/azure/stream-analytics/

https://docs.microsoft.com/pt-br/power-bi/

Até a próxima!

Anúncios

USANDO O SSRS PARA MONITORAR CONTENÇÃO DE I/O NO SQL SERVER

Olá Pessoal!

Feliz Ano Novo…Para começar bem o ano de 2018, vou compartilhar um relatório muito útil no trabalho do dia a dia de monitoramento do ambiente, um dashboard de monitoramento das contenções de I/O das instâncias SQL Server, com comparação de quantidade de notificações por semana.

Para criação do relatório foi utilizado o Reporting Services 2016 e consultas na tabela do error log para filtrar as informações. No ambiente que foi implantado essa solução, temos uma instância que extrai as informações necessárias para relatórios de todas as demais instâncias e dessa forma é possível consolidar os dados em apenas um repositório, utilizando para consultas, nesse caso os dados da tabela de error log.

Siga as etapas abaixo:

1 – Nas instâncias que deseja coletar as informações, a consulta abaixo deve ser utilizada em cada arquivo do error log.

INSERT INTO tb_IOWarningResults
EXEC xp_readerrorlog 0, 1, N'taking longer than 15 seconds';

No exemplo acima estou inserindo os dados de apenas um arquivo do error log em determinada tabela, sendo que, a busca filtra apenas a string com a mensagem enviada ao SQL Server. A mensagem que está sendo buscada é a seguinte:

Exemplo:

SQL Server has encountered x occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [C:\MSSQL\MSSQL.1\MSSQL\Data\data.mdf] in database [database]. The OS file handle is 0x00000000. The offset of the latest long I/O is: 0x00000000000000

Não vou me aprofundar no assunto, mas basicamente a mensagem informa que o subsistema de disco não está operando de forma satisfatória e alguma operação está sendo impactada devido ao tempo de resposta de IO acima de 15 segundos.

O artigo a seguir auxilia no troubleshooting e entendimento dessa contenção de IO: https://blogs.msdn.microsoft.com/sqlsakthi/2011/02/09/troubleshooting-sql-server-io-requests-taking-longer-than-15-seconds-io-stalls-disk-latency/

2 – Uma vez que os dados foram inseridos em tabelas (temporárias ou não) em cada instância, seja através de uma chamada remota ou agendamento (job), é necessário fazer a leitura das tabelas e para essa tarefa eu utilizei uma View intermediária para consolidar todas as consultas com Linked Server, veja.

CREATE VIEW [dbo].[VW_MONITOR_LOG_EVENT]
AS

SELECT 'HOST1' AS SERVER,LogDate AS LogDate, LogText COLLATE Latin1_General_CI_AI AS LogText
FROM [HOST1].master.dbo.tb_IOWarningResults

UNION ALL

SELECT 'HOST2' AS SERVER,LogDate AS LogDate, LogText COLLATE Latin1_General_CI_AI AS LogText
FROM [HOST2\MSSQLSERVER01].master.dbo.tb_IOWarningResults

3 – Após consolidar os resultados em um grande “tabelão”, apliquei alguns tratamentos nos dados criando uma nova view, veja.

CREATE VIEW [dbo].[VW_VIEW_LOG_EVENT_INFORMATION]
AS
SELECT [SERVER],convert(date,[LogDate]) as [LogDate],
substring(logtext,charindex('I/O',logtext,1),54) as [LogText],
CONVERT(BIGINT,LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1)) as QTD_OCORRENCIAS
FROM (
SELECT [SERVER],convert(date,[LogDate]) as [LogDate],[LogText],subsrt = SUBSTRING(logtext, pos, LEN(logtext))
FROM (
SELECT [SERVER],convert(date,[LogDate]) as [LogDate],[LogText], pos = PATINDEX('%[0-9]%', logtext)
FROM VW_MONITOR_LOG_EVENT with (nolock)
) d
) t

4 – Com o conjunto de dados obtido é possível montar uma série de relatórios diferentes, mas eu optei por fazer uma comparação entre a semana atual e semana anterior, agregando os valores por instância, sendo assim, a consulta abaixo foi utilizada.

SELECT VW.[SERVER],CONVERT(VARCHAR(92),VW.[LogText]) AS [LogText],
SUM(VW.QTD_OCORRENCIAS) AS QTD_OCORRENCIAS_ULTIMOS_7_DIAS,
VW2.QTD_OCORRENCIAS_SEMANA_ANTERIOR
FROM MASTER.DBO.VW_VIEW_LOG_EVENT_INFORMATION AS VW
JOIN (SELECT [SERVER],SUM(QTD_OCORRENCIAS) AS QTD_OCORRENCIAS_SEMANA_ANTERIOR
FROM MASTER.DBO.VW_VIEW_LOG_EVENT_INFORMATION
WHERE LogDate > convert(date,getdate()-14)
and LogDate convert(date,getdate()-7)
GROUP BY VW.[SERVER],VW.[LogText],VW2.QTD_OCORRENCIAS_SEMANA_ANTERIOR

O resultado esperado deve ser como nesse exemplo abaixo.

No próximo passo iniciarão etapas a serem realizadas no Reporting Services.

5 – Vou pular as etapas de configuração inicial do Reporting Services e avançar para criação de um novo Data Source dentro do Reporting Services que irá conectar na instância “central” que contém as consultas montadas anteriormente. Veja o exemplo abaixo, onde uma simples conexão com o SQL Server é criada.

6 – Deve ser criado na sequencia o Data Set que irá conter a consulta com o conjunto de dados que será utilizado relatório. Através da pagina web do Reporting Services o Report Builder será iniciado, como pode ser visto na imagem a seguir.

7 – Em vez de um tradicional relatório paginado, criaremos um Mobile Report. Para aqueles que não conhecem esse recurso, ele é otimizado para dispositivos móveis e conectados a dados locais, com uma variedade de visualizações de dados.

8 – Com o SQL Server Mobile Report Publisher aberto podemos fazer finalmente a criação do dashboard, mas primeiro temos que nos conectar ao Data Set criado anteriormente. Navegue até a aba de dados e selecione opção de adição de dados, veja abaixo.

A imagem acima foi capturada a partir da edição do relatório já montado.

9 – Uma vez conectado, iniciaremos o layout do dashboard. Utilizaremos 3 layouts no painel, sendo o primeiro o que está marcado na imagem abaixo. Arraste e o coloque na mesma posição, utilizando a metade horizontal do painel, sem modificar a quantidade de linhas e colunas na grade.

10 – Em seguida arraste 2x o gráfico de pizza utilizando o espaço restante no painel, veja na imagem abaixo.

11 – Volte para a aba de configuração de dados para que cada elemento do relatório possa ser configurado. Para o primeiro elemento, siga conforme a imagem abaixo a configuração das propriedades. Deve ser alterado a fonte de dados e adicionado uma nova coluna para que seja possível fazer uma comparação de quantidade de dados entre períodos, os demais ajustes já devem vir preenchidos.

12 – Os ajustes finais na primeira parte do painel deve ser feita na aba de layout, o modelo sugerido deve ser como na imagem abaixo.

13 – Ainda na aba de layout, os gráficos de pizza devem ser alterados para apresentar a estrutura em linhas, as alterações na fonte de dados deve ser feita na aba de dados. Como cada gráfico irá apresentar a somatória de ocorrências da mensagem do error log, será feito a comparação entre os valores da semana atual e anterior. Repare nos campos destacados a opção que deve ser selecionado na imagem abaixo, para o segundo gráfico de pizza deve ser o inverso a seleção da coluna.

14 – Volte na aba de design e faça qualquer ajuste final pendente, o modelo do relatório construído deve estar conforme a imagem abaixo.

15 – Uma vez concluído a construção do relatório é o necessário fazer a publicação para dentro da estrutura do Reporting Services. Esse processo é relativamente fácil e intuitivo, deve ser selecionado a opção para salvar e conectar ao host do Reporting Services, em seguida navegar nos diretórios. Depois de salvo o relatório mobile pode ser carregado pelo navegador, veja na imagem abaixo.

Pronto, concluímos o nosso relatório mobile e ele está pronto para ser acessado através de diversas plataformas. Além do acesso tradicional pelo endereço do relatório no Reporting Services, é possível acessá-lo pelo aplicativo do Power BI que pode ter seu download feito na Apple Store e Google Play. O aplicativo é grátis e dentre suas funcionalidades, é possível conectar ao seu servidor do Reporting Services localmente e consultar os relatórios mobile disponíveis, veja na imagem abaixo.

Caso tenham sugestões para otimização do processo que coleta os dados ou até no design do relatório, por favor, deixem nos comentários.

Obs: Alguns dados utilizados para realização dessa demonstração de criação de relatórios tiveram que ser ofuscados.

Até a próxima!

Evento de Lançamento SQL Server 2016

Olá Pessoal!

Só dando uma passada para informar que saiu finalmente a data do lançamento oficial do SQL Server 2016.

O lançamento será no evento Microsoft Data Driven – São Paulo, que irá ocorrer no dia 7 de abril. Corram para não perder essa oportunidade de acompanhar esse momento, pois as vagas são limitadas.

Veja as informações completas no link abaixo:

https://www.microsoftevents.com/profile/form/index.cfm?PKformID=0x136060b82b

Preparados para o maior lançamento da história da plataforma de dados Microsoft?

Até a próxima!

sql2016

TechEd Brasil 2015

Fala Pessoal!!

Há poucas horas lá em Barcelona durante o TechEd Europe 2014 foi divulgado pelos ‘brazucas’ a notícia que em 2015 acontecerá novamente o TechEd no Brasil, mas especificamente nos dias 20 e 21 de maio.

Para quem não sabe, o TechEd é uma enorme conferencia tecnológica da Microsoft voltada para profissionais de TI que acontece cada ano em lugares diferentes ao redor do mundo.

Estarão presentes especialistas da Microsoft, além de MPV, MCM, MCA e integrantes das comunidades para apresentar novidades em diversas sessões técnicas e de negócio ao longo dos dias.

Se planeje desde cedo e não perca essa oportunidade de fazer uma ‘network’ imensa e expandir seus conhecimentos sobre as soluções Microsoft.

Segue o vídeo de divulgação pelo Channel 9 e site oficial:

TechEd Brasil 2015

Site Oficial do Evento: https://www.microsoftinsights.com.br/

SQL Serverpower-bi-logo

Até a próxima!

Power Query Formula Language

Olá Pessoal!

Hoje foi ao ar um artigo meu pelo site do DevMedia, que é responsável pela conceituada SQL Magazine e outras revistas na área de TI.

A publicação é sobre o Power Query Formula Language, neste artigo você verá como funciona o Formula Language dentro da ferramenta Power Query. Além disso, abordaremos as estruturas principais que o compõem.

Segue o link para acessá-lo: Power Query Formula Language

Até a próxima!

power-bi-logo

1º Congresso Nacional Online de Business Intelligence

Olá Pessoal!

Faz um certo tempo que não publico nenhum artigo dando continuidade ao Power BI, mas venho trazer uma excelente notícia aos apaixonados por BI e aos que querem conhecer esse mundo.

Próximo mês vai acontecer o CONABI (Congresso Nacional Online de Business Intelligence), esse é um projeto do meu colega Rafael Piton e sua equipe (INBA), com objetivo de reunir grandes nomes do assunto em uma iniciativa totalmente inovadora no Brasil.

Tive o imenso prazer de ser convidado como palestrante e minha seção será sobre o Microsoft Power BI para o Office 365 – O poder da análise nas mãos de milhões.

foto apresentação - 2

Informações:

Serão 21 palestras distribuídas entre os dias 18 a 24 de Agosto, abordando Carreira, Tecnologias e Negócios no segmento de Business Intelligence e suas derivações.

Durante o congresso serão apresentadas várias palestras por dia, em diversos horários.

Você poderá assistir todas as palestras GRATUITAMENTE nos horários e datas agendados.

Minha seção está marcada para o dia 22/08 das 16:00 as 17:00.

Mais informações e inscrições no site da CONABI.

Não percam essa oportunidade de grande aprendizado, marquem em suas agendas o quanto antes.

Nos encontramos lá!

IMBA
power-bi-logo