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 locali 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.

Time

DateTime

DateTime

1

Valore datetime da cui estrarre l'ora. Restituisce l'ora, i minuti e i secondi da un valore datetime.

Return

Time

Ora a partire da datetime.

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 o Time

1

Data o ora da cui viene estratta l'ora.

Return

Integer

Ora (0-23) della data/ora.

Minute

DateTime

DateTime o Time

1

Data o ora da cui viene estratto il minuto.

Return

Integer

Minuti (0-59) della data/ora.

Second

DateTime

DateTime o Time

1

Data o ora da cui viene estratto il secondo.

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. Se la formula calcola la differenza in un valore time di inizio e un valore time di fine, l'unità di intervallo può essere solo ORA, MINUTO o SECONDO.

Start

DateTime o Time

1

Data o ora di inizio.

End

DateTime o Time

1

Data o ora di fine. Deve essere dello stesso tipo di dati dell'ora di inizio.

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 data o ora. Deve essere una delle seguenti: Year, Quarter, Month, Day, Hour, Minute, Second o Week. Deve essere un valore di tipo literal. Se la formula aggiunge un numero di unità di intervalli di tempo a un valore time di inizio, l'unità di intervallo può essere solo ORA, MINUTO o SECONDO.

Number

Integer

1

Numero di unità di Interval da sommare alla data o all'ora.

DateTime

DateTime o Time

1

Data o ora a cui sommare.

Return

DateTime

Data o ora risultante dalla somma del numero specificato di unità di Interval alla data o ora originale. Deve essere dello stesso tipo di dati del campo datetime o time di inizio 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 locali 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.