Dicas para Modelagem de Dados no Power BI

Manu da Silva Atualizado por Manu da Silva

Definir o modelo de dados em conjunto com as equipes de desenvolvimento e negócios pode parecer algo simples, mas é um ponto essencial que muitas vezes é afetado pela falta de comunicação entre essas áreas, que precisam estar bem alinhadas.

Vamos explicar o conceito central necessário para modelar e tratar essas informações, permitindo que elas sejam utilizadas de forma adequada.

Essa etapa é crucial, pois relatórios, gráficos e dashboards dependerão diretamente da qualidade dessa modelagem de dados.

Isso significa que precisamos das informações bem estruturadas e corretas, para evitar problemas durante a criação de relatórios na plataforma.

O que é a modelagem de dados com o Power Query?

O Power Query é um editor de consultas (tabelas) dentro do Power BI, é um programa separado, mas vai auxiliar nessa modelagem.

Esse editor de consultas permite com que o usuário consiga fazer diversos tratamentos como formatar os tipos de dados, excluir linhas ou colunas, criar colunas, juntar tabelas, entre outras diversas possibilidades.

Modelagem de Dados da Weni

Ao criar um chatbot serão criadas diversas tabelas para armazenar informações provenientes da interação do usuário através da troca de mensagens.

Primeiro é importante conhecer as tabelas e os tipos de dados que são extraídos a partir dela.

Ao se conectar através do Conector da Weni(tutorial) no Power BI poderão extrair as seguintes tabelas:

As principais tabelas são contacts, runs e messages.

Contacts - Tabela de Contatos 

Definição: Um contato é um usuário final que interagiu ou vai interagir com a conta. 

Campo de Contato: Cada contato pode receber atributos, chamados campos de contato, que contêm valores como seus nomes, números de telefone e qualquer outra informação individual que você queira incluir.

Coluna

Tipo 

uuid

id

name

texto

language

texto

urns

id

groups

texto, número inteiro, booleano etc

fields

true/false

blocked

true/false

stopped

true/false

created_on

date & time

modified_on

date & time

last_seen_on

date & time

  • uuid - o UUID do contato (string), filtrável como uuid.
  • name - o nome do contato (string).
  • language - o idioma preferido do contato (string).
  • urns - os URNs associados ao contato (array de strings), filtrável como urn.
  • groups - os UUIDs de quaisquer grupos aos quais o contato pertence (array de objetos), filtrável como group com o nome do grupo ou UUID.
  • fields - quaisquer campos de contato neste contato (dicionário).
  • blocked - se o contato está bloqueado (booleano).
  • stopped - se o contato está interrompido, ou seja, optou por não receber mais comunicações (booleano).
  • created_on - quando este contato foi criado (datetime).
  • modified_on - quando este contato foi modificado pela última vez (datetime), filtrável como before e after.
  • last_seen_on - quando este contato se comunicou conosco pela última vez (datetime).

Runs - Tabela de Runs

Definição: A passagem por um fluxo da entrada à saída - e toda atividade que ocorre no meio - constitui uma corrida. Os contatos saem de um fluxo quando concluem o fluxo, iniciam outro fluxo por meio da ação Entrar em outro fluxo ou expiram do fluxo após o período de inatividade que você designar.

Resultado: fornece uma visão geral do seu fluxo, análises de mensagens e execuções e dados sobre todas as atividades em seu fluxo - do início ao fim.

Coluna

Tipo 

uuid

id

flow

texto

contact

texto

start

texto

responded

true/false

path

texto

values

texto, número inteiro, booleano etc

created_on

date & time

modified_on

date & time

exited_on

date & time

exit_type

