Funzioni di Progettazione modelli
È possibile utilizzare le funzioni di Progettazione modelli report per calcolare nuovi attributi. Si supponga ad esempio di voler conoscere le vendite totali per ordine di vendita. Questa cifra è costituita dall'importo delle vendite più le imposte pagate per l'ordine. Tramite la funzione Add è possibile sommare ogni totale di vendita all'imposta pagata per ogni ordine. Nell'elenco seguente sono descritte le funzioni disponibili, i requisiti e i relativi comportamenti.
Funzioni scalari
Le funzioni scalari consentono di eseguire calcoli su un singolo argomento per ottenere un nuovo valore singolo per un campo.
Nome funzione | Argomento | Tipo | Cardinalità | Descrizione |
---|---|---|---|---|
Add |
Item1 |
Numeric |
1 |
Primo elemento da aggiungere. |
Item2 |
Numeric |
1 |
Secondo elemento da aggiungere. |
|
Return |
Il tipo è Float se uno degli elementi è Float. È Decimal se uno degli elementi è Decimal. In caso contrario è di tipo Integer. |
|||
Subtract |
Item1 |
Numeric |
1 |
Elemento dal quale eseguire la sottrazione. |
Item2 |
Numeric |
1 |
Elemento da sottrarre. |
|
Return |
Il tipo è Float se uno degli elementi è Float. È Decimal se uno degli elementi è Decimal. In caso contrario è di tipo Integer. |
|||
Multiply |
Item1 |
Numeric |
1 |
Primo elemento da moltiplicare. |
Item2 |
Numeric |
1 |
Secondo elemento da moltiplicare. |
|
Return |
Il tipo è Float se uno degli elementi è Float. È Decimal se uno degli elementi è Decimal. In caso contrario è di tipo Integer. |
|||
Divide |
Item1 |
Numeric |
1 |
Elemento da dividere. |
Item2 |
Numeric |
1 |
Elemento per il quale eseguire la divisione. |
|
Return |
Il tipo è Float se uno degli elementi è Float. In caso contrario è di tipo Decimal. |
|||
Power |
Base |
Numeric |
1 |
Base da elevare a una potenza. |
Exponent |
Numeric |
1 |
Esponente. |
|
Return |
Il tipo è Float se uno degli elementi è Float. È Decimal se uno degli elementi è Decimal. In caso contrario è di tipo Integer. |
|||
Negate |
Item |
Numeric |
1 |
Elemento che deve essere negato. |
Return |
Il tipo è lo stesso dell'elemento. |
|||
Mod |
Item1 |
Integer |
1 |
Elemento da dividere. |
Item2 |
Integer |
1 |
Elemento per il quale eseguire la divisione. |
|
Return |
Integer |
Resto della divisione. |
||
Equals |
Item1 |
Boolean, DateTime, Integer, Decimal, Float, String o EntityKey |
1 |
Primo elemento da confrontare. |
Item2 |
1 |
Secondo elemento da confrontare. Item1 e Item2 devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
Indica se gli elementi sono uguali. |
||
NotEquals |
Item1 |
Boolean, DateTime, Integer, Decimal, Float, String o EntityKey |
1 |
Primo elemento da confrontare. |
Item2 |
1 |
Secondo elemento da confrontare. Item1 e Item2 devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
Indica se gli elementi sono diversi. |
||
GreaterThan |
Item1 |
DateTime, Integer, Decimal, Float o String |
1 |
Primo elemento da confrontare. |
Item2 |
1 |
Secondo elemento da confrontare. Item1 e Item2 devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
Indica se il primo elemento è maggiore del secondo. |
||
GreaterThanOrEquals |
Item1 |
DateTime, Integer, Decimal, Float o String |
1 |
Primo elemento da confrontare. |
Item2 |
1 |
Secondo elemento da confrontare. Item1 e Item2 devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
Indica se il primo elemento è maggiore o uguale al secondo elemento. |
||
LessThan |
Item1 |
DateTime, Integer, Decimal, Float o String |
1 |
Primo elemento da confrontare. |
Item2 |
1 |
Secondo elemento da confrontare. Item1 e Item2 devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
Indica se il primo elemento è minore del secondo. |
||
LessThanOrEquals |
Item1 |
DateTime, Integer, Decimal, Float o String |
1 |
Primo elemento da confrontare. |
Item2 |
1 |
Secondo elemento da confrontare. Item1 e Item2 devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
Indica se il primo elemento è minore o uguale al secondo elemento. |
||
And |
Item1 |
Boolean |
1 |
Prima condizione. |
Item2 |
Boolean |
1 |
Seconda condizione. Se Item1 è false, Item2 non viene valutato. |
|
Return |
Boolean |
Se Item1 e Item2 sono entrambi true, il valore restituito sarà true. |
||
Or |
Item1 |
Boolean |
1 |
Prima condizione. |
Item2 |
Boolean |
1 |
Seconda condizione. Se Item1 è true, Item2 non viene valutato. |
|
Return |
Boolean |
Se Item1 o Item2 sono true, il valore restituito sarà true. |
||
Not |
Item |
Boolean |
1 |
Condizione che deve essere negata. |
Return |
Boolean |
Se l'elemento è false, il valore restituito sarà true. |
||
Truncate |
Item |
Decimal o Float |
1 |
Elemento che deve essere troncato. |
Digits |
Integer |
1 |
Numero di cifre decimali a cui l'elemento deve essere troncato. Se si specifica tre, ad esempio, l'elemento verrà troncato dopo la terza cifra a destra del separatore decimale. |
|
Return |
Il tipo di valore restituito è uguale a quello dell'elemento che viene troncato. |
|||
Round |
Item |
Decimal o Float |
1 |
Elemento che deve essere arrotondato. |
Digits |
Integer |
1 |
Numero di cifre decimali a cui l'elemento deve essere arrotondato. Se si specifica tre, ad esempio, l'elemento verrà arrotondato alla terza cifra a destra del separatore decimale. |
|
Return |
Il tipo di valore restituito è uguale a quello dell'elemento che viene arrotondato. |
|||
Integer |
Item |
Numeric o String |
1 |
Elemento su cui eseguire il cast. In Generatore report Integer viene elencato nella scheda Funzione come INT. |
Return |
Integer |
Viene eseguito il cast dell'elemento come integer. Se l'elemento è un valore numerico, viene troncato. Si noti che per l'esecuzione del cast di stringhe numeriche vengono utilizzate le impostazioni internazionali invarianti. Il separatore decimale è la virgola. Non è consentito il punto come separatore delle migliaia. |
||
Decimal |
Item |
Numeric o String |
1 |
Elemento su cui eseguire il cast. |
Return |
Decimal |
Viene eseguito il cast dell'elemento come decimal. |
||
Float |
Item |
Numeric o String |
1 |
Elemento su cui eseguire il cast. |
Return |
Float |
Viene eseguito il cast dell'elemento come float. |
||
String |
Item |
Numeric |
1 |
Elemento su cui eseguire il cast. In Generatore report String viene elencato nella scheda Funzione come TEXT. |
Return |
String |
Elemento su cui eseguire il cast come string. |
||
Length |
String |
String |
1 |
Stringa utilizzata per determinare la lunghezza. |
Return |
Integer |
Lunghezza della stringa specificata come numero di caratteri al suo interno. |
||
Find |
String |
String |
1 |
Stringa all'interno della quale viene cercata una stringa. |
Substring |
String |
1 |
Sottostringa da cercare. |
|
Return |
Integer |
Posizione della prima istanza della sottostringa all'interno della stringa. Se la sottostringa non viene trovata, il valore restituito è 0. |
||
Substring |
String |
String |
1 |
Stringa da cui deve essere estratta una sottostringa. |
Start |
Integer |
1 |
Posizione iniziale all'interno della stringa (in base 1). |
|
Length |
Integer |
1 |
Numero di caratteri. |
|
Return |
String |
Sottostringa estratta dalla stringa, contenente i caratteri da Start a Start+Length. |
||
Left |
String |
String |
1 |
Stringa da cui ottenere i caratteri più a sinistra. |
Length |
Integer |
1 |
Numero di caratteri. |
|
Return |
String |
Sottostringa della stringa, contenente i caratteri da 1 a Length. |
||
Right |
String |
String |
1 |
Stringa da cui ottenere i caratteri più a destra. |
Length |
Integer |
1 |
Numero di caratteri. |
|
Return |
String |
Sottostringa della stringa da Length(String)-Length+1 a Length(String). |
||
Concat |
String1 |
String |
1 |
Prima stringa da concatenare. |
String2 |
String |
1 |
Seconda stringa da concatenare. |
|
Return |
String |
La seconda stringa concatenata alla fine della prima stringa. |
||
Lower |
String |
String |
1 |
Stringa che deve essere convertita in caratteri minuscoli. |
Return |
String |
Stringa con tutti i caratteri maiuscoli convertiti in caratteri minuscoli. |
||
Upper |
String |
String |
1 |
Stringa che deve essere convertita in caratteri maiuscoli. |
Return |
String |
Stringa con tutti i caratteri minuscoli convertiti in caratteri maiuscoli. |
||
LTrim |
String |
String |
1 |
Stringa da cui devono essere eliminati gli spazi iniziali. |
Return |
String |
Stringa con tutti gli spazi iniziali rimossi. |
||
RTrim |
String |
String |
1 |
Stringa da cui devono essere eliminati gli spazi finali. |
Return |
String |
Stringa con gli spazi finali rimossi. |
||
Replace |
String |
String |
1 |
Stringa in cui tutte le istanze di una sottostringa devono essere sostituite con un'altra sottostringa. |
Find |
String |
1 |
Sottostringa da cercare. |
|
Replace |
String |
1 |
La sottostringa che deve sostituire la stringa Find. |
|
Return |
String |
Stringa con tutte le istanze di Find sostituite con la stringa Replace. |
||
Date |
Year |
Integer |
1 |
Anno per la data. |
Month |
Integer |
1 |
Mese (1-12) per la data. |
|
Day |
Integer |
1 |
Giorno (1-31) per la data. Deve essere un giorno valido rispetto al mese e all'anno specificati. |
|
Return |
DateTime |
Data e ora con anno, mese e giorno specificati, alle 00:00:00. |
||
DateTime |
Year |
Integer |
1 |
Anno per la data. |
Month |
Integer |
1 |
Mese (1-12) per la data. |
|
Day |
Integer |
1 |
Giorno (1-31) per la data. Deve essere un giorno valido rispetto al mese e all'anno specificati. |
|
Hour |
Integer |
1 |
Ora (0-23) per l'ora. |
|
Minute |
Integer |
1 |
Minuti (0-59) per l'ora. |
|
Second |
Decimal |
1 |
Secondi (0-60) per l'ora. |
|
Return |
DateTime |
Data e ora con anno, mese, giorno, ora, minuti e secondi specificati. |
||
Year |
DateTime |
DateTime |
1 |
Data da cui deve essere estratto l'anno. |
Return |
Integer |
Anno della data/ora. |
||
Quarter |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratto il trimestre. |
Return |
Integer |
Trimestre (1-4) della data/ora. |
||
Month |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratto il mese. |
Return |
Integer |
Mese (1-12) della data/ora. |
||
Day |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratto il giorno. |
Return |
Integer |
Giorno (1-31) della data/ora. |
||
Hour |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratta l'ora. |
Return |
Integer |
Ora (0-23) della data/ora. |
||
Minute |
DateTime |
DateTime |
1 |
Data dalla quale devono essere estratti i minuti. |
Return |
Integer |
Minuti (0-59) della data/ora. |
||
Second |
DateTime |
DateTime |
1 |
Data da cui devono essere estratti i secondi. |
Return |
Integer |
Secondi (0-60) della data/ora. |
||
DayofYear |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratto il giorno dell'anno. |
Return |
Integer |
Giorno dell'anno (1-366) della data/ora. |
||
Week |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratta la settimana. |
Return |
Integer |
Settimana (1-53) della data/ora. Il primo giorno della settimana è determinato dall'impostazione predefinita associata alle impostazioni della lingua del modello semantico. |
||
DayofWeek |
DateTime |
DateTime |
1 |
Data dalla quale deve essere estratto il giorno della settimana. |
Return |
Integer |
Giorno della settimana (1-7) della data/ora. I valori iniziano da lunedì=1 fino a domenica=7. |
||
Date |
DateTime |
DateTime |
1 |
Data dalla quale deve essere rimossa l'ora. In Generatore report questa funzione Date viene elencata nella scheda Funzione come DATEONLY. |
Return |
Integer |
Data/ora con l'ora cancellata (00:00:00). |
||
Now |
Return |
DateTime |
Data/ora corrente. Now è una funzione statica. |
|
Today |
Return |
DateTime |
Data/ora corrente con l'ora cancellata (00:00:00). Today è una funzione statica. |
|
DateDiff |
Interval |
String |
1 |
Unità utilizzate per specificare la differenza tra due date. Deve essere una delle seguenti: Year, Quarter, Month, Day, Hour, Minute, Second o Week. Deve essere un valore di tipo literal. |
Start |
DateTime |
1 |
Data/ora di inizio. |
|
End |
DateTime |
1 |
Data/ora di fine. |
|
Return |
Integer |
Differenza tra la data Start e la data End espressa con le stesse unità specificate in Interval. Se la data di inizio è posteriore alla data di fine, il risultato sarà negativo. |
||
DateAdd |
Interval |
String |
1 |
Unità utilizzate per specificare la somma di due date. Deve essere una delle seguenti: Year, Quarter, Month, Day, Hour, Minute, Second o Week. Deve essere un valore di tipo literal. |
Number |
Integer |
1 |
Numero di unità di Interval da sommare alla data DateTime. |
|
DateTime |
DateTime |
1 |
Data/ora a cui sommare. |
|
Return |
DateTime |
Data/ora risultanti dalla somma del numero specificato di unità di Interval alla data/ora originale. |
Funzioni di aggregazione
Tramite le funzioni di aggregazione è possibile eseguire calcoli su un set di valori o un solo valore e quindi ottenere come risultato un solo valore per un'espressione.
Nome funzione | Argomento | Tipo | Cardinalità | Descrizione |
---|---|---|---|---|
Sum |
Items |
Numeric |
N |
Elementi da sommare. |
Return |
1 |
Somma dei valori di tutti gli elementi. Il valore restituito è dello stesso tipo di dati degli elementi. |
||
Avg |
Items |
Numeric |
N |
Elementi dei quali calcolare la media. In Generatore report Avg viene visualizzato nella scheda Funzione come AVERAGE. |
Return |
1 |
Media dei valori non Null degli elementi. Il tipo di dati è Decimal se gli elementi sono Decimal o Integer, in caso contrario è Float. |
||
Max |
Items |
DateTime, Integer, Decimal, Float o String |
N |
Elementi ordinati per determinare il valore massimo. |
Return |
1 |
Massimo dei valori non Null dell'elemento. Il valore restituito è dello stesso tipo di dati degli elementi. |
||
Min |
Items |
DateTime, Integer, Decimal, Float o String |
N |
Elementi ordinati per determinare il valore minimo. |
Return |
1 |
Minimo dei valori non Null degli elementi. Il valore restituito è dello stesso tipo di dati degli elementi. |
||
Count |
Items |
Any |
N |
Elementi che devono essere conteggiati. |
Return |
Integer |
1 |
Conteggio dei valori non Null degli elementi. |
|
CountDistinct |
Items |
Any |
N |
Elementi che devono essere conteggiati. Il tipo di dati degli elementi non può essere EntityKey. |
Return |
Integer |
1 |
Conteggio di valori distinti non Null degli elementi. |
|
StDev |
Items |
Numeric |
N |
Elementi utilizzati per determinare la deviazione standard. |
Return |
Float |
1 |
Deviazione standard dei valori non Null degli elementi. |
|
StDevP |
Items |
Numeric |
N |
Elementi utilizzati per determinare la deviazione standard della popolazione. |
Return |
Float |
1 |
Deviazione standard della popolazione dei valori non Null degli elementi. |
|
Var |
Items |
Numeric |
N |
Elementi utilizzati per determinare la varianza. |
Return |
Float |
1 |
Varianza dei valori non Null degli elementi. |
|
VarP |
Items |
Numeric |
N |
Elementi utilizzati per determinare la varianza della popolazione. |
Return |
Float |
1 |
Varianza della popolazione dei valori non Null degli elementi. |
Funzioni informative
Tramite le funzioni informative è possibile ottenere le informazioni principali sugli utenti.
Nome funzione | Argomento | Tipo | Cardinalità | Descrizione |
---|---|---|---|---|
GetUserID |
Return |
String |
1 |
ID dell'utente. GetUserID è una funzione statica. |
GetUserCulture |
Return |
Language |
1 |
La lingua o le impostazioni internazionali dell'utente. GetUserCulture è una funzione statica. |
Altre funzioni
Oltre a quelle illustrate sopra, nel linguaggio SMDL sono utilizzate le funzioni seguenti.
Nome funzione | Argomento | Tipo | Cardinalità | Descrizione |
---|---|---|---|---|
Filter |
Filter Items |
Any |
N |
Valori che devono essere filtrati. Per filtrare elementi, utilizzare la finestra di dialogo Filtro. |
Filter Condition |
Boolean |
1 |
Indica se l'istanza corrispondente deve essere inclusa. |
|
Return |
N |
Il valore restituito è dello stesso tipo degli elementi Filter. |
||
In |
Item |
Boolean, DateTime, Integer, Decimal, Float, String o EntityKey |
1 |
Elemento che deve essere controllato per l'appartenenza a un set. |
Set |
N |
Deve essere un'espressione di tipo Literal senza Path. Item e Set devono avere lo stesso tipo di dati. |
||
Return |
Boolean |
1 |
Indica se l'elemento si trova nel set. |
|
If |
Condition |
Boolean |
1 |
Condizione che deve essere verificata. |
TrueCase |
Any |
1 |
Valore che deve essere restituito se la condizione è true. Se la condizione è false, TrueCase non viene valutato. Non può essere un tipo di dati EntityKey. |
|
FalseCase |
Any |
1 |
Valore che deve essere restituito se la condizione è false. FalseCase deve avere lo stesso tipo di dati di TrueCase. Se la condizione è true, FalseCase non viene valutato. |
|
Return |
1 |
Il tipo deve essere lo stesso di TrueCase. |
||
Switch |
Condition1 |
Boolean |
1 |
Condizione che deve essere verificata. Per Switch possono esistere zero o più coppie aggiuntive Condition/Value: |
Value1 |
Any |
1 |
Valore che deve essere restituito se Condition1 è true. |
|
Condition/N |
Boolean |
1 |
Condizione che deve essere verificata. Non viene valutata se qualsiasi condizione precedente è true. |
|
Value/N |
Boolean |
1 |
Valore che deve essere restituito se Condition/N è true. Deve avere lo stesso tipo di dati di Value1. Non viene valutato se Condition/N non viene valutata o se Condition/N è false. |
|
Return |
Boolean |
1 |
Il tipo è lo stesso di Value1. Restituisce Null se tutte le condizioni sono false. |
|
Evaluate |
Expression |
Any |
N |
L'espressione che deve essere valutata. Questa funzione è utilizzata per controllare il contesto dell'entità in cui viene valutata un'espressione. L'espressione seguente, ad esempio, esegue la media dei prezzi per ogni singolo prodotto ordinato dal cliente: Avg([customer->order->product]Price). L'espressione seguente esegue la media dei prezzi, ottenuti dall'entità prodotto, per ogni ordine del cliente: Avg([customer->order]Evaluate([order->product]Price)). Lungo un percorso esistono molti punti in cui la posizione della valutazione può controllare la caratteristica di un'aggregazione. Sono possibili più utilizzi indipendenti di Evaluate. Di seguito viene riportato un esempio di più utilizzi indipendenti di Evaluate in un modello in cui ogni prodotto può essere fabbricato da diversi produttori: Average([customer->order]Evaluate([order->product]Evaluate([product->manufacturer->city]population))) |
Return |
N |
Il tipo è lo stesso dell'espressione. |
||
Aggregate |
Expression |
Any |
N |
L'espressione di aggregazione che deve essere valutata. Questa funzione è utilizzata per controllare il contesto dell'entità in cui viene valutata un'aggregazione. Si consideri, ad esempio, un attributo TotalSales definito in un'entità Order. L'espressione per visualizzare le vendite totali all'interno del contesto di un ordine è semplicemente TotalSales. L'espressione per calcolare le vendite totali nel contesto di un cliente sarebbe simile alla seguente: Aggregate([customer->order]TotalSales). L'argomento dell'espressione deve contenere un'espressione non vincolata o una o più funzioni pass-through nidificate (che devono assumere qualsiasi tipo di dati), in cui l'argomento pass-through più interno contiene un ExpressionNode non vincolato, ad esempio Aggregate([customer->order]Filter([order->product]Sum(UnitPrice),=(Shipped, "True")). |
Return |
1 |
Il tipo è lo stesso dell'espressione. |
Vedere anche
Concetti
Proprietà degli oggetti di Progettazione modelli
Proprietà delle query di Progettazione modelli
Tipi di dati di Progettazione modelli
Utilizzo delle funzioni (Generatore report)