Se uma consulta incluir várias origens, crie relacionamentos no Builder para definir como combinar seus registros com base em um valor compartilhado, como ID de entidade, número de conta ou departamento.
Observação: Em SQL Editor, use uma cláusula JOIN para definir relacionamentos entre as fontes de uma consulta.
Visão geral
Por exemplo, digamos que a sua consulta inclua uma tabela de fatos Orders (Pedidos) e uma tabela de dimensão Customers (Clientes) como fontes. Na guia Relationships, você pode definir como relacionar os pedidos:
| OrderID | ID do cliente | Data do pedido |
|---|---|---|
| 111222 | 001 | 01/02/2021 |
| 121212 | 010 | 02/01/2021 |
| 212121 | 100 | 01/12/2021 |
para os clientes:
| ID do cliente | Nome do cliente | Região |
|---|---|---|
| 001 | Lavagem a seco AAA | Norte |
| 010 | Tecnologia Wayne | Leste |
| 011 | Señor Taqueria | Oeste |
Dica: Para identificar uma coluna com valores exclusivos - como CustomerID- em uma tabela de dimensão, marque-a como uma coluna Key .
Como ambas as tabelas incluem IDs de clientes, você pode criar um relacionamento com base nas respectivas colunas CustomerID e selecionar como combinar - ou unir-se a- seus registros.
Uma relação Left join retorna todos os registros da primeira fonte - à esquerda - e qualquer também correspondente na outra.
Dica: Para evitar duplicatas em uma união à esquerda , certifique-se de que a segunda coluna de origem - à direita na relação - contenha valores exclusivos, como a coluna-chave de uma tabela de dimensão.
Por exemplo, na relação entre nossas tabelas Orders e Customers, Left join retorna todos os pedidos, com detalhes adicionais sobre aqueles com IDs de clientes correspondentes na tabela Customers. Os pedidos com IDs de cliente e não correspondentes na tabela Customers incluem valores nulos para os dados adicionais do cliente.
| ID do pedido | ID do cliente | Nome do cliente | Data do pedido | Região |
|---|---|---|---|---|
| 111222 | 001 | Lavanderia AAA | 01/02/2021 | Norte |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Leste |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Uma relação Right join retorna todos os registros da segunda fonte - à direita - e qualquer também correspondente na outra.
Dica: Para evitar duplicatas em uma junção direita , certifique-se de que a primeira coluna de origem - na esquerda na relação - contenha valores exclusivos, como a coluna-chave de uma tabela de dimensão.
No caso de nossas tabelas Orders e Customers, Right join retorna todos os clientes, com detalhes adicionais para aqueles com IDs correspondentes na tabela Orders. Os clientes com IDs e não correspondentes na tabela Orders incluem valores nulos para os dados adicionais do pedido.
| ID do pedido | ID do cliente | Nome do cliente | Data do pedido | Região |
|---|---|---|---|---|
| 111222 | 001 | Lavanderia AAA | 01/02/2021 | Norte |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Leste |
| -------- | 011 | Señor Taqueria | ------------- | Oeste |
Uma relação Inner join retorna somente os registros que aparecem em e em ambas as fontes.
No relacionamento das tabelas Orders e Customers, Inner join retorna somente pedidos de clientes com IDs correspondentes em ambas as fontes.
| ID do pedido | ID do cliente | Nome do cliente | Data do pedido | Região |
|---|---|---|---|---|
| 111222 | 001 | Lavanderia AAA | 01/02/2021 | Norte |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Leste |
Uma relação Full join retorna todos os registros da fonte ou.
No exemplo de nossas tabelas Orders and Customers, Full join retorna todos os pedidos e clientes. Os registros com IDs de clientes correspondentes em apenas uma fonte incluem valores nulos para dados ausentes.
| ID do pedido | ID do cliente | Nome do cliente | Data do pedido | Região |
|---|---|---|---|---|
| 111222 | 001 | Lavanderia AAA | 01/02/2021 | Norte |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Leste |
| -------- | 011 | Señor Taqueria | ------------- | Oeste |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Na guia Relacionamentos, você define como as várias fontes da consulta se relacionam entre si. Para definir esse relacionamento, você combina os dados compartilhados entre as fontes e seleciona como unir seus registros nos resultados da consulta.
Observação: As relações de consulta são cumulativas; elas se baseiam umas nas outras. As fontes em uma união determinam as colunas disponíveis para união com outras fontes.
Etapa 1. Especifique as fontes a serem unidas
Para definir o relacionamento de uma fonte com outras fontes na consulta, arraste-a de Sources para a guia Relationships.
- Para definir a primeira relação entre as origens da consulta, arraste duas origens de Sources para Join 1.
- Para definir o relacionamento de uma fonte com as fontes de uma união anterior, clique em Adicionar outra união e arraste a fonte de Sources para a nova união.
Observação: Se uma consulta tiver várias uniões, organize-as na ordem em que devem ocorrer, pois cada união depende das origens da união anterior. Para reposicionar uma união, selecione Move up ou Move down em seu menu. Para excluir uma união, por exemplo, se a consulta não incluir mais a origem, selecione Remover do menu.
Etapa 2. Especificar como as fontes se relacionam
Para definir o relacionamento entre as fontes, você pode mapear os valores compartilhados com base em:
- Colunas com dados correspondentes
- Um campo calculado, para ajustar os valores de uma fonte conforme necessário para corresponder com precisão à outra fonte
Dica: Você só pode unir colunas do mesmo tipo de dados. Para combinar dados de tipos de dados diferentes, por exemplo, se os IDs de conta forem inteiros em uma fonte e cadeias de texto na outra, edite o tipo de uma coluna no painel Propriedades de campo.
Na união, selecione as colunas correspondentes de cada fonte e selecione como fazer a correspondência de registros com base em seus valores.
| Operador | Descrição |
|---|---|
| Igual a | Corresponde a registros com valores idênticos em ambas as fontes |
| Não igual a | Corresponde a registros com valores diferentes em ambas as fontes, como para mapear IDs de contas para nomes de contas |
| Maior que | Corresponde aos registros quando o valor numérico ou de data/hora da fonte esquerda é maior ou posterior ao valor da fonte direita |
| Maior ou igual a | Corresponde aos registros quando o valor numérico ou de data/hora da fonte esquerda é idêntico, maior ou posterior ao valor da fonte direita |
| Menor que (<) | Corresponde a registros quando o valor numérico ou de data/hora da fonte à esquerda é menor ou anterior ao valor da fonte à direita |
| Menor ou igual a | Corresponde aos registros quando o valor numérico ou de data/hora da fonte esquerda é idêntico, menor ou anterior ao valor da fonte direita |
Para mapear com precisão os valores entre as fontes, você pode aplicar um cálculo às colunas de origem. Por exemplo, para mapear para números de conta em uma tabela de dimensão Account Map, talvez você precise:
- Ajustar os valores em uma única coluna de origem, por exemplo, para extrair os seis primeiros dígitos dos números de conta em uma tabela de fatos Trial Balance -
SS_LEFT(tb.account, 6) - Use valores de colunas de várias fontes, como combinar ou concatenar-números de contas e IDs da tabela de fatos Trial Balance e da tabela de dimensão Entity Map unidas anteriormente, respectivamente-
CONCAT(tb.account,entity.id) - Defina um padrão comum nos valores de uma coluna, como para isolar o número da conta dos prefixos ou sufixos em uma tabela de fatos de Balancete -
tb.account LIKE __1005%
Observação: Para definir um padrão, você pode usar curingas para representar caracteres a serem ignorados - um sublinhado (
_) para um único caractere ou um sinal de porcentagem (%) para nenhum ou vários caracteres.
Para aplicar um cálculo aos valores de uma fonte:
- Na união, selecione Campo calculado sob a fonte com os valores a serem ajustados.
- No painel Field properties, arraste as colunas a serem incluídas no cálculo de Sources para Included columns.
Observação: Para garantir o SQL adequado, inclua somente colunas da fonte selecionada.
- Em Cálculo, componha a operação Structured Query Language (SQL) a ser aplicada aos valores das colunas.
- Na união, selecione como fazer a correspondência de registros com base nos valores das colunas unidas:
Operador Descrição Igual a Corresponde a registros com valores idênticos em ambas as fontes Não igual a Corresponde a registros com valores diferentes em ambas as fontes, por exemplo, para mapear IDs de contas para nomes de contas Como Se o campo calculado definir um padrão com curingas, corresponderá aos registros com valores que correspondam ao padrão Não como Se o campo calculado definir um padrão com curingas, corresponderá aos registros com valores que e não correspondam ao padrão Maior que Corresponde aos registros quando o valor numérico ou de data/hora da fonte esquerda é maior ou posterior ao valor da fonte direita Maior ou igual a Corresponde aos registros quando o valor numérico ou de data/hora da fonte esquerda é idêntico, maior ou posterior ao valor da fonte direita Menor que (<) Corresponde a registros quando o valor numérico ou de data/hora da fonte à esquerda é menor ou anterior ao valor da fonte à direita Menor ou igual a Corresponde a registros quando o valor numérico ou de data/hora da fonte à esquerda é idêntico, menor ou anterior ao valor da fonte à direita
Etapa 3. Defina quaisquer uniões compostas
Uma única união pode mapear vários valores entre suas fontes. Para mapear pares de valores adicionais em uma união:
- Clique em Adicionar campo.
- Especifique as colunas adicionais ou os campos calculados a serem mapeados entre as fontes.
- Selecione se você deseja unir vários valores mapeados de (e) ou apenas valores específicos de com base nos dados (ou).
Se vários valores em uma fonte corresponderem a valores diferentes na outra fonte, selecione e para combinar registros com base em vários valores mapeados.
Por exemplo, se uma tabela de fatos Trial Balance tiver colunas que mapeiam para a combinação das colunas-chave Account number e Entity em uma tabela de dimensão Account Mapping, clique em And e junte as colunas correspondentes das tabelas.
Observação: No SQL Editor, o relacionamento aparece como JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Se os valores de uma fonte puderem corresponder a vários valores na outra fonte, dependendo dos dados, selecione ou para combinar registros com base nos valores mapeados específicos.
Por exemplo, se a coluna-chave Account em uma tabela de dimensão Account Mapping for mapeada para a coluna Account ou Sub-account na tabela de fatos Trial Balance, clique em ou e junte a coluna-chave a ambas as colunas da tabela de fatos.
Observação: No SQL Editor, a relação aparece como JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Observação: Se a sua união composta incluir os operadores And e Or, ela corresponderá aos registros que atendem a todos os critérios separados por And, além de qualquer um que atenda aos critérios separados por Or.
Etapa 4. Selecione como unir os registros das fontes
Na união, selecione como combinar os registros das fontes nos resultados da consulta:
Depois que você definir o relacionamento entre todas as origens da consulta, clique em Salvar .
Observação: Quando salva, a consulta remove automaticamente todas as fontes sem relacionamento definido.
<!--Performing a UNION
When you add a relationship between two sources, you create a
JOIN clause in the query's SQL, which combines the data
into new columns. To instead combine your data into new rows,
you can use a UNION operator in the SQL Editor.
However, a union may create more records or rows
than Spreadsheets or another consumer of the results can support.
As an alternative,
create a table
and append the sources' data as datasets, which you can then slice-and-dice
and analyze in a query.