Como criar um dataset em tempo real quando nos aproximamos fisicamente de uma determinada área
Neste artigo veremos uma das várias possibilidades de ligação entre ferramentas da plataforma Power da Microsoft. Vamos criar um fluxo no Power Automate que irá alimentar um conjunto de dados do Power BI em tempo real 😎
Antes de começarmos, o que é um Streaming Dataset?
Para não nos estendermos de forma demasiado técnica, podemos definir streaming dataset como “um conjunto de dados que será atualizado de forma instantânea quando ocorre um determinado evento”.
No Power BI, os elementos visuais serão modificados de forma instantânea, o que possibilitará uma análise rápida e precisa de informações cruciais para o nosso negócio.
Dito isso, criemos um Streaming Dataset, que possibilitará uma gestão do tempo (em média) gasto por cada colaborador em uma determinada área da nossa empresa. Além de saber onde se encontram fisicamente naquele exato momento 😬
1 – Criar o Streaming Dataset no Power BI
Dentro da nossa área de trabalho do Power BI, clicaremos no botão de “+ Novo” no canto superior esquerdo e selecionaremos a opção “Conjunto de dados de transmissão”.
Logo depois, abrirá uma aba para escolhermos nossa origem de dados. Selecionaremos a opção “API”:
Após concluído o passo anterior, finalmente, abrir-se-á uma janela para darmos o nome pretendido no conjunto de dados (“Streaming Locale”) e quais são os “valores de transmissão” (preenchidos no Power Automate):
Ao adicionarmos um valor de transmissão, podemos selecionar qual tipo de dados o mesmo receberá. Sendo assim, criaremos 4 valores de transmissão, serão eles:
- DataChegada (tipo: DateTime),
- DataSaída (tipo: DateTime),
- ZonaA (tipo: Texto),
- NomeColaborador (tipo: Texto):
Logo após clicarmos em “Concluído”, o mesmo aparecerá nos nossos Conjuntos de dados:
2 – Microsoft Power Automate
Antes de prosseguirmos, darei uma breve introdução dessa linda ferramenta chamada Power Automate 😊:
É um braço da plataforma Power que nos possibilita automatizar qualquer tipo de tarefa repetitiva que realizamos no nosso dia a dia, de maneira simples e intuitiva sem recorrer a códigos complexos. Segue a forma Acionador -> Ação, no qual o acionador irá “iniciar” o fluxo, e as ações nos darão milhares de possibilidades dentro da nossa organização. Ou seja, as tarefas que fazemos de forma manual, serão realizadas de forma automática pelo computador.
Exemplos de fluxos:
- Quando chegar um novo e-mail, modificar o ficheiro Excel em anexo e publicá-lo no Microsoft Teams.
- Quando um formulário é submetido, preencher um contrato de trabalho atualizado e enviar para o colaborador por e-mail.
- Quando um funcionário clicar no botão, enviar um pedido de aprovação de férias para o seu manager. E quando o mesmo aprovar, modificar mapa de férias e calendário do funcionário.
Com certa criatividade, o potencial na automação de tarefas poderá se tornar gigantesco! 😉
3 – Criação do fluxo
Agora iniciaremos a parte mais divertida da brincadeira 😋. Criaremos o fluxo que irá preencher nossos valores de transmissão anteriormente criados no “Streaming Locale”.
É sempre importante percebermos qual será o Acionador do nosso fluxo, ou seja, como ele se iniciará? No nosso caso, será “Quando entro ou saio de uma área”.
Vale a pena ressaltar, que para o funcionamento da nossa solução, é obrigatório os seguintes pontos:
- O colaborador precisar fornecer as permissões de localização quando o mesmo estiver usando a conta da empresa.
- Que o mesmo tenha o Microsoft Power Automate instalado no telemóvel ou portátil.
Dito isso, selecionaremos a opção “Fluxo de cloud automatizado” ao clicar no friso “Os meus fluxos” e depois no botão do canto superior esquerdo “+ Novo fluxo”:
Como o acionador que iremos utilizar ainda está em (preview), vamos ignorar o passo inicial e adicionamos dentro do fluxo. Sendo assim, colocaremos o nome do nosso fluxo de “Flow Locale” e clicaremos em “Ignorar”.
Após ter criado o fluxo, vamos digitar “Localização” na barra de pesquisa e selecionar o Acionador “Quando entro ou saio de uma área”:
Perfeito! Após ter selecionado o acionador do nosso fluxo, é pedido a região na qual queremos que o mesmo se inicie (precisão máxima de 8 metros):
Após ter selecionado a área (ou seja, quando entrarmos ou sairmos daquele raio), clicaremos no botão “Guardar”.
Agora iremos usar uma ação que nos dará todas as informações sobre um usuário da nossa organização: como e-mail, nome, telemóvel, departamento e outros.
Agora precisaremos de uma condição no nosso fluxo. Quando entrarmos naquela área, queremos adicionar uma linha no nosso “Streaming Locale” com o valor de transmissão (DataChegada) referente ao tempo exato atual. E quando sairmos, adicionaremos apenas o valor (DataSaída), com o tempo que sairmos. Em ambos os casos, queremos que a linha tenha o nome do colaborador (que conseguimos extrair no passo anterior).
A informação de se saímos ou entramos na área, é dada pelo conteúdo de ”triggerOutputs()?['transitionType']”.
Se esse valor for 1: entramos na área, já se for 2: estamos saindo do local. Infelizmente não conseguiremos simplesmente adicionar um conteúdo dinâmico, e deveremos criar uma expressão:
Se esta condição for verdadeira, o fluxo irá realizar apenas as ações dentro do bloco verde “Se sim”. Queremos adicionar uma linha ao nosso “Streaming Locale” do Power BI:
Esta ação “Adicionar linhas a um conjunto de dados” terá 3 parâmetros obrigatórios, serão eles:
- Área de Trabalho: devemos selecionar a área na qual salvamos nosso Streaming Dataset
- Conjunto de Dados: selecionaremos o “Streaming Locale”
- Tabela: escolhemos a opção “RealTimeData”
No campo “Payload” deveremos colocar as informações das linhas que adicionaremos no dataset. Deverá ser formatado da mesma forma que o Power BI nos informou em 1:
[
{
"DataChegada" :"2022-08-04T16:54:19.983Z",
"DataSaída" :"2022-08-04T16:54:19.983Z",
"ZonaA" :"AAAAA555555",
"NomeColaborador" :"AAAAA555555"
}
]
Agora só basta alterarmos os valores para aquilo que queremos. Sendo eles:
- DataChegada: Já que a hora de chegada será exatamente quando o fluxo for acionado, recorreremos a expressão utcNow() do Power Automate, que retorna a data corrente atual.
- DataSaída: Deixaremos esse valor em branco para percebermos que esse registro trata-se de quando o colaborador chegou na ZonaA
- ZonaA: Esse valor servirá para sabermos em qual área o colaborador entrou. Colocarei como “Escritório”, mas pode ser o nome que quisermos fornecer.
- NomeColaborador: Usaremos o conteúdo de retorno da ação “Obter meu perfil (V2)” que adicionamos anteriormente.
Agora replicaremos a mesma lógica para quando o colaborador sair da ZonaA, para isso usaremos exatamente a mesma ação, com o valor de transmissão “DataSaída” recebendo utcNow()
.
Para facilitar, iremos copiar nossa ação e colar no lugar pretendido. Clicaremos nos “…” da ação que queremos copiar, depois clicaremos no botão “Copiar para a minha área de transferência (Pré-visualização)”:
Depois adicionaremos um novo passo onde queremos colar a ação previamente copiada:
Agora iremos alterar os valores de transmissão “DataChegada” e “DataSaída”:
Terminamos nosso trabalho de criação do fluxo, e só basta testarmos o funcionamento! 😲
4 – Funcionamento
Para testarmos o fluxo, deveremos entrar ou sair da área que colocamos inicialmente. Após alguns segundos o mesmo será executado.
Partindo desse acionador “Quando entro ou saio de uma área” poderemos automatizar diversos tipos de tarefas como:
- Quando um colaborador chegar em uma zona da empresa, notificarmos seu manager pelo telemóvel.
- Quando chegarmos no escritório, baixar todas as faturas recebidas no dia anterior na nossa máquina.
- Controle de ponto
Dito isso, quando você chegar ou sair de a algum lugar, qual tarefa gostaria de automatizar?
Para utilizarmos o “Streaming Locale” basta criarmos um relatório ou Dashboard que terá o mesmo como conjunto de dados. Exemplo simples do que poderemos fazer:
Além disso, com um Streaming Dataset no modelo que criamos, poderíamos responder algumas perguntas como:
- Determinada área da empresa está com lotação excedida?
- Qual zona da nossa empresa é mais frequentada pelos funcionários?
- Em qual zona encontra-se aquele funcionário?
- Qual a hora exata que determinado colaborador leva para ir de uma zonaA até uma zonaB? Agradeço pela atenção até aqui, até o próximo artigo.