Si una consulta incluye varias fuentes, cree relaciones en Builder para definir cómo combinar sus registros basándose en un valor compartido, como un ID de entidad, un número de cuenta o un departamento.
Nota: En SQL Editor, utilice una cláusula JOIN
para definir relaciones entre las fuentes de una consulta.
Información general
Por ejemplo, supongamos que su consulta incluye una tabla de hechos Pedidos y una tabla de dimensiones Clientes como fuentes. En la pestaña Relationships, puede definir cómo relacionar las órdenes:
OrderID | CustomerID | FechaPedido |
---|---|---|
111222 | 001 | 01/02/2021 |
121212 | 010 | 02/01/2021 |
212121 | 100 | 01/12/2021 |
a los clientes:
CustomerID | NombreCliente | Región |
---|---|---|
001 | Tintorerías AAA | Norte |
010 | Tecnología Wayne | Este |
011 | Señor Taquería | Oeste |
Sugerencia: Para identificar una columna con valores únicos-como CustomerID-en una tabla de dimensiones, márquela como columna Key.
Dado que ambas tablas incluyen ID de cliente, puede crear una relación basada en sus respectivas columnas CustomerID y seleccionar cómo combinar-o unir-sus registros.
Una relación Left join devuelve todos los registros de la primera fuente -a la izquierda- y cualquier también coincidente en la otra.
Sugerencia: Para evitar duplicados en una unión izquierda, asegúrese de que la segunda columna de origen -a la derecha de la relación- contiene valores únicos, como la columna clave de una tabla de dimensiones.
Por ejemplo, en la relación entre nuestras tablas Pedidos y Clientes, Left join devuelve todos los pedidos, con detalles adicionales sobre aquellos con ID de cliente coincidentes en la tabla Clientes. Los pedidos con ID de cliente que no coinciden con en la tabla Clientes incluyen valores nulos para los datos adicionales del cliente.
OrderID | CustomerID | NombreCliente | FechaPedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorerías AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
212121 | 100 | -------------------- | 01/12/2021 | ------- |
Una relación Right join devuelve todos los registros de la segunda fuente -a la derecha- y cualquier también coincidente en la otra.
Sugerencia: Para evitar duplicados en una unión derecha, asegúrese de que la primera columna de origen -a la izquierda de la relación- contiene valores únicos, como la columna clave de una tabla de dimensiones.
En el caso de nuestras tablas Pedidos y Clientes, Right join devuelve todos los clientes, con detalles adicionales para aquellos con IDs coincidentes en la tabla Pedidos. Los clientes con ID que no coinciden con en la tabla Pedidos incluyen valores nulos para los datos adicionales del pedido.
OrderID | CustomerID | NombreCliente | FechaPedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorerías AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
-------- | 011 | Señor Taquería | ------------- | Oeste |
Una relación Inner join devuelve sólo los registros que aparecen en ambas fuentes.
En la relación de nuestras tablas Pedidos y Clientes, Inner join devuelve sólo los pedidos de clientes con IDs coincidentes en ambas fuentes.
OrderID | CustomerID | NombreCliente | FechaPedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorerías AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
Una relación Full join devuelve todos los registros de o fuente.
En el ejemplo de nuestras tablas Pedidos y Clientes, Full join devuelve todos los pedidos y clientes de. Los registros con ID de cliente coincidentes en una sola fuente incluyen valores nulos para los datos que faltan.
OrderID | CustomerID | NombreCliente | FechaPedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorerías AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
-------- | 011 | Señor Taquería | ------------- | Oeste |
212121 | 100 | -------------------- | 01/12/2021 | ------- |
En la pestaña Relationships, se define cómo se relacionan entre sí las múltiples fuentes de la consulta. Para definir esta relación, se emparejan los datos compartidos entre las fuentes y se selecciona cómo unir sus registros en los resultados de la consulta.
Nota: Las relaciones de consulta son acumulativas; se construyen unas sobre otras. Las fuentes de una unión determinan las columnas disponibles para unirse a otras fuentes.
Primer paso Especifique las fuentes a las que desea unirse
Para definir la relación de una fuente con otras fuentes de la consulta, arrástrela desde Sources a la pestaña Relationships.
- Para definir la primera relación entre las fuentes de la consulta, arrastre dos fuentes de Fuentes a Join 1.
- Para definir la relación de una fuente con las fuentes de una unión anterior, haga clic en Añadir otra unión, y arrastre la fuente de Fuentes a la nueva unión.
Nota: Si una consulta tiene varias uniones, organícelas en el orden en que deben producirse, ya que cada unión depende de las fuentes de la unión anterior. Para reposicionar una unión, seleccione Mover hacia arriba o Mover hacia abajo en su menú. Para eliminar una unión, por ejemplo si la consulta ya no incluye su fuente, seleccione Eliminar en su menú.
Segundo paso. Especifique cómo se relacionan las fuentes
Para definir la relación entre fuentes, puede asignar valores compartidos basados en:
- Columnas con los datos correspondientes
- Un campo calculado, para ajustar los valores de una fuente según sea necesario para que coincidan exactamente con la otra fuente
Consejo: Sólo puede unir columnas del mismo tipo de datos. Para hacer coincidir datos de distintos tipos, por ejemplo si los ID de cuenta son números enteros en una fuente y cadenas de texto en la otra, edite el tipo de una columna desde el panel Propiedades de campo.
En la unión, seleccione las columnas correspondientes de cada fuente y seleccione cómo hacer coincidir los registros en función de sus valores.
Operador | Descripción |
---|---|
Igual a (=) | Compara registros con valores idénticos en ambas fuentes |
No igual a (!=) | Compara registros con valores diferentes en ambas fuentes, por ejemplo, para asignar identificadores de cuenta a nombres de cuenta |
Mayor que (>) | Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es mayor o posterior que el valor de la fuente derecha |
Mayor o igual que (>=) | Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es idéntico, mayor o posterior al valor de la fuente derecha |
Menos de (<) | Coincide los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es menor o anterior que el valor de la fuente derecha |
Menor o igual que (<=) | Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es idéntico, menor o anterior al valor de la fuente derecha |
Para asignar con precisión valores entre fuentes, puede aplicar un cálculo a las columnas de origen. Por ejemplo, para asignar a números de cuenta en una tabla de dimensiones Mapa de cuentas, puede que necesite:
- Ajuste los valores dentro de una única columna de origen, como para extraer los seis primeros dígitos de los números de cuenta de una tabla de hechos de Balance de Sumas y Saldos-
SS_LEFT(tb.account, 6)
- Usar valores de columnas de múltiples fuentes, como combinar-o concatenar-números de cuenta e IDs de la tabla de hechos Balance de Sumas y Saldos y la tabla de dimensiones Mapa de Entidades, respectivamente-
CONCAT(tb.account,entity.id)
- Defina un patrón común dentro de los valores de una columna, como para aislar el número de cuenta de los prefijos o sufijos en una tabla de hechos de Balance de Sumas y Saldos-
tb.account LIKE __1005%
Nota: Para definir un patrón, puede utilizar comodines para representar caracteres a ignorar-un guión bajo (
_
) para un solo carácter, o un signo de porcentaje (%
) para ningún carácter o varios.
Para aplicar un cálculo a los valores de una fuente:
- En la unión, seleccione Campo calculado bajo la fuente con los valores a ajustar.
- En el panel Propiedades de campo, arrastre las columnas a incluir en el cálculo desde Fuentes hasta Columnas incluidas.
Nota: Para garantizar un SQL correcto, incluya sólo columnas de la fuente seleccionada.
- En Cálculo, componga la operación de Lenguaje de Consulta Estructurado (SQL) a aplicar a los valores de las columnas.
- Para hacer referencia a la columna en el cálculo, haga clic en ella o seleccione Incluir en el cálculo en su menú bajo Columnas incluidas, o introduzca su número entre paréntesis como
{1}+{2}
. - Para añadir rápidamente un operador SQL o una función al cálculo, selecciónelo en el menú Cálculo .
- Para hacer referencia a la columna en el cálculo, haga clic en ella o seleccione Incluir en el cálculo en su menú bajo Columnas incluidas, o introduzca su número entre paréntesis como
- En la unión, seleccione cómo hacer coincidir los registros en función de los valores de las columnas unidas:
Operador Descripción Igual a (=) Compara registros con valores idénticos en ambas fuentes No igual a (!=) Compara registros con valores diferentes en ambas fuentes, por ejemplo, para asignar identificadores de cuenta a nombres de cuenta Me gusta Si el campo calculado define un patrón con comodines, busca registros con valores que coincidan con el patrón No como Si el campo calculado define un patrón con comodines, busca registros con valores que no coincidan con el patrón Mayor que (>) Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es mayor o posterior que el valor de la fuente derecha Mayor o igual que (>=) Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es idéntico, mayor o posterior al valor de la fuente derecha Menos de (<) Coincide los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es menor o anterior que el valor de la fuente derecha Menor o igual que (<=) Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es idéntico, menor o anterior al valor de la fuente derecha
Paso 3. Definir cualquier unión compuesta
Una única unión puede asignar múltiples valores entre sus fuentes. Para asignar pares de valores adicionales dentro de una unión:
- Haga clic en Añadir campo.
- Especifique las columnas adicionales o los campos calculados que se asignarán entre las fuentes.
- Seleccione si desea unir múltiples valores mapeados (Y) o sólo valores específicos basados en los datos (O).
Si varios valores de una fuente corresponden a valores diferentes en la otra fuente, seleccione y para hacer coincidir los registros en función de varios valores asignados.
Por ejemplo, si una tabla de hechos de Balance de Comprobación tiene columnas que se mapean a la combinación de las columnas clave Número de Cuenta y Entidad en una tabla de dimensión Mapeo de Cuentas, de clic en Y y una las columnas correspondientes de las tablas.
Nota: En SQL Editor, la relación aparece como JOIN ON (TB.entidad = AccountMap.entidad) AND (TB.cuenta = AccountMap.cuenta)
Si los valores de una fuente pueden corresponder a varios valores en la otra fuente en función de los datos, seleccione O para hacer coincidir los registros en función de los valores específicos asignados.
Por ejemplo, si la columna clave Account de una tabla de dimensión Account Mapping se asigna a la columna Account o Sub-account de la tabla de hechos Trial Balance, haga clic en o y una la columna clave a ambas columnas de la tabla de hechos.
Nota: En SQL Editor, la relación aparece como JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Nota: Si la unión compuesta incluye los operadores And y Or, coincidirá con los registros que cumplan todos los criterios separados por un And, además de los que cumplan los criterios separados por un Or.
Paso 4. Seleccione cómo unir los registros de las fuentes
En la unión, seleccione cómo combinar los registros de las fuentes en los resultados de la consulta:
Una vez definida la relación entre todas las fuentes de la consulta, haga clic en Guardar .