MicroStrategy ONE

Conserva tutti gli elementi del passaggio finale

La seguente proprietà VLDB Conserva tutti gli elementi del passaggio finale determina la modalità di unione del risultato finale, nonché le tabelle di ricerca e relazione:

  • Se si sceglie l'impostazione predefinita Mantieni gli elementi comuni della tabella dei risultati del passaggio finale e della tabella di ricerca/relazione , il motore SQL genera un equi-join. Pertanto, vengono visualizzati solo elementi comuni a entrambe le tabelle.
  • Se si sceglie il Mantieni tutti gli elementi del passaggio finale, il motore SQL genera un join esterno e il report contiene tutti gli elementi presenti nel set di risultati finale. Quando questa impostazione è attivata, i join esterni vengono generati per qualsiasi join dalla tabella dei fatti alla tabella di ricerca e a tutte le tabelle di relazione. Questo si verifica perché è difficile distinguere quale tabella viene utilizzata come tabella di ricerca e quale viene utilizzata come tabella di relazione (i due ruoli più usati). Ad esempio, LOOKUP_DAY funge da tabella di ricerca per l'attributo Giorno e da tabella di relazione per gli attributi Giorno e Mese.

    L'uso di questa impostazione è sconsigliabile nei data warehouse standard, in cui le tabelle di lookup vengono gestite correttamente e tutti gli elementi nella tabella dei fatti dispongono di voci nella rispettiva tabella di lookup. Se ne consiglia invece l'utilizzo solo quando un dato attributo della tabella dei fatti contiene più elementi di attributo univoci rispetto alla tabella di lookup corrispondente. Nell'esempio sopra, la tabella dei fatti contiene vendite per cinque diversi negozi, ma la tabella Negozio contiene solo quattro negozi. Ciò non dovrebbe accadere in un data warehouse standard perché la tabella di ricerca, per definizione, dovrebbe contenere tutti gli elementi di attributo. Tuttavia, ciò potrebbe verificarsi se le tabelle dei fatti vengono aggiornate più spesso rispetto alle tabelle di ricerca.

  • Se si sceglie il Conserva tutti gli elementi della tabella dei risultati del passaggio finale rispetto alla tabella di ricerca ma non alla tabella delle relazioni, il motore SQL genera un join interno su tutti i passaggi ad eccezione del passaggio finale; al passaggio finale genera un join esterno.
  • Se si sceglie il Non accettare l'impostazione a livello di report, conserva gli elementi del passaggio finale secondo l'impostazione a livello di attributo. Se questa opzione è selezionata a livello di attributo, sarà considerata come Mantieni gli elementi comuni (ovvero scelta 1 ) , l'impostazione per questa proprietà VLDB è utilizzata a livello di attributo.

    Questa impostazione è utile se sono presenti solo alcuni attributi che richiedono tipi di join diversi. Ad esempio, se tra gli attributi di un report solo uno deve mantenere gli elementi della tabella del passaggio finale, è possibile impostare la proprietà VLDB su Mantieni tutti gli elementi del risultato del passaggio finale impostazione per quell'attributo. È quindi possibile impostare il report su Non ascoltare impostazione per la proprietà VLDB. Quando si esegue il report, solo l'attributo impostato in modo diverso causerà l'inserimento di un join esterno nell'istruzione SQL. Tutte le altre tabelle di ricerca per attributi verranno unite utilizzando un join uguale, il che migliora le prestazioni SQL.

Esempio: preserva gli elementi comuni della tabella dei risultati del passaggio finale e della tabella di ricerca/relazione

Un report ha Negozio e Vendite in dollari sul modello.

L'opzione "Conserva gli elementi comuni della tabella dei risultati del passaggio finale e della tabella di ricerca" restituisce i risultati seguenti tramite SQL.

Negozio Vendite in dollari

Est

5000

Centro

8000

Sud

12000

select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
join Store a12
attivo (a11.Store_id = a12.Store_id)
group by a11.Store_id

Esempio: conserva tutti gli elementi del passaggio del risultato finale

Un report ha Negozio e Vendite in dollari sul modello.

L'opzione "Conserva tutti gli elementi del passaggio finale" restituisce i risultati seguenti tramite SQL. Si noti che ora vengono visualizzati i dati per Store_IDs 4 e 5.

Negozio Vendite in dollari

Est

5000

Centro

8000

Sud

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
attivo (a11.Store_id = a12.Store_id)
group by a11.Store_id

Esempio: conserva tutti gli elementi della tabella dei risultati del passaggio finale rispetto alla tabella di ricerca ma non alla tabella delle relazioni

Un report ha Paese, Metrica 1 e Metrica 2 sul modello. Le seguenti tabelle dei fatti esistono per ogni metrica:

CALLCENTER_ID Fatto 1

1

1000

2

2000

1

1000

2

2000

3

1000

4

1000

 

EMPLOYEE_ID Fact 2

1

5000

2

6000

1

5000

2

6000

3

5000

4

5000

5

1000

SQL Engine esegue tre passaggi. Nel primo passaggio, SQL Engine calcola la metrica 1. Il motore SQL interno unisce la tabella "Tabella dei fatti (Metrica 1)" in alto con la tabella di ricerca del call center "LU_CALL_CTR" di seguito:

CALLCENTER_ID COUNTRY_ID

1

1

2

1

3

2

per creare la seguente tabella temporanea della metrica 1, raggruppata per Paese, tramite SQL come segue:

COUNTRY_ID Metrica 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

Nel secondo passaggio, viene calcolata la metrica 2. La tabella "Tabella dei fatti (Metrica 2)" sopra viene unita con la tabella di ricerca dipendente "LU_EMPLOYEE" di seguito:

EMPLOYEE_ID COUNTRY_ID

1

1

2

2

3

2

Per creare la seguente tabella temporanea della metrica 2, raggruppata per Paese, tramite SQL come segue:

COUNTRY_ID Metrica 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
raggruppa per a12.COUNTRY_ID

Nel terzo passaggio, SQL Engine utilizza la seguente tabella di ricerca dei Paesi, "LU_COUNTRY":

COUNTRY_ID COUNTRY_DESC

1

Stati Uniti

3

Europa

Il join esterno sinistro unisce METRIC1_TEMPTABLE sopra e la tabella LU_COUNTRY. Il join esterno sinistro unisce METRIC2_TEMPTABLE sopra e la tabella LU_COUNTRY. Infine, il join interno unisce i risultati del terzo passaggio per produrre i risultati finali.

L'opzione "Conserva tutti gli elementi della tabella dei risultati finale tenendo conto della tabella di ricerca ma non della tabella delle relazioni" restituisce i risultati seguenti tramite SQL.

COUNTRY_ID COUNTRY_DESC Metrica 1 Metrica 2

1

Stati Uniti

6000

10000

2

 

1000

17000

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