Por que motivo existem valores nulos na minha consulta de resultados secundários unidos?

Os resultados unidos são uma funcionalidade útil para combinar dados de diferentes explorações de forma rápida e sem desenvolvimento no LookML. Os resultados unidos executam efetivamente uma junção à esquerda entre a consulta principal e as consultas secundárias, o que significa que os nomes dos campos, os valores correspondentes e a tabela de resultados finais dependem da forma como os dados das consultas secundárias correspondem aos da consulta principal.

Isto pode causar resultados inesperados quando estiver a fazer a união de dados entre explorações. A documentação de resultados unidos aborda algumas destas condições,como:

No entanto, o que faz quando espera que um valor de uma consulta secundária corresponda a um valor na consulta principal, mas o resultado final apresenta valores nulos?

Esta página aborda a resolução deste resultado inesperado.

Exemplo de utilização

O exemplo de utilização seguinte baseia-se num conjunto de dados de comércio eletrónico de amostra que contém informações de utilizadores e encomendas. Para este exemplo, quer unir uma consulta, uma contagem de utilizadores por cidade (Contagem de utilizadores agrupada por Cidade dos utilizadores), com uma consulta secundária, uma contagem de encomendas (Contagem de encomendas) agrupada por Cidade dos utilizadores e Estado dos utilizadores:

Consulta principal

A consulta principal é Contagem de utilizadores agrupada por Cidade dos utilizadores:

Explore a tabela de dados de resultados unidos que mostra os resultados da consulta principal.

Consulta secundária

A consulta secundária é Número de encomendas agrupado por Cidade dos utilizadores e Estado dos utilizadores:

Explore a tabela de dados de resultados unidos que mostra os resultados da consulta secundária.

A regra de união está definida para unir ambas as consultas por Cidade dos utilizadores, o campo que ambas as consultas têm em comum. Tendo em conta o conhecimento do conjunto de dados e o comportamento esperado dos resultados unidos explicado na documentação anteriormente referida, sabe que, em cada linha, cada cidade deve ser associada a um estado e a uma contagem de utilizadores. Espera que os resultados unidos correspondam a todos os valores e não apresentem valores nulos.

No entanto, existem valores nulos nos resultados. Mais de metade das cidades não tem correspondência com um estado ou uma contagem de encomendas:

Tabela de dados de resultados unidos que mostra valores nulos para campos de consulta secundários.

Soluções

Não entre em pânico. Se tiver a certeza de que existem valores correspondentes nos seus dados (experimente executar uma consulta separada para confirmar que é este o caso), existem várias soluções possíveis para corrigir este resultado, incluindo:

  • Ordenar cada consulta de origem da mesma forma.
  • Aumentar o limite de linhas de consultas de origem.

Ordenar cada consulta de origem da mesma forma

Uma vez que os resultados unidos se baseiam em explorações, que estão limitadas a 500 linhas por predefinição, por vezes, os resultados da consulta que está a unir não são incluídos no resultado final.

Para corrigir este problema, pode editar e ordenar as suas consultas de origem individuais para que correspondam melhor entre si. 

No exemplo de utilização, a consulta principal é ordenada por Cidade do utilizador de forma ascendente. A consulta secundária não é. Para fazer uma melhor correspondência entre os resultados das duas consultas, pode ordenar a consulta secundária da mesma forma que a consulta principal, neste caso, por Cidade dos utilizadores em ordem ascendente.

A ordenação da consulta secundária de forma semelhante à consulta principal faz com que os resultados correspondam com maior precisão na união final:

Tabela de dados de resultados unidos que apresenta valores não nulos para os campos de consulta principal e secundária.

Aumente o limite de linhas de consultas de origem

Tal como na primeira solução descrita anteriormente, os valores nulos inesperados podem ser causados pelos limites de linhas definidos nas consultas de origem. Especificamente neste caso, a consulta secundária (limitada ao predefinido de 500 linhas) não tem linhas suficientes para corresponder a todas as linhas geradas pela consulta principal, o que faz com que sejam apresentados resultados nulos na união final.

Para aumentar o número de linhas na consulta secundária de modo a corresponder à consulta principal, pode aumentar o limite de linhas da consulta secundária. Isto resulta em mais linhas possíveis para corresponder à consulta principal e menos valores nulos nas colunas da consulta secundária: 

Tabela de dados de resultados unidos que apresenta valores não nulos para os campos de consulta principal e secundária.

Resumo

Quando se deparar com resultados inesperados da união, pode seguir os seguintes passos para resolver o problema:

  1. Selecione a opção Limpar cache e atualizar no menu de roda dentada do Explorar para garantir que a consulta está a obter os resultados mais atualizados.
  2. Confirme que existem valores correspondentes entre as consultas de origem em que são apresentados valores nulos, conforme descrito na secção E se uma consulta não tiver um valor de dados correspondente? da documentação de resultados unidos.
  3. Ordenar as consultas de origem para que correspondam melhor entre si.
  4. Aumente o limite de linhas das consultas de origem além da predefinição para expor mais linhas que podem ser correspondidas e unidas.
  5. Se nenhuma das soluções abordadas aqui resolver o comportamento, codifique a lógica de junção no LookML para um resultado mais preciso, se possível.