Relacionar tabelas

Informações do conceito

Comando DEFINE RELATION

O relacionamento de tabelas permite combinar até 18 tabelas do Analytics com diferentes estruturas de registros e acessar e analisar dados de qualquer combinação de campos nas tabelas relacionadas como se elas existissem em uma única tabela.

As estruturas de registro são diferentes se elas tiverem um ou mais campos (elementos de dados) diferentes. O relacionamento é uma boa opção para realizar trabalho informativo que exige uma imagem rápida de associações de dados em diversas tabelas físicas ou para vincular códigos com nomes correspondentes antes de gerar relatórios.

Exemplo

Cenário

Você quer criar um relatório de vendas que contenha detalhes sobre os clientes e os produtos vendidos no mês de março, mas os dados estão distribuídos em três tabelas.

Abordagem

Você relaciona a tabela mestre de clientes com a tabela de pedidos, e a tabela de pedidos com a tabela mestre de produtos, para criar uma associação temporária de tabelas que contenham todas as informações necessárias para o relatório:

  • nome do cliente e localização da tabela mestre de clientes
  • detalhes do pedido da tabela de pedidos
  • detalhes do produto da tabela mestre de produtos

O relacionamento cria uma tabela "virtual"

O resultado do relacionamento de tabelas é virtual - as tabelas relacionadas permanecem independentes e podem ter o relacionamento cancelado a qualquer momento.

Diferentemente da associação ou da mesclagem, relacionar não cria uma nova tabela. Em vez disso, os campos da(s) tabela(s) relacionada(s) ou filha(s) ficam disponibilizados na tabela pai cuja relação foi criada.

Se for necessário, é possível executar uma operação separada e extrair qualquer combinação de campos das tabelas pai e filha para uma nova tabela.

Relacionar tabelas usando um campo-chave comum

As tabelas são relacionadas usando um campo-chave comum, ou seja, um elemento de dados como número do funcionário, ID do fornecedor ou endereço que apareça em ambas as tabelas. Quando valores idênticos existirem nos campos-chave, o resultado será uma correspondência que relaciona registros individuais das tabelas separadas. A correspondência parcial não é suportada pela operação de relação básica.

Vários requisitos se aplicam aos campos-chave de cada tabela que você está relacionando:

Característica do campo-chave Requisitos
Elemento de dados Deve ser igual. Por exemplo, ambos os campos-chave são campos de número do funcionário.
Tipo de dados

Qualquer tipo de dados é válido, mas ambos devem ter o mesmo tipo de dados. Por exemplo, dois campos de caracteres.

subtipos de datahora (data, datahora e hora) podem ser unidos apenas para o mesmo subtipo.

Tipo de campo Pode ser físico ou calculado.
Nome do campo Podem ser diferentes entre si.
Posição inicial Podem ser diferentes entre si.
Comprimento do campo

Deve ser igual.

Justificação e caixa em campos de caracteres Deve ser igual.

Tabelas de pais e filhos e campos chave.

