Vai al contenuto principale Passa a contenuto complementare

Espressioni set interne ed esterne

Le espressioni set possono essere utilizzate all'interno e all'esterno delle funzioni di aggregazione, racchiudendole tra parentesi graffe.

Quando si utilizza un'espressione set all'interno di una funzione di aggregazione, l'aspetto può essere il seguente:

Esempio: Espressione set interna

Sum( {$<Year={2021}>} Sales )

Utilizzare un'espressione set al di fuori della funzione di aggregazione se si hanno espressioni con più aggregazioni e si vuole evitare di scrivere la stessa espressione set in ogni funzione di aggregazione.

Se si utilizza un'espressione di set esterna, questa deve essere posizionata all'inizio dell'ambito.

Esempio: Espressione set esterna

{<Year={2021}>} Sum(Sales) / Count(distinct Customer)

Se si utilizza un'espressione set al di fuori della funzione di aggregazione, è possibile applicarla anche alle misure principali esistenti.

Esempio: Espressione set esterna applicata alla misura principale

{<Year={2021}>} [Master Measure]

Un'espressione set utilizzata al di fuori delle funzioni di aggregazione influisce sull'intera espressione, a meno che non sia racchiusa tra parentesi; in tal caso le parentesi definiscono l'ambito. Nell'esempio di scoping lessicale che segue, l'espressione set viene applicata solo all'aggregazione all'interno delle parentesi.

Esempio: Scoping lessicale

( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)

Regole

Ambito lessicale

L'espressione set influisce sull'intera espressione, a meno che non sia racchiusa tra parentesi. In tal caso, le parentesi definiscono l'ambito lessicale.

Posizione

L'espressione set deve essere collocata all'inizio dell'ambito lessicale.

Contesto

Il contesto è la selezione rilevante per l'espressione. Tradizionalmente, il contesto è sempre stato lo stato predefinito della selezione corrente. Ma se un oggetto è impostato su uno stato alternativo, il contesto è lo stato alternativo della selezione corrente.

È possibile definire un contesto anche sotto forma di espressione set esterna.

Eredità

Le espressioni set interne hanno la precedenza su quelle esterne. Se l'espressione set interna contiene un identificatore set, sostituisce il contesto definito nell'espressione set esterna. Altrimenti, le espressioni set interne ed esterne vengono entrambe valutate.

Esempio 1: Espressione set interna con identificatore set

{<Year={2023}>} Sum(Sales) / Count({1} distinct OrderNumber)

Nell'espressione riportata sopra, l'espressione set interna Count({1} distinct OrderNumber) consiste nell'identificatore set {1}. Quando questa espressione set interna viene valutata, l'ambito definito nell'espressione set esterna {<Year={2023}>} non viene applicato.

Esempio 2: Espressioni set interne con identificatori set

{<Year={2023}>} Sum ({<Status={'Confirmed'}>} Sales_Stream1) + Sum ({<UpdatedStatus={'Confirmed'}>} Sales_Stream2)

Nell'espressione riportata sopra, le espressioni set interne Sum ({<Status={'Confirmed'}>} Sales_Stream1) e Sum ({<UpdatedStatus={'Confirmed'}>} Sales_Stream2) non contengono identificatori set. Pertanto, l'espressione set esterna {<Year={2023}>} ed entrambe le espressioni set interne vengono tutte applicate quando si valuta il risultato.

Assegnazione set elementi

L'assegnazione set elementi determina il modo in cui le due selezioni vengono unite. Se viene utilizzato un normale segno di uguale, la selezione nell'espressione set interna ha la precedenza. Altrimenti, verrà utilizzato l'operatore set implicito.

  • {<Field={value}>} - questa selezione interna sostituisce qualsiasi selezione esterna in “Field”.

  • {<Field+={value}>} - questa selezione interna viene unita alla selezione esterna in “Field”, utilizzando l'operatore di unione.

  • {<Field*={value}>} - questa selezione interna viene unita alla selezione esterna in “Field”, utilizzando l'operatore di intersezione.

