Strategy ONE
Preservar todos los elementos del resultado del paso final
El siguiente VLDB Conservar todos los elementos del resultado del paso final La configuración de las propiedades determina cómo se realizará un outer join en el resultado final, así como las tablas de búsqueda y de relaciones:
- Si elige la opción por defecto Conservar los elementos comunes de la tabla de resultados del paso final y la tabla de búsqueda/relaciones, el motor SQL generará una equi-unión. Por consiguiente, solo verá los elementos comunes a las dos tablas.
- Si elige la opción Conservar todos los elementos del paso del resultado final, el motor SQL generará una unión externa y el informe contendrá todos los elementos del conjunto de resultados final. El Motor SQL genera un outer join desde la tabla de hechos a la tabla de búsqueda, así como a las tablas de relación (si las hay). Esto se debe a que resulta difícil distinguir qué tabla se utiliza como tabla de búsqueda y cuál se usa como tabla de relación. Por ejemplo, LOOKUP_DAY actúa como tabla de búsqueda para el atributo Día y como tabla de relación para los atributos Día y Mes.
Esta opción no se debe usar en warehouses estándar, donde las tablas de lookup se mantienen debidamente y todos los elementos de la tabla de hechos tienen entradas en su tabla de lookup correspondiente. Debe utilizarse únicamente cuando un atributo determinado de la tabla de hechos contiene más elementos de atributo (exclusivos) que su tabla de búsqueda correspondiente. En el ejemplo anterior, la tabla de hechos contiene datos de ventas de distintas tiendas, pero la table de tiendas solo contiene cuatro tiendas. No debería ser el caso en un warehouse de datos estándar, porque la tabla de búsqueda, por definición, debería contener todos los elementos de atributos. No obstante, esto podría pasar si las tablas de hecho se actualizasen con más frecuencia que las de búsqueda.
- Si elige la opción Conservar todos los elementos de la tabla de resultados del paso final con respecto a la tabla de búsqueda pero no a la de relaciones, el motor SQL generará una unión externa en todos los pasos excepto en el final. En el paso final, genera una unión externa.
- Si selecciona la opción No tener en cuenta los ajustes de nivel por informe, elementos de presión o paso final según el ajuste a nivel de atributo. Si selecciona esta opción a nivel de atributo, se tratará para conservar los elementos comunes (es decir, opción 1) . El ajuste de esta propiedad VLDB se utiliza a nivel de atributo.
Este parámetro es útil si tiene solo unos pocos atributos que requieran tipos de join distintos. Por ejemplo, si entre los atributos de un informe solamente uno de ellos necesita conservar los elementos de la tabla del paso final, puede establecer la propiedad de VLDB en Conservar todos los elementos del paso de resultados final únicamente para ese atributo en concreto. A continuación podrá definir el informe en No escuchar el parámetro para la propiedad de VLDB. Cuando se ejecute el informe, solo el atributo definido de forma distinta dará pie a un outer join en SQL. El resto de tablas de lookup de atributos se unirán mediante un equal join, algo que da como resultado un mejor rendimiento de SQL.
Ejemplo: Conservar los elementos comunes de la tabla de resultados del paso final y de la tabla de búsqueda/relaciones
El informe contiene las ventas de la tienda y en dólares en su plantilla.
La opción "Conservar elementos comunes de la tabla de resultados final y la tabla de búsqueda" devuelve los siguientes resultados con la sentencia SQL que se muestra a continuación.
Tienda | Ventas en dólares |
Este (East) |
5000 |
Centro (Central) |
8000 |
Sur (South) |
12000 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
join Store a12
on (a11.Store_id = a12.Store_id)
agrupar por a11.Store_id
Ejemplo: Conservar todos los elementos del paso de resultados final
El informe contiene las ventas de la tienda y en dólares en su plantilla.
La opción "Conservar todos los elementos del resultado del paso final" devuelve los siguientes resultados con la sentencia SQL que se muestra a continuación. Observe que los datos de Store_IDs 4 y 5 no se muestran.
Tienda | Ventas en dólares |
Este (East) |
5000 |
Centro (Central) |
8000 |
Sur (South) |
12000 |
|
3000 |
|
1500 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
left outer join Store a12
on (a11.Store_id = a12.Store_id)
agrupar por a11.Store_id
Ejemplo: Conservar todos los elementos de la tabla de resultados del paso final con respecto a la tabla de búsqueda, no a la tabla de relaciones
Un informe tiene País, Indicador 1 e Indicador 2 en la plantilla. Las siguientes tablas de hechos existen para cada indicador:
CALLCENTER_ID | Hecho 1 |
1 |
1000 |
2 |
2000 |
1 |
1000 |
2 |
2000 |
3 |
1000 |
4 |
1000 |
EMPLOYEE_ID | Hecho 2 |
1 |
5000 |
2 |
6000 |
1 |
5000 |
2 |
6000 |
3 |
5000 |
4 |
5000 |
5 |
1000 |
El motor de SQL lleva a cabo tres pasos. En el primer paso, el motor de SQL calcula el indicador 1. El motor de SQL establece una unión interna entre la tabla de indicador 1 anterior y la tabla de búsqueda del centro de llamadas "LU_CALL_CTR":
CALLCENTER_ID | COUNTRY_ID |
1 |
1 |
2 |
1 |
3 |
2 |
para crear la siguiente tabla de indicador temporal 1 mediante la siguiente sentencia SQL:
COUNTRY_ID | Indicador 1 |
1 |
6000 |
2 |
1000 |
create table ZZSP00 nologging as
select a12.COUNTRY_ID COUNTRY_ID,
sum((a11.QTY_SOLD * a11.DISCOUNT))
WJXBFS1
from ORDER_DETAIL a11,
LU_CALL_CTR a12
where a11.CALL_CTR_ID = a12.CALL_CTR_ID
group by a12.COUNTRY_ID
En el segundo paso, se calcula el indicador 2. El motor de SQL establece una unión interna entre la tabla de hechos (indicador 2) y la tabla de búsqueda de empleados "LU_EMPLOYEE":
EMPLOYEE_ID | COUNTRY_ID |
1 |
1 |
2 |
2 |
3 |
2 |
Para crear la siguiente tabla de indicador temporal 2 arupado por país, se utiliza la siguiente sentencia SQL:
COUNTRY_ID | Indicador 2 |
1 |
10000 |
2 |
17000 |
create table ZZSP01 nologging as
select a12.COUNTRY_ID COUNTRY_ID,
sum(a11.FREIGHT) WJXBFS1
from ORDER_FACT a11,
LU_EMPLOYEE a12
where a11.[EMP_ID]=a12.[EMP_ID]
group by a12.COUNTRY_ID
En el tercer paso, el motor de SQL utiliza la siguiente tabla de búsqueda de país, "LU_COUNTRY":
COUNTRY_ID | COUNTRY_DESC |
1 |
Estados Unidos |
3 |
Europa |
Las uniones externas del motor de SQL METRIC1_TEMPTABLE y la tabla LU_COUNTRY. Las uniones externas del motor de SQL METRIC2_TEMPTABLE y la tabla LU_COUNTRY. Por último, el motor de SQL establece la unión externa de los resultados del tercer paso para generar el resultado final.
La opción "Conservar todos los elementos de la tabla de resultados final con respecto a la tabla de búsqueda pero no a la de relaciones" devuelve los siguientes resultados con la sentencia SQL que se muestra a continuación.
COUNTRY_ID | COUNTRY_DESC | Indicador 1 | Indicador 2 |
1 |
Estados Unidos |
6000 |
10000 |
2 |
|
1000 |
17000 |
seleccionar pa1.COUNTRY_ID COUNTRY_ID,
a11.COUNTRY_NAME COUNTRY_NAME,
pa1.WJXBFS1 WJXBFS1,
pa2.WJXBFS1 WJXBFS2
from ZZSP00 pa1,
ZZSP01 pa2,
LU_COUNTRY a11
where pa1.COUNTRY_ID = pa2.COUNTRY_ID and
pa1.COUNTRY_ID = a11.COUNTRY_ID (+)