Informazioni su @Execute. SAP BusinessObjects Business Intelligence platform 4.1
Iklan
Iklan
Informazioni su SQL e MDX
Utilizzare la funzione @DerivedTable nella definizione delle tabelle derivate nidificate. Una tabella derivata nidificata (nota anche come "tabella derivata in una tabella derivata") è una tabella derivata da almeno una tabella derivata esistente.
La sintassi della funzione @DerivedTable è la seguente:
@DerivedTable
(Nome tabella derivata)
Nome tabella derivata
è il nome della tabella derivata a cui si desidera fare riferimento. La funzione
@DerivedTable viene utilizzata solo nella definizione delle tabelle derivate nella base dati.
Nota:
Nelle istruzioni SQL specifiche del database (basi dati abilitate per più origini) le tabelle a cui si fa riferimento devono provenire tutte dalla stessa connessione.
18.3.3 Informazioni su @Execute
La funzione @Execute consente di definire una query preliminare che fornisce un elenco di valori in un predicato SELECT da includere nella query principale. Tale funzione si basa su istruzioni SQL standard e si applica pertanto a origini dati relazionali. La sintassi della funzione @Execute è la seguente:
@Execute
(Elenco di valori)
Elenco di valori
è un elenco di valori predefiniti nel livello aziendale o nella base dati. La definizione dell'elenco di valori fornisce la query preliminare. La funzione @Execute viene quindi generalmente inclusa in un filtro o in una clausola WHERE per applicare la query preliminare e limitare i valori restituiti nella query principale.
Di seguito sono riportati i possibili tipi di un elenco di valori.
• Elenco di valori basato su istruzioni SQL personalizzate
• Elenco statico di valori
• Elenco di valori basato su una query che include oggetti del livello aziendale
Esistono le seguenti limitazioni:
• L'elenco di valori non può essere basato su una gerarchia personalizzata.
• L'elenco di valori può contenere solo oggetti attivi nel livello aziendale (non nascosti o obsoleti).
• Le istruzioni SQL che definiscono l'elenco di valori non possono contenere la funzione @Execute.
• La funzione @Execute non può essere utilizzata nella definizione di una funzione @Prompt.
Per ulteriori informazioni sull'inserimento di un elenco di valori, consultare l'argomento correlato.
Esempio: creazione di un filtro per i prodotti
In questo esempio viene creato un filtro di query che limita i risultati della query ai prodotti con vendite due volte superiori alla media della categoria di prodotti.
420 2013-07-02
Informazioni su SQL e MDX
Creare innanzitutto l'elenco di valori che restituisce gli ID prodotto dei prodotti con vendite superiori alla media della categoria. Il nome dell'elenco di valori è Products_Above_Avg e il tipo di dati è numerico. L'elenco di valori viene definito dalle seguenti istruzioni SQL:
WITH
PA as
(
SELECT L.PRODUCT_ID, sum(L.NET_SALES) AS SALES
FROM PRODUCT P, PA A
FROM SO_LINE L
GROUP BY L.PRODUCT_ID
),
CA as
SELECT P.CATEGORY_ID, avg(A.SALES) AS
SALES
WHERE P.PRODUCT_ID = A.PRODUCT_ID
GROUP BY P.CATEGORY_ID
)
SELECT PA.PRODUCT_ID
FROM PA, CA, PRODUCT P
WHERE PA.PRODUCT_ID = P.PRODUCT_ID
AND P.CATEGORY_ID = CA.CATEGORY_ID
AND PA.SALES > ( CA.SALES * 2)
Inserire quindi nel livello aziendale un filtro nativo che richiami la query preliminare utilizzando la funzione @Execute nella clausola WHERE. Poiché la funzione @Execute può restituire più valori, utilizzare l'operatore IN nella definizione del filtro:
PRODUCT.PRODUCT_ID IN
@Execute(Products_Above_Avg)
Quando il filtro viene incluso in una query, la funzione @Execute viene sostituita con l'elenco risultante degli ID prodotto, come nell'esempio:
PRODUCT.PRODUCT_ID in (2, 5, 20, 33, 35)
Esempio: inclusione di un predicato di protezione
In questo esempio viene inserito un filtro di colonna che restituisce dati sulle vendite solo per l'area geografica dell'utente corrente.
Creare prima nella base dati l'elenco di valori che restituisce i codici paese autorizzati per l'utente corrente. Il nome dell'elenco di valori è Authorized_Countries e il tipo di dati è numerico. Questo esempio presuppone da parte dell'amministratore la configurazione di una tabella di database denominata user_geography nel database, che associ i paesi autorizzati a ogni utente. L'elenco di valori viene definito dalle seguenti istruzioni SQL:
SELECT country_id
FROM user_geography
WHERE user_name = @Variable('BOUSER')
Inserire quindi un filtro di colonna nella tabella della base dati Sales. Poiché la funzione @Execute può restituire più valori, utilizzare l'operatore IN nella definizione del filtro.
Sales.country_id
IN @Execute(Authorized_Countries)
421 2013-07-02
Unduh
Iklan