Ereditarietà in più fasi

L'ereditarietà può avvenire in più fasi. Esempi:

  • Selezione corrente → Sum(Amount)

    La funzione di aggregazione utilizzerà il contesto, che in questo caso è la selezione corrente.

  • Selezione corrente → {<Set1>} Sum(Amount)

    Set1 erediterà dalla selezione corrente e il risultato sarà il contesto per la funzione di aggregazione.

  • Selezione corrente → {<Set1>} ({<Set2>} Sum(Amount))

    Set2 erediterà da Set1, che a sua volta eredita dalla selezione corrente e il risultato sarà il contesto per la funzione di aggregazione.

Ereditarietà per le catene di espressioni set interne ed esterne

Vi sono ulteriori considerazioni per l'ereditarietà quando si utilizzano espressioni set multiple in catene complesse, in particolare quando un'espressione set esterna è seguita da altre espressioni set esterne e/o da un'espressione set interna. Per i dettagli, vedere Catene di espressioni set esterne e interne multiple .

La funzione Aggr()

La funzione Aggr() crea un'aggregazione nidificata con due aggregazioni indipendenti. Nell'esempio in basso, viene calcolato un Count() per ciascun valore di Dim, e l'array risultante viene aggregato utilizzando la funzione Sum().

Esempio:  

Sum(Aggr(Count(X),Dim))

Count() è un'aggregazione interna mentre Sum() è un'aggregazione esterna.

  • L'aggregazione interna non eredita alcun contesto dall'aggregazione esterna.

  • L'aggregazione interna eredita il contesto dalla funzione Aggr(), che può contenere un'espressione set.

  • Sia la funzione Aggr() sia la funzione di aggregazione esterna ereditano il contesto da un'espressione set esterna.

Catene di espressioni set esterne e interne multiple

Notare che è possibile disporre di più di un'espressione set esterna. In questo esempio vi sono due espressioni set esterne e una interna:

{<Year={2021}>} {<Region={"Europe"}>} Sum( {$<Product={"XI345"}>} Sales )

Le espressioni set verranno applicate da sinistra a destra. Ciò significa che se due espressioni set utilizzano dei set in conflitto, l'espressione più a destra avrà la precedenza.

Sebbene non vi sia alcun limite al numero di espressioni set esterne concatenate in questo modo, il numero di espressioni set interne è limitato a uno. La presenza di più espressioni set interne l'una accanto all'altra non genererà alcun errore, ma solo l'espressione più a destra verrà utilizzata al momento della valutazione.

Eredità delle espressioni set

Quando un'espressione di aggregazione contiene più di un'espressione set come parte di una catena, le espressioni set verranno valutate una per una, da sinistra a destra. Il risultato di ogni espressione set è un gruppo di set, potenzialmente uno per ogni dimensione. I set vengono passati all'espressione set successiva, che può apportare ulteriori modifiche prima di essere passata alla successiva.

