Si una consulta incluye varias fuentes, crea relaciones en Generador 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 Editor SQL, utiliza una cláusula JOIN para definir relaciones entre los orígenes de una consulta.
Introducción
Por ejemplo, Afirmo que tu consulta incluye una tabla de datos de Pedidos y una tabla de dimensiones de Clientes como fuentes. En la pestaña Relaciones, puedes 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 |
Consejo: Para identificar una columna con valores únicos (como CustomerID) en una tabla de dimensiones, márcala como una columna principal.
Como ambas tablas incluyen ID de cliente, puedes crear una relación basada en sus respectivas columnas CustomerID y seleccionar cómo combinar -o join-sus Registros.
Una relación Combinación izquierda devuelve todos los registros del primer origen (a la izquierda) y cualquier también coincidente en el otro.
Consejo: Para evitar duplicados en una Combinación izquierda, asegúrate de que la segunda columna de origen (en 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, Combinación izquierda: devuelve todos los pedidos, con detalles adicionales sobre los que tienen ID de pedido coincidentes en la tabla Clientes. Los Pedidos con ID de cliente no coincidentes 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 del segundo origen -a la derecha- y cualquier también coincidente en el otro.
Consejo: Para evitar duplicados en una Unión derecha, asegúrate 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, Combinación derecha devuelve todos los clientes, con detalles adicionales para los que tienen ID coincidentes en la tabla Pedidos. Los clientes con ID no coincidentes 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 Combinación interna: devuelve solo los Registros que aparecen en ambos orígenes.
En la relación de nuestras tablas Pedidos y Clientes, Combinación interna solo devuelve los pedidos de los clientes cuyos ID coinciden 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 Combinación total devuelve todos los registros de ambos orígenes.
En el ejemplo de nuestras tablas Pedidos y Clientes, Combinación total: devuelve a todos los pedidos y clientes. 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 Relaciones, define cómo se relacionan entre sí las múltiples fuentes de la consulta. Para definir esta relación, debes hacer coincidir los datos compartidos entre las fuentes, y seleccionar cómo unir sus registros en los resultados de la consulta.
Nota: Las relaciones de las consultas son acumulativas; se basan una en la otra. Las fuentes de una unión determinan las columnas disponibles para unirse a otras fuentes.
Paso 1. Especificar los orígenes a combinar
Para definir la relación de un origen con otros orígenes de la consulta, arrástralo desde Orígenes a la pestaña Relaciones.
- Para definir la primera relación entre los orígenes de la consulta, arrastra dos orígenes de Orígenes a Unir 1.
- Para definir la relación de un origen con los orígenes de una unión anterior, haz clic en Añadir otra unión, y arrastra el origen desde Orígenes a la nueva unión.
Nota: Si una consulta tiene varias uniones, organízalas 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, selecciona Desplazar hacia arriba o Desplazar hacia abajo en su menú. Para eliminar una unión, por ejemplo si la consulta ya no incluye su origen, selecciona Quitar en su menú.
Paso 2. Especificar cómo se relacionan las fuentes
Para definir la relación entre Orígenes, puedes asignar valores compartidos basados en:
- Columnas con datos correspondientes
- Un campo calculado, para ajustar los valores de un origen según sea necesario para que coincidan exactamente con el otro origen.
Consejo: Solo puedes unir columnas del mismo tipo de datos. Para hacer coincidir datos de distintos tipos, como si los ID de cuenta son números enteros en una fuente y cadenas de texto en la otra, edita el tipo de una columna desde el panel Propiedades de campo.
En la unión, selecciona las columnas correspondientes desde cada origen, y selecciona 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 ambos orígenes. |
| No es igual a (!=) | Empareja 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. |
| Es mayor o igual que (>=) | Coincide con los Registros cuando el valor numérico o de fecha/hora del Orígenes izquierdo es idéntico, mayor o posterior al valor del Orígenes derecho. |
| Menos que (<) | Coincide con los Registros cuando el valor numérico o de fecha/hora de la fuente de la izquierda es menor o anterior que el valor de la fuente de la derecha. |
| Menor o igual que (<=) | Coincide con los Registros cuando el valor numérico o de fecha/hora del Orígenes izquierdo es idéntico, menor o anterior al valor del Orígenes derecho. |
Para asignar con precisión valores entre orígenes, puedes aplicar un cálculo a las columnas de origen. Por ejemplo, para asignar a números de la cuenta en una tabla de dimensiones de Contabilidad, puede que necesites:
- Ajusta los valores dentro de una única columna de origen, como para extraer los seis primeros dígitos de los Números de la cuenta en una tabla de datos de Balance de Sumas y Saldos-
SS_LEFT(tb.account, 6) - Utilizar valores de columnas de múltiples fuentes, como combinar-o concatenar-números de cuenta e ID 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) - Define un patrón común dentro de los valores de una columna, como para aislar el Número de la cuenta de prefijos o sufijos en una tabla de datos de Balance de Sumas y Saldos-
tb.account LIKE __1005%
Nota: Para definir un patrón, puedes 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 un origen:
- En la unión, selecciona Campo calculado bajo el origen con los valores a ajustar.
- En el panel Propiedades de campo, arrastra las columnas que quieras incluir en el cálculo desde Orígenes hasta Columnas incluidas.
Nota: Para garantizar un SQL correcto, incluye solo columnas del origen seleccionado.
- Debajo de Cálculo, compón la operación en Lenguaje de Consulta Estructurado (SQL) para aplicarla a los valores de las columnas.
- Para hacer referencia a una columna en el cálculo, haz clic en ella o selecciona Incluir en cálculo en su menú bajo Columnas incluidas, o introduce 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ónalo desde el menú Cálculo .
- Para hacer referencia a una columna en el cálculo, haz clic en ella o selecciona Incluir en cálculo en su menú bajo Columnas incluidas, o introduce su número entre paréntesis como
- En la unión, selecciona 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 ambos orígenes. No es igual a (!=) Empareja 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 es como Si el Campo calculado define un patrón con comodines, coincide con 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 de la izquierda es mayor o posterior que el valor de la fuente de la derecha. Es mayor o igual que (>=) Coincide con los Registros cuando el valor numérico o de fecha/hora del Orígenes izquierdo es idéntico, mayor o posterior al valor del Orígenes derecho. Menos que (<) Coincide con los Registros cuando el valor numérico o de fecha/hora de la fuente de la izquierda es menor o anterior que el valor de la fuente de la derecha. Menor o igual que (<=) Coincide con los Registros cuando el valor numérico o de fecha/hora del Orígenes izquierdo es idéntico, menor o anterior al valor del Orígenes derecho.
Etapa 3. Define 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:
- Haz clic en Agregar campos.
- Especifica las columnas adicionales o campos calculados que se asignarán entre las fuentes.
- Selecciona si unir múltiples valores asignados (Y) o solo valores específicos basados en los datos (O).
Si varios valores de un origen corresponden cada uno a valores distintos del otro origen, selecciona Y para hacer coincidir los registros en función de varios valores asignados.
Por ejemplo, si una tabla de datos Balance de Sumas y Saldos tiene columnas que se asignan a la combinación de las columnas clave Número de la cuenta y Entidad de una tabla de dimensiones Asignación de cuentas, haz clic en Y y une las columnas correspondientes de las tablas.
Nota: En Editor SQL, la relación aparece como JOIN ON (TB.entidad = AccountMap.entidad) AND (TB.cuenta = AccountMap.cuenta)
Si los valores de un origen pueden corresponder a varios valores del otro origen en función de los datos, selecciona O para hacer coincidir los registros en función de los valores específicos asignados.
Por ejemplo, si la columna clave Cuenta de una tabla de dimensiones de Asignación de Cuentas se asigna a la columna Cuenta o Subcuenta de la tabla de datos Balance de Sumas y Saldos, haz clic en o y une la columna clave a ambas columnas de la tabla de datos.
Nota: En Editor SQL, la relación aparece como JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Nota: Si tu unión compuesta incluye los operadores Y y O, coincide con los Registros que cumplen todos los criterios separados por un Y, más cualquiera que cumpla los criterios separados por un O.
Etapa 4. Selecciona cómo unir los Registros de los orígenes.
En la unión, selecciona 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, haz clic en Guardar .
Nota: Cuando se guarda, la consulta elimina automáticamente cualquier origen 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.