Si una consulta incluye varias fuentes, cree relaciones en Builder para definir cómo combinar sus registros en función de un valor compartido, como un ID de entidad, un número de cuenta o un departamento.
Nota: En el Editor SQL, utilice una cláusulaJOIN
para definir relaciones entre las fuentes de una consulta.
Introducción
Por ejemplo, supongamos que su consulta incluye una tabla de hechos Pedidos y una tabla de dimensiones Clientes como fuentes. En la pestaña Relaciones , puedes definir cómo relacionar los pedidos:
ID de pedido | ID de cliente | Fecha del pedido |
---|---|---|
111222 | 001 | 01/02/2021 |
121212 | 010 | 02/01/2021 |
212121 | 100 | 01/12/2021 |
A los clientes:
ID de cliente | Nombre del cliente | Región |
---|---|---|
001 | Tintorería AAA | Norte |
010 | Tecnología Wayne | Este |
011 | Señor Taquería | Oeste |
Consejo: 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 identificaciones de clientes, puede crear una relación basada en sus respectivas columnas CustomerID y seleccionar cómo combinar (o unir) sus registros.
Una relación de unión izquierdadevuelve todos los registros de la primera fuente (a la izquierda) y también cualquier que coincida con en la otra.
Consejo: Para evitar duplicados en una unión izquierda, asegúrese de que la segunda columna de origen (a la derecha de la relación) contenga 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 cuyos ID de cliente coinciden con la tabla Clientes. Los pedidos con ID de cliente que no coinciden con en la tabla Clientes incluyen valores nulos para los datos de cliente adicionales.
ID de pedido | ID de cliente | Nombre del cliente | Fecha del pedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorería AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
212121 | 100 | -------------------- | 01/12/2021 | ------- |
Una relación de unión derechadevuelve todos los registros de la segunda fuente (a la derecha) y también cualquier que coincida con en la otra.
Consejo: Para evitar duplicados en una unión derecha, asegúrese de que la primera columna de origen (a la izquierda de la relación) contenga 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 cuyos ID coinciden en la tabla Pedidos. Los clientes con ID que no coinciden con en la tabla Pedidos incluyen valores nulos para los datos de pedidos adicionales.
ID de pedido | ID de cliente | Nombre del cliente | Fecha del pedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorería AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
-------- | 011 | Señor Taquería | ------------- | Oeste |
Una relación de unión internadevuelve solo los registros que aparecen en ambas fuentes.
En la relación de nuestras tablas Pedidos y Clientes, Inner join devuelve solo pedidos de clientes con ID coincidentes en ambas fuentes.
ID de pedido | ID de cliente | Nombre del cliente | Fecha del pedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorería AAA | 01/02/2021 | Norte |
121212 | 010 | Tecnología Wayne | 02/01/2021 | Este |
Una relación de unión completadevuelve todos los registros de cualquier fuente .
En el ejemplo de nuestras tablas Pedidos y Clientes, Full join devuelve todos los pedidos y clientes. Los registros con ID de cliente que coinciden en una sola fuente incluyen valores nulos para los datos faltantes.
ID de pedido | ID de cliente | Nombre del cliente | Fecha del pedido | Región |
---|---|---|---|---|
111222 | 001 | Tintorería 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 Relaciones , define cómo se relacionan entre sí las múltiples fuentes de la consulta. Para definir esta relación, se combinan 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 basan unas en otras. Las fuentes en una unión determinan las columnas disponibles para unirse a otras fuentes.
Paso 1. Especifique las fuentes a las que unirse
Para definir la relación de una fuente con otras fuentes en la consulta, arrástrela desde Fuentes a la pestaña Relaciones .
- Para definir la primera relación entre las fuentes de la consulta, arrastre dos fuentes desde Fuentes a Unir 1.
- Para definir la relación de una fuente con las fuentes de una unión anterior, haga clic en Agregar otra unióny arrastre la fuente desde Fuentes a la nueva unión.
Nota: Si una consulta tiene múltiples uniones, organícelas en el orden en que deben ocurrir, 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 de su menú.
Paso 2. Especificar cómo se relacionan las fuentes
Para definir la relación entre fuentes, puede asignar valores compartidos en función de:
- Columnas con 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
Consejo: Solo puedes unir columnas del mismo tipo de datos. Para hacer coincidir datos de diferentes tipos de datos, 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 del 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 (=) | Coincide con registros con valores idénticos en ambas fuentes |
No es igual a (!=) | Coincide con registros con diferentes valores 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 al 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 que (<) | Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es menor o anterior al valor de la fuente derecha |
Menor o igual a (<=) | 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 valores con precisión entre fuentes, puede aplicar un cálculo a las columnas de origen. Por ejemplo, para asignar números de cuenta en una tabla de dimensiones de Mapa de cuentas, es posible que necesite:
- Ajuste los valores dentro de una sola columna de origen, por ejemplo, para extraer los primeros seis dígitos de los números de cuenta en una tabla de hechos de Balance de prueba—
SS_LEFT(tb.account, 6)
- Utilice valores de las columnas de varias fuentes, como combinar (o concatenar [ ) números de cuenta e identificaciones de la tabla de hechos de Balance de comprobación y la tabla de dimensiones del Mapa de entidades previamente unidas, respectivamente:
CONCAT(tb.account,entity.id)
- Defina un patrón común dentro de los valores de una columna, como aislar el número de cuenta de los prefijos o sufijos en una tabla de hechos de Balance de prueba—
tb.account LIKE __1005%
Nota: Para definir un patrón, puede usar 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 para varios caracteres.
Para aplicar un cálculo a los valores de una fuente:
- En la unión, seleccione Campo calculado debajo de la fuente con los valores a ajustar.
- En el panel Propiedades del campo , arrastre las columnas que desea incluir en el cálculo desde Fuentes a Columnas incluidas.
Nota: Para garantizar un SQL correcto, incluya solo columnas de la fuente seleccionada.
- En Cálculo, componga la operación de lenguaje de consulta estructurado (SQL) que se aplicará a los valores de las columnas.
- Para hacer referencia a una columna en el cálculo, haga clic en ella o seleccione Incluir en el cálculo en su menú bajo Columnas incluidas, o ingrese su número entre paréntesis, como
{1}+{2}
. - Para agregar rápidamente un operador SQL o una función al cálculo, selecciónelo en el menú Cálculo .
- Para hacer referencia a una columna en el cálculo, haga clic en ella o seleccione Incluir en el cálculo en su menú bajo Columnas incluidas, o ingrese 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 (=) Coincide con registros con valores idénticos en ambas fuentes No es igual a (!=) Coincide con registros con diferentes valores 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, coincide con los registros con valores que coinciden con el patrón No me gusta Si el campo calculado define un patrón con comodines, coincide con los registros con valores que no coinciden 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 al 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 que (<) Coincide con los registros cuando el valor numérico o de fecha/hora de la fuente izquierda es menor o anterior al valor de la fuente derecha Menor o igual a (<=) 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. Defina 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 Agregar campo.
- Especifique las columnas adicionales o los campos calculados para asignar entre las fuentes.
- Seleccione si desea unir múltiples valores mapeados (y) o solo valores específicos basados en los datos (o).
Si varios valores en una fuente corresponden a diferentes valores 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 prueba tiene columnas que se asignan a la combinación de las columnas clave Número de cuenta y Entidad en una tabla de dimensión de Asignación de cuenta, haga clic en Y y una las columnas correspondientes de las tablas.
Nota: En el Editor SQL, la relación aparece como JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Si los valores de una fuente pueden corresponder a múltiples valores en la otra fuente dependiendo de los datos, seleccione o para hacer coincidir los registros en función de los valores asignados específicos.
Por ejemplo, si la columna clave Cuenta en una tabla de dimensión de Asignación de cuentas se asigna a la columna Cuenta o Subcuenta en la tabla de hechos Balance de prueba, haga clic en O y una la columna clave a ambas columnas de la tabla de hechos.
Nota: En el Editor SQL, la relación aparece como JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Nota: Si su unión compuesta incluye los operadores Y y O , coincidirá con los registros que cumplan todos los criterios separados por Y, más cualquiera que cumpla los criterios separados por O.
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:
Después de definir la relación entre todas las fuentes de la consulta, haga clic en Guardar .
Nota: Al guardarse, la consulta elimina automáticamente cualquier fuente que no tenga una 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.