Dicas para Modelagem de Dados no Power BI

Gustavo Dariano Atualizado por Gustavo Dariano

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 serã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:

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

Contato