Si una consulta incluye varios Orígenes, 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 Editor SQL, utilice una cláusula JOIN
para definir relaciones entre los orígenes 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 orígenes. 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 una columna clave.
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 Izquierda 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 a la Izquierda de , asegúrese de que la segunda columna de origen -a la derecha de en 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, Izquierda 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 no coincidentes en la Tabla de 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 Derecha 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-en la izquierda relación-contiene valores únicos, como la columna clave de una tabla de dimensiones.
En el caso de nuestras tablas Pedidos y Clientes, Derecha join devuelve todos los clientes, con detalles adicionales para aquellos con IDs coincidentes en la tabla Pedidos. Los clientes con ID no coincidentes en la Tabla de 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, Combinación interna: devuelve sólo los pedidos de clientes con IDs coincidentes en ambos orígenes.
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 origen.
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 sólo en un origen 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í los múltiples Orígenes de la consulta. Para definir esta relación, hay que hacer coincidir los datos compartidos entre los Orígenes, y seleccionar cómo unir sus registros en los resultados de la consulta.
Nota: Las relaciones de consulta son acumulativas; se construyen unas sobre otras. Los Orígenes en un join determinan las Columnas disponibles para unir a otros Orígenes.
Etapa 1. Especifique los Orígenes a unir
Para definir la relación de un Origen con otros Orígenes en la consulta, arrástrelo desde Orígenes a la pestaña Relaciones .
- Para definir la primera relación entre los Orígenes de la consulta, arrastre dos Orígenes de Orígenes a Join 1.
- Para definir la relación de un origen con los orígenes de una unión anterior, haga clic en Agregar otra unión, y arrastre el origen desde Orígenes 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 los Orígenes de la unión anterior. Para reposicionar una unión, seleccione Subir o Bajar en su menú. Para eliminar una unión, por ejemplo si la consulta ya no incluye su origen, seleccione Quitar en su menú.
Etapa 2. Especifique cómo se relacionan los Orígenes
Para definir la relación entre Orígenes, 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 con precisión con la otra fuente.
Tipo: 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 un origen y cadenas de texto en el otro, edite el tipo de una columna desde el panel Propiedades de campo .
En la unión, seleccione las columnas correspondientes de cada origen y seleccione cómo hacer coincidir los registros en función de sus valores.
Operador | Descripción |
---|---|
Igual a (=) | Coincide con registros con valores idénticos en ambas fuentes. |
No igual a (!=) | Coincide con registros con valores diferentes en ambas fuentes, como para asignar ID de cuenta a nombres de cuenta. |
Mayor que (>) | Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente de la Izquierda es mayor o posterior que el valor de la fuente de la Derecha. |
Mayor que o igual a (>=) | Coincide con registros cuando el valor numérico o de fecha/hora de la fuente de la Izquierda es idéntico, mayor o posterior al valor de la fuente de la Derecha. |
Menos de (<) | Coincide con 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 de la Izquierda es idéntico, menor o anterior al valor de la fuente de la Derecha. |
Para asignar valores con precisión entre orígenes, puede aplicar un cálculo a las columnas de origen. Por ejemplo, para asignar a Números de cuenta en una Tabla de dimensiones de 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 en una tabla de hechos de Balance de Sumas y Saldos-
SS_LEFT(tb.account, 6).
- Utilice valores de columnas de múltiples orígenes, como combine-o concatene-números de cuenta e IDs de la tabla de hechos Balance de Sumas y Saldos y de 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 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 o múltiples caracteres.
Aplicar un cálculo a los valores de un Origen:
- En la unión, seleccione Campo calculado bajo el origen con los valores a ajustar.
- En el panel Propiedades de campo , arrastre las columnas a incluir en el cálculo desde Orígenes hasta Columnas incluidas.
Nota: Para garantizar un SQL correcto, incluya sólo columnas del Origen seleccionado.
- En Cálculo, componga la operación de Lenguaje de Consulta Estructurado (SQL) a aplicar a los valores de las Columnas.
- 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 (=) Coincide con registros con valores idénticos en ambas fuentes. No igual a (!=) Coincide con registros con valores diferentes en ambas fuentes, como para asignar ID 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 de la Izquierda es mayor o posterior que el valor de la fuente de la Derecha. Mayor que o igual a (>=) Coincide con registros cuando el valor numérico o de fecha/hora de la fuente de la Izquierda es idéntico, mayor o posterior al valor de la fuente de la Derecha. Menos de (<) Coincide con 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 de la Izquierda es idéntico, menor o anterior al valor de la fuente de la Derecha.
Etapa 3. Definir cualquier unión compuesta
Una única unión puede asignar varios valores entre sus orígenes. Para asignar pares de valores adicionales dentro de una unión:
- Haga clic en Agregar campo.
- Especifique las Columnas adicionales o campos calculados a mapear Entre los Orígenes.
- Seleccione si desea unir múltiples valores mapeados (Y) o sólo valores específicos basados en los datos (O).
Si varios valores de un origen corresponden a distintos valores del otro origen, seleccione y para que coincidan los registros en función de los distintos valores asignados.
Por ejemplo, si una tabla de hechos de Balance de Comprobación tiene columnas que se asignan a la combinación de las columnas clave Número de cuenta y Entidad en una tabla de dimensiones de Asignación de cuentas, haga clic en Y y una las columnas correspondientes de las tablas.
Nota: En SQL Editor, la relación aparece como JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Si los valores de un origen pueden corresponderse con varios valores en el otro origen 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 corresponde con 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 Y y O , coinciden los registros que cumplen todos los criterios separados por un Y, además de los que cumplen los criterios separados por un O.
Etapa 4. Seleccione cómo unir los registros de los Orígenes.
En la unión, seleccione cómo combinar los registros de las fuentes en los resultados de la consulta:
Después de definir la relación entre todos los Orígenes de la consulta, haga clic en Guardar como .
Nota: Cuando se guarda, la consulta elimina automáticamente las fuentes sin relación definida.
<!--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.