As tabelas e campos-chave na operação de relação são identificados como primário e secundário baseado na ordem em que você adiciona as tabelas à relação:

  • tabela pai – a primeira tabela adicionada (adicionada automaticamente ao abrir a tabela e começar a operação de relação.
  • campo-chave pai – o campo-chave escolhido da tabela pai
  • tabela filha – a segunda tabela adicionada e qualquer tabela subsequente adicionada
  • campo-chave filha – o campo-chave escolhido da tabela (ou tabelas) filha

Você pode escolher quaisquer tabelas e campos-chave pais e filhos. No entanto, a relação somente será bem-sucedida se os campos-chave cumprirem os requisitos de relacionamento.

Para obter mais informações, consulte Sobre campos-chave.

Acessando os campos da tabela filha

Uma vez que a relação é estabelecida, é possível adicionar campos de qualquer uma das tabelas filhas à exibição pai, mesmo que não exista nenhuma exigência para tal. É possível acessar e analisar os campos de tabela filha por meio da tabela pai, usando a lista suspensa A partir da tabela nas caixas de diálogo do Analytics e o Construtor de expressões, tendo ou não as adicionado à exibição pai.

Campos de tabelas filhas acessados por meio da tabela pai são exibidos no formato nome da tabela.nome do campo para indicar de qual tabela os campos provêm. Você pode acessar tabelas relacionadas e modificar relações pela tabela pai, mas não pela tabela filha.

Ordenação e indexação de tabelas relacionadas

A tabela virtual resultante de uma relação usa o critério de ordenação existente da tabela pai. Não é necessário ordenar ou indexar o campo-chave da tabela pai antes de relacionar tabelas. No entanto, você pode escolher fazê-lo, porque não existe nenhuma opção de Pré-ordenação disponível para a tabela pai durante a relação.

Como parte do funcionamento interno da operação de relação, o(s) campo(s)-chave da tabela filha são automaticamente indexados em ordem crescente. Esses índices de tabela filha persistem mesmo depois que as tabelas filhas têm o relacionamento cancelado e podem ser excluídos manualmente.

Informações adicionais sobre relações

A tabela a seguir oferece informações adicionais sobre relações.

Área funcional

Detalhes

Associação de registros

Relacionar um par de tabelas é o equivalente lógico à associação usando a opção Todos os registros primários, ou seja, usando o tipo de associação de muitos para um que inclui a correspondência dos registros principal e secundário (registros pai e filho) e registros principais não correspondentes.

Assim como a associação de muitos para um correspondente, a operação de relação associa valores-chave pai somente para a primeira ocorrência de um valor-chave filho correspondente. Se existirem ocorrências adicionais de um valor-chave filho correspondente, eles serão ignoradas. É necessário levar esse comportamento em consideração ao planejar as relações da tabela, especialmente se uma tabela filha contiver várias ocorrências legítimas de um valor-chave correspondente. Uma abordagem possível é tentar reverter a relação das duas tabelas, tornando-as filha e pai e vice-versa.

Registros não correspondidos e valores de campo ausentes

Se um valor-chave de pais não tiver um correspondente em uma tabela filha relacionada, para os valores de campo ausentes, o Analytics exibe um espaço em branco em campos de caracteres e datahora, um zero em campos numéricos, e "F" em campos lógicos.

Duplicidades ou espaço em branco no campo-chave da tabela filha

Se valores duplicados ou ausentes em um campo-chave de tabela filha tornam as análises subsequentes inválidas, pré-processar a tabela secundária para remover as duplicidades e/ou espaços em branco pode ser uma solução para algumas situações.

Extrair dados de tabelas relacionadas

Há duas opções ao extrair dados de tabelas relacionadas:

  • Utilizando tanto a opção Exibir quanto a opção Campos na caixa de diálogo Extrair, você pode extrair parte ou todos os dados das tabelas pais e filhos para uma nova tabela do Analytics. A nova tabela não é mais relacionada a nenhuma outra tabela.

    Se você utilizar a opção Exibir , você deve primeiro adicionar a tabela pertinente de filhos a exibição dos pais.

  • Usando a opção Registro na caixa de diálogo Extrair, é possível extrair os dados da tabela pai em uma nova tabela do Analytics. A nova tabela retém as relações da tabela pai original. A opção Registro não suporta a extração de dados da tabela filha.

Comprimento de campo-chave idêntica não reforçado

O Analytics não reforça comprimentos idênticos para os campos-chave comuns em tabelas pai e filho.

Recomendamos usar sempre campos com comprimentos idênticos, harmonizando manualmente os comprimentos antes da realização do relacionamento, se necessário. Resultados derivados do relacionamento usando campos-chave de diferentes comprimentos não são confiáveis.

Campos-chave de datahora podem ter diferentes comprimentos porque o Analytics, quando executando operações que envolvem datas, datahoras ou horários, usa um formato de datahora interno do Analytics .

Alterando o tipo de dados de campo-chave

Não é possível alterar o tipo de dados de um campo-chave pai ou filho enquanto ele está sendo usado para relacionar tabelas. Se for necessário alterar o tipo de dados de qualquer campo, exclua a relação primeiro. Se a alteração resultar em tipos de dados diferentes, não será mais possível usar os dois campos para relacionar tabelas.

Evitando indexação condicional

Não use um índice condicional para campos-chave de tabela filha. Em vez disso, aplique condições ao realizar operações em uma tabela pai e tabelas relacionadas.

Usar índices condicionais ao criar relações pode causar falhas não-intencionais de dados em diferentes pontos em uma hierarquia relacional. A abordagem mais segura é criar relações que apresentam um conjunto de dados mais íntegros possível, conforme a garantia das relações, e depois aplicar condições, se necessário.

Restrições no local de tabelas que estão sendo relacionadas

Para serem relacionadas, as tabelas devem estar no mesmo projeto do Analytics. As tabelas do servidor devem estar no mesmo servidor e devem ser acessadas usando o mesmo perfil do servidor. Não é possível relacionar uma tabela local em uma tabela do servidor.

Harmonizando justificação e caixa

Quando se relaciona pares de tabelas usando campos-chave de caracteres, a justificativa e o caso devem ser os mesmos:

  • Ambos os campos-chave devem ter a mesma justificativa. Use a função LTRIM( ) para remover espaços em branco iniciais dos campos-chave.

  • Ambos os campos-chave devem ter a mesma caixa - ALTA (MAIÚSCULA), baixa (minúscula) ou de Nomes Próprios (primeira letra da palavra maiúscula, as demais minúsculas). Para harmonizar a caixa, use a função UPPER( ), LOWER( ) ou PROPER( ).

Relacionando dados baseados em UTC e não baseados em UTC

Um campo-chave de datahora com base em UTC e sem base em UTC pode ser usado para relacionar duas tabelas. (UTC é Tempo Universal Coordenado, a hora na longitude de zero grau.) Ao fazer operações envolvendo datahoras ou horários, o Analytics utiliza um formato interno de datahora do Analytics , para que as próximas duas datahoras sejam interpretadas como idênticas e constituam uma correspondência:

  • base em UTC – 31/12/2014 10:30:15-05:00

  • não UTC – 31/12/2014 15:30:15

Você deve ter cuidado ao mesclar dados baseados em UTC e não baseados em UTC em uma operação Analytics . Ainda que o Analytics faça correspondência entre os dois valores de tempo acima, pode não haver sentido lógico nela, por um valor se referir a uma zona de tempo, enquanto o outro valor não se refere a ela. Para mais informações sobre UTC, consulte Opções de data e hora.