Dicas para Modelagem de Dados no Power BI
Atualizado
por Nathallia Salvador
Definir o modelo de dados junto com as equipes de desenvolvimento e os times de negócios parece algo bem óbvio, mas é o ponto primordial que sempre acaba impactado pela falta de comunicação entre esses mundos, que precisam estar bem conectados.
Vamos te explicar o conceito mais importante que precisa para que possa modelar (tratar) essas informações para que possamos utilizá-las de forma adequada.
Essa é a parte mais importante, pois os relatórios, gráficos, dashboards vão todos depender da modelagem desses dados.
Isso quer dizer que precisamos ter as informações tratadas e corretas para não termos problemas durante a construção de relatórios no programa.
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 - the UUID of the contact (string), filterable as uuid.
name - the name of the contact (string).
language - the preferred language of the contact (string).
urns - the URNs associated with the contact (string array), filterable as urn.
groups - the UUIDs of any groups the contact is part of (array of objects), filterable as group with group name or UUID.
fields - any contact fields on this contact (dictionary).
blocked - whether the contact is blocked (boolean).
stopped - whether the contact is stopped, i.e. has opted out (boolean).
created_on - when this contact was created (datetime).
modified_on - when this contact was last modified (datetime), filterable as before and after.
last_seen_on - when this contact last communicated with us (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 - the ID of the run (string), filterable as uuid.
flow - the UUID and name of the flow (object), filterable as flow with UUID.
contact - the UUID and name of the contact (object), filterable as contact with UUID.
start - the UUID of the flow start (object)
responded - whether the contact responded (boolean), filterable as responded.
path - the contact's path through the flow nodes (array of objects)
values - values generated by rulesets in the flow (array of objects).
created_on - the datetime when this run was started (datetime).
modified_on - when this run was last modified (datetime), filterable as before and after.
exited_on - the datetime when this run exited or null if it is still active (datetime).
exit_type - how the run ended (one of "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 - the ID of the message (int), filterable as id.
broadcast - the id of the broadcast (int), filterable as broadcast.
contact - the UUID and name of the contact (object), filterable as contact with UUID.
urn - the URN of the sender or receiver, depending on direction (string).
channel - the UUID and name of the channel that handled this message (object).
direction - the direction of the message (one of "incoming" or "outgoing").
type - the type of the message (one of "inbox", "flow", "ivr").
status - the status of the message (one of "initializing", "queued", "wired", "sent", "delivered", "handled", "errored", "failed", "resent").
visibility - the visibility of the message (one of "visible", "archived" or "deleted")
text - the text of the message received (string). Note this is the logical view and the message may have been received as multiple physical messages.
attachments - the attachments on the message (array of objects).
labels - any labels set on this message (array of objects), filterable as label with label name or UUID.
created_on - when this message was either received by the channel or created (datetime) (filterable as before and after).
sent_on - for outgoing messages, when the channel sent the message (null if not yet sent or an incoming message) (datetime).
modified_on - when the message was last modified (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:
Boas práticas
- Selecione apenas os dados relevantes para otimizar o processo de extração;
- Transforme seus dados para tornar eles úteis;
- Certifique-se de que seus dados estejam bem formatados, limpos e organizados antes de começar a criar seus dashboards, relatórios e etc.;
- 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;
- Entenda os conceitos como flows, runs, contacts e messages para interpretar e criar insights de projeto adequadamente;
- Explore a documentação RapidPro API documentation para se familiarizar com a disponibilidade dos dados e como eles estão estruturados;
- Explore a documentação do banco de dados.