MicroStrategy ONE

Preservar todos los elementos del resultado del paso final

La propiedad Conservar todos los elementos de resultados del paso final determina cómo se unirán el resultado final y las tablas de búsqueda y de relación.

  • Si elige el valor por defecto Conservar los elementos comunes de la tabla de resultados del paso final y de la tabla de búsqueda/relaciones , el motor SQL genera un equilibrio igualitario. Por consiguiente, solo verá los elementos comunes a las dos tablas.
  • Si elige la opción Conservar todos los elementos del paso de resultados final, el motor SQL genera un outer join y el informe contiene todos los elementos que están en el 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. Sin embargo, esto podría ocurrir si las tablas de hechos se actualizan con más frecuencia que las tablas 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, no a la tabla de relaciones, el motor SQL genera un inner join en todos los pasos excepto en el paso final; en el paso final, genera un outer join.
  • Si elige la opción No escuchar el parámetro a nivel de informe, conservar elementos del paso final en función del parámetro a nivel de atributo. Si se selecciona esta opción en el nivel de atributo, se tratará como conservar elementos comunes (es decir, opción 1 ) , el ajuste de esta propiedad de VLDB se utiliza en el nivel de atributo.

    Este ajuste es útil si solo tiene unos pocos atributos que requieren distintos tipos de join. Por ejemplo, si entre los atributos de un informe solo uno necesita conservar elementos de la tabla de pasos final, puede establecer la propiedad VLDB en Conservar todos los elementos del resultado del paso final para ese atributo. A continuación, puede establecer el informe en el No escuchar para la propiedad VLDB. Cuando se ejecute el informe, solo el atributo definido de forma distinta dará pie a un outer join en SQL. Todas las demás tablas de búsqueda de atributos se unirán mediante un join igual, lo que conduce a 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

seleccione 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 (+)