Finché ogni espressione set opera su dimensioni diverse, non vi saranno conflitti tra loro e tutti i set saranno conservati fino alla fine della catena (e applicati durante l'aggregazione). Questa regola ha un'eccezione, che a volte si applica quando una dimensione in un'espressione set genera un set vuoto. Per maggiori informazioni, vedere:

Set di selezione vuoti

Quando viene valutata una dimensione in un'espressione set, è possibile che il set non contenga dati. Questo è noto come un set vuoto. I set vuoti possono verificarsi in molti scenari, come ad esempio:

  • Definizione errata dell'espressione. Per esempio, quando si desidera cercare il valore 2025 con un'espressione set {<OrderYear={‘2025’}>}, l'espressione viene scritta come {<OrderYear={‘0025’}>}.

  • Durante l'analisi, viene effettuata una selezione in una dimensione diversa da quella a cui fa riferimento l'espressione e questa selezione non produce dati disponibili per la dimensione dell'espressione set. Ad esempio, un utente effettua una selezione per Region='Europe' e un'espressione set applica il filtro per {<ProductCategory={‘Shirts’}>} Sum (Sales). Se non vengono vendute camicie in Europa, l'espressione set contiene un set vuoto.

  • Il set vuoto è definito esplicitamente nell'espressione. Questo non è comune o utile, ma è tecnicamente possibile. Ad esempio: {<Year={}>}

Cancellazione implicita del set di selezione

Se il risultato dopo l'applicazione di un'espressione set è un set vuoto per una delle dimensioni (vedere Set di selezione vuoti), e c'è un'altra espressione set che viene applicata dopo questa, il set di selezione per quella dimensione verrà cancellata (ossia verrà reimpostato al set completo) appena prima che venga applicata l'espressione set successiva. Un set di selezione cancellato significa che tutti i valori sono inclusi. Notare, tuttavia, che la cancellazione avviene solo se c'è un'altra espressione set esterna che viene applicata dopo l'espressione set in cui viene generato il set vuoto.

Ecco un esempio di quando si verifica una selezione cancellata:

{<Year={}>} {<Region={"Europe"}>} Sum( Sales )

Year={} creerà il set vuoto per la dimensione Year. Ciò significa che il set di selezione per Year viene cancellato quando il set viene passato all'espressione set successiva, che contiene Region={Europe}. Notare che la cancellazione della selezione avviene solo per una singola dimensione. I set in altre dimensioni, compresi i set all'interno della stessa espressione set, verranno passati in ogni caso senza modifiche.

Ecco un altro esempio di quando si verifica una selezione cancellata:

{<Year={}, Product={"XI345"}>} {<Region={"Europe"}>} Sum(Sales)

Nell'esempio precedente, si verifica quanto segue:

  • Vengono applicati i set di selezione Product={"XI345"} e Region={"Europe"}.

  • Il valore Year={} non viene applicato. Questo perché quel set viene cancellato quando viene applicata l'ultima espressione set, {<Region={"Europe"}>}.

Lo spostamento di un componente dell'espressione set nell'ultima espressione set esterna impedirà la cancellazione implicita. Prendiamo questo esempio:

{<Product={"XI345"}>} {<Year={}, Region={"Europe"}>} Sum(Sales)

In questo esempio, l'espressione Year è stata spostata nell'ultima espressione set della catena. In questo modo, si eviterà la cancellazione implicita, mentre il set vuoto per la dimensione Year verrà effettivamente utilizzato per l'aggregazione Sum.

In ogni caso, può verificarsi un comportamento indesiderato quando i set di selezione vengono cancellati. Per migliorare l'esperienza di analisi e facilitare la scrittura di catene di espressioni set, utilizzare il flag di conservazione del set vuoto. Per ulteriori informazioni, vedere Flag di conservazione del set vuoto (espressioni del set esterno).

Flag di conservazione del set vuoto (espressioni del set esterno)

Utilizzare il simbolo & (il flag di conservazione del set vuoto) per semplificare il modello di valutazione per le espressioni dei set esterni. Ad esempio:

{& <Year={}, Product={XI345}>} {<Region={Europe}>} Sum( Sales )

In questo esempio, Year={} definisce un set di selezione vuoto per Year. Senza il simbolo &, l'espressione {<Region={Europe}>} causerebbe la cancellazione del set di selezione vuoto Year, con conseguente utilizzo di tutti i dati nel calcolo dell'aggregazione. Il simbolo & obbliga l'aggregazione a rispettare il set di selezione vuoto Year, ottenendo un risultato più comprensibile.

Per tutti i dettagli sul flag di conservazione del set vuoto, vedere Flag di conservazione del set vuoto.

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – ti pregiamo di farcelo sapere!