PT EN
Voltar ao site

DATTA BI — Modelos e relacionamentos visuais

Cruzar dados de fontes diferentes costumava exigir SQL, exportações e uma boa dose de paciência. Com os Modelos do DATTA BI, você arrasta os datasets como caixas num canvas e desenha os relacionamentos entre eles — o equivalente à "Model view" do Power BI Desktop. O relacionamento propaga o filtro: um filtro sobre uma coluna que o visual não tem chega a ele pelas chaves do relacionamento (veja abaixo). Ele não faz junção de colunas — o visual continua mostrando só as colunas do próprio dataset. Os relacionamentos existem apenas no DATTA BI: eles nunca alteram a fonte original.

Como acessar

Menu VisualizarModelos.

O que você vê no canvas

  • Caixas de dataset arrastáveis, mostrando o dataset e suas colunas.
  • Linhas de relacionamento com indicador de cardinalidade (1:1, 1:N, N:1, N:N) e a direção registrada (unidirecional ou bidirecional).
  • Pré-visualização: duplo clique numa caixa abre uma tabela com as 100 primeiras linhas do dataset, já com a edição DATTAX por coluna.

Criar um relacionamento arrastando

  1. Passe o mouse pela borda direita de uma caixa de dataset — aparece um ponto de conexão azul.
  2. Arraste esse ponto até a outra caixa.
  3. No diálogo que abre, informe:
    • From column — a coluna de origem (a chave estrangeira).
    • To column — a coluna de destino (a chave primária).
    • Cardinality — 1:1, 1:N, N:1 ou N:N.
    • Direction — BOTH (bidirecional) ou SINGLE (unidirecional): diz em que sentido o filtro atravessa (veja abaixo).
  4. Confirme: a linha é desenhada no canvas e o relacionamento fica salvo no modelo.

Cada relacionamento é gravado com o modelo a que pertence, os datasets de origem e destino, as colunas ligadas, a cardinalidade, a direção e o indicador de ativo — tudo na base de BI da plataforma.

Relacionamentos e o filtro cruzado

O filtro cruzado, os filtros do painel Filtros e os da barra superior valem direto em cada visual cuja base (o dataset do visual) tem a coluna filtrada. Quando a base não tem a coluna, a plataforma procura um relacionamento ativo entre o dataset do visual e um dataset que a tenha:

  1. Executa o dataset relacionado com o filtro — e com a segurança por linha que vale para você sobre ele.
  2. Junta as chaves distintas da coluna do relacionamento.
  3. Filtra o visual por essas chaves: |> FILTER cliente_id IN (...).

Exemplo: Vendas.cliente_id → Clientes.id (N:1). Um clique em uf = SP num visual de Clientes filtra o visual de Vendas pelas vendas dos clientes de SP.

Direção. BOTH propaga nos dois sentidos. SINGLE propaga só do lado "1" para o lado "muitos": em N:1 o dataset Para filtra o De; em 1:N, o contrário; em 1:1, os dois lados filtram; em N:N, o Para filtra o De.

Quando o filtro não é aplicado — o visual mostra os dados sem ele e um aviso dizendo por quê, nunca um resultado parcial em silêncio:

  • o filtro seleciona mais de 1.000 chaves (teto configurável em datta.dattabi.relacionamento.teto-de-chaves);
  • há mais de um relacionamento ativo pelo qual o filtro chegaria — deixe só um ativo;
  • a segurança por linha do dataset relacionado não pôde ser resolvida;
  • a consulta das chaves falhou.

As chaves ficam em cache pelo mesmo tempo do cache dos visuais; o cache separa os recortes de segurança por linha de cada usuário.

Colunas calculadas com DATTAX

Na pré-visualização do dataset, clique no nome de uma coluna: abre um editor onde você escreve uma expressão DATTAX personalizada, por exemplo:

UPPER(nome)
coalesce(municipio, "—")

A expressão vira uma coluna calculada e fica salva junto do dataset, disponível em qualquer gráfico.

Exemplo prático — modelo de assistência social

O seed de dados de demonstração (seed-demo-data.sh) já cria quatro relacionamentos no modelo dm-mds-assistencia:

  1. Pessoa.familiaId → GrupoFamiliar.id (N:1, BOTH)
  2. BeneficioSocial.pessoaId → Pessoa.id (N:1, BOTH)
  3. Transacao.beneficioId → BeneficioSocial.id (N:1, BOTH)
  4. ServicoPublico.uf → Pessoa.uf (N:N via uf, SINGLE)

Com eles, um clique numa família filtra os visuais de Pessoa (e vice-versa, por serem BOTH); um filtro em Pessoa filtra ServicoPublico pela uf.

Limitações conhecidas

  • Sem detecção automática de chaves: você indica manualmente a coluna de origem e a de destino.
  • N:N não cria tabela de mapeamento intermediária automática — quando precisar dela, monte um dataset adicional.
  • Um salto só: o filtro atravessa um relacionamento; o dataset do outro lado precisa ter a coluna filtrada (não há cadeia A → B → C).
  • Só visuais montados pelos campos (dataset + canais) recebem o filtro pelo relacionamento; visual com consulta DATTA Query escrita à mão, não.
  • As colunas-chave precisam ter o mesmo valor dos dois lados (um número não casa com o mesmo número em texto de data com hora, por exemplo).
  • O editor não alerta ciclos; o caso que importa — dois caminhos ativos para o mesmo filtro — aparece como aviso no visual.

Tabela de datas

No menu "..." de um dataset do Modelo, Marcar como tabela de datas escolhe a coluna de data. A partir daí, o visual de barras, linha ou área cujo eixo é essa coluna abre por ano e desce, com duplo clique, para trimestre, mês e dia — sem declarar hierarquia. Os níveis são calculados na consulta pelas funções de data do DATTAX (YEAR, QUARTER, MONTH, DAY); valor que não é data vira vazio. Um clique num ano filtra os outros visuais pelo ano — inclusive os de outro dataset ligado à tabela de datas por relacionamento. Uma hierarquia declarada que já usa a coluna de data tem precedência. O mesmo diálogo desmarca.