Funzioni logiche
L'elenco seguente mostra le funzioni logiche utilizzabili nelle espressioni.
| Funzione | Descrizione |
|---|---|
Case | L'istruzione case presenta due diverse forme. Semplice:
L'espressione Cercato:
Restituisce when/then che verranno valutate da sinistra e destra. Vedere di seguito per ulteriori informazioni. Esempio:
Per ulteriori esempi, vedere Colonne calcolate basate sulle condizioni. |
If(Arg1,Arg2,Arg3)
| Restituisce Arg2 se Arg1=true e Arg3 se Arg1=false.Arg1 è di tipo boolean, solitamente il risultato di un confronto.Arg2 e Arg3 possono essere di qualsiasi tipo, ma entrambi devono essere dello stesso tipo o null.Il secondo e il terzo argomento elaborano soltanto i subset delle righe e hanno effetto sui metodi basati su colonna e di accumulo.Vedere di seguito per ulteriori informazioni. Esempi:
Per ulteriori esempi, vedere Colonne calcolate basate sulle condizioni. |
Is Not Null
| Utilizzato in un'istruzione If o Case per determinare se un'espressione genera o meno un valore vuoto (valore null).Esempio:
Se un'espressione contiene valori vuoti (valori null), è possibile utilizzare la funzione |
Is Null
| Utilizzato in un'istruzione Esempio:
Se un'espressione contiene valori vuoti (valori null), è possibile utilizzare la funzione |
Ulteriori informazioni sull'utilizzo di if nelle espressioni:
Quando si utilizza un'istruzione if in un'espressione, la condizione nel primo argomento limita i valori da valutare nel terzo argomento.Per comprenderne il funzionamento, prendiamo come esempio una semplice colonna di numeri interi:
| Col1 |
| 1 |
| 2 |
| 3 |
Inserire una colonna calcolata utilizzando la seguente espressione:
if(Col1 < 2,
Max(Col1), Max(Col1))
Il risultato dell'espressione sarà una nuova colonna con due valori diversi: uno sarà il valore max per tutti i valori minori di 2 e l'altro sarà il valore max per i valori rimanenti (che è anche il valore max dell'intera colonna).
| Col1 | if(Col1 < 2, Max(Col1), Max(Col1))
|
| 1 | 1 |
| 2 | 3 |
| 3 | 3 |
La funzione If è studiata per dividere la colonna in due gruppi e continuare quindi a valutare l'espressione sui nuovi gruppi.
Se si utilizza, invece, un'espressione Percentile, si otterranno risultati diversi sulla stessa espressione percentile a seconda del modo in cui la prima condizione ha diviso la colonna:
| Col2 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
Inserire due colonne utilizzando la seguente espressione:
if (Col2 < 4, 0,
Percentile(Col2, 70))
if (Col2 < 6, 0,
Percentile(Col2, 70))
Si ottiene quindi il seguente risultato:
| Col2 | if (Col2 < 4, 0,
Percentile(Col2, 70))
| if (Col2 < 6,
0, Percentile(Col2, 70))
|
| 1 | 0 | 0 |
| 2 | 0 | 0 |
| 3 | 0 | 0 |
| 4 | 8,2 | 0 |
| 5 | 8,2 | 0 |
| 6 | 8,2 | 8,8 |
| 7 | 8,2 | 8,8 |
| 8 | 8,2 | 8,8 |
| 9 | 8,2 | 8,8 |
| 10 | 8,2 | 8,8 |
If" ha raggruppato i dati.Ulteriori informazioni sull'utilizzo di case nelle espressioni:
Quando si lavora con espressioni case, la condizione dopo "when" viene calcolata sull'intera colonna.L'argomento dopo "then" viene calcolato sulle righe definite dalla condizione "when".Se l'espressione include più coppie "when- then", un "then" è limitato da tutte le condizioni precedenti oltre che dall'ultima.
Un esempio che utilizza una semplice colonna di numeri interi:
| Col1 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
Inserire due colonne calcolate, chiamate Case Min e Case Max, utilizzando le seguenti espressioni:
Case Min:
case
when [Col1]<Avg([Col1]) then Min([Col1])
when [Col1]<(Avg([Col1]) + 1) then Min([Col1])
else Min([Col1])
endCase Max:
case
when [Col1] < Avg([Col1]) then Max([Col1])
when [Col1] < (Avg([Col1]) + 1) then Max([Col1])
else Max([Col1])
endIl risultato sarà:
| Col1 | Case Min | Case Max |
| 1 | 1 | 4 |
| 2 | 1 | 4 |
| 3 | 1 | 4 |
| 4 | 1 | 4 |
| 5 | 5 | 5 |
| 6 | 6 | 8 |
| 7 | 6 | 8 |
| 8 | 6 | 8 |