texto

  • uuid - o ID da execução (string), filtrável como uuid.
  • flow - o UUID e o nome do fluxo (objeto), filtrável como flow com UUID.
  • contact - o UUID e o nome do contato (objeto), filtrável como contact com UUID.
  • start - o UUID do início do fluxo (objeto).
  • responded - se o contato respondeu (booleano), filtrável como responded.
  • path - o percurso do contato pelos nós do fluxo (array de objetos).
  • values - valores gerados pelos conjuntos de regras no fluxo (array de objetos).
  • created_on - a data e hora em que esta execução foi iniciada (datetime).
  • modified_on - quando esta execução foi modificada pela última vez (datetime), filtrável como before e after.
  • exited_on - a data e hora em que esta execução foi finalizada ou null se ainda estiver ativa (datetime).
  • exit_type - como a execução terminou (um dos valores: "interrupted", "completed", "expired").

Messages - Tabela de Mensagens

Definição: Texto enviado ou recebido através do chatbot tratado por um canal. O status pode ser "inicializando", "enfileirado", "conectado", "enviado", "entregue", "tratado", "errado", "com falha", "reenviado".

Filtragem: Você não pode filtrar por mais de um contato, pasta, marcador ou transmissão ao mesmo tempo.

Coluna

Tipo 

id

id

broadcast

texto

contact

texto

urn

texto

channel

text

direction

texto

type

texto

status

texto

archived

texto

visibility

texto

text

texto

labels

texto

attachments

texto

created_on

date & time

sent_on

date &  time

modified_on

date & time

media

texto

  • id - o ID da mensagem (int), filtrável como id.
  • broadcast - o id da transmissão (int), filtrável como broadcast.
  • contact - o UUID e o nome do contato (objeto), filtrável como contact com UUID.
  • urn - o URN do remetente ou destinatário, dependendo da direção (string).
  • channel - o UUID e o nome do canal que processou esta mensagem (objeto).
  • direction - a direção da mensagem (um dos valores: "incoming" ou "outgoing").
  • type - o tipo da mensagem (um dos valores: "inbox", "flow", "ivr").
  • status - o status da mensagem (um dos valores: "initializing", "queued", "wired", "sent", "delivered", "handled", "errored", "failed", "resent").
  • visibility - a visibilidade da mensagem (um dos valores: "visible", "archived" ou "deleted").
  • text - o texto da mensagem recebida (string). Note que esta é a visualização lógica e a mensagem pode ter sido recebida como múltiplas mensagens físicas.
  • attachments - os anexos na mensagem (array de objetos).
  • labels - quaisquer etiquetas atribuídas a esta mensagem (array de objetos), filtrável como label com o nome da etiqueta ou UUID.
  • created_on - quando esta mensagem foi recebida pelo canal ou criada (datetime), filtrável como before e after.
  • sent_on - para mensagens enviadas, quando o canal enviou a mensagem (null se ainda não foi enviada ou se for uma mensagem recebida) (datetime).
  • modified_on - quando a mensagem foi modificada pela última vez (datetime).

Conexões entre tabelas

Obs: a tabela calendário é feita pelo usuário do Power BI

Database

Você pode acessar nossa documentação oficial através do site:

WeniFlows

Boas práticas

  1. Selecione apenas os dados relevantes para otimizar o processo de extração;
  2. Transforme seus dados para tornar eles úteis;
  3. Certifique-se de que seus dados estejam bem formatados, limpos e organizados antes de começar a criar seus dashboards, relatórios e etc.;
  4. Mantenha um catálogo de dados com todos os campos de dados, descrições e tipos do seu projeto de chatbot. Além disso, certifique-se de que suas variáveis, como campos de contato e resultados, descrevam claramente sua finalidade;
  5. Entenda os conceitos como flows, runs, contacts e messages para interpretar e criar insights de projeto adequadamente;
  6. Explore a documentação RapidPro API documentation para se familiarizar com a disponibilidade dos dados e como eles estão estruturados;
  7. Explore a documentação do banco de dados.

Como a gente se saiu?

Explore a Documentação do Banco de Dados da Weni

Filtro usando campos de contato no Power BI

Contato