模型設計師函數
您可以使用報表模型設計師函數來計算新屬性。例如,假設您想要知道每一筆銷售訂單的總銷售額。這個數字包括銷售金額,加上針對訂單支付的稅金。使用 Add 函數,可以將每個銷售總計加入至針對每個訂單支付的稅金。以下清單描述可用的函數、函數的需求及其行為。
純量函數
使用純量函數,您可以在單一引數上執行計算,以傳回欄位的新單一值。
函數名稱 | 引數 | 資料類型 | 基數 | 描述 |
---|---|---|---|---|
Add |
Item1 |
Numeric |
1 |
要加的第一個項目。 |
Item2 |
Numeric |
1 |
要加的第二個項目。 |
|
Return |
如果任一項目是 Float,類型就是 Float;而如果任一項目是 Decimal,類型就是 Decimal;否則就是 Integer。 |
|||
Subtract |
Item1 |
Numeric |
1 |
自此項目減去。 |
Item2 |
Numeric |
1 |
要減去的項目。 |
|
Return |
如果任一項目是 Float,類型就是 Float;而如果任一項目是 Decimal,類型就是 Decimal;否則就是 Integer。 |
|||
Multiply |
Item1 |
Numeric |
1 |
要乘的第一個項目。 |
Item2 |
Numeric |
1 |
要乘的第二個項目。 |
|
Return |
如果任一項目是 Float,類型就是 Float;而如果任一項目是 Decimal,類型就是 Decimal;否則就是 Integer。 |
|||
Divide |
Item1 |
Numeric |
1 |
除數項目。 |
Item2 |
Numeric |
1 |
被除數項目。 |
|
Return |
如果任一項目是 Float,類型就是 Float;否則就是 Decimal。 |
|||
Power |
Base |
Numeric |
1 |
乘冪的基數。 |
Exponent |
Numeric |
1 |
指數。 |
|
Return |
如果任一項目是 Float,類型就是 Float;而如果任一項目是 Decimal,類型就是 Decimal;否則就是 Integer。 |
|||
Negate |
Item |
Numeric |
1 |
要否定的項目。 |
Return |
類型與項目相同。 |
|||
Mod |
Item1 |
Integer |
1 |
除數項目。 |
Item2 |
Integer |
1 |
被除數項目。 |
|
Return |
Integer |
除法的餘數。 |
||
Equals |
Item1 |
Boolean、DateTime、Integer、Decimal、Float、String 或 EntityKey |
1 |
要比較的第一個項目。 |
Item2 |
1 |
要比較的第二個項目。Item1 與 Item2 的資料類型必須相同。 |
||
Return |
Boolean |
指出項目是否相同。 |
||
NotEquals |
Item1 |
Boolean、DateTime、Integer、Decimal、Float、String 或 EntityKey |
1 |
要比較的第一個項目。 |
Item2 |
1 |
要比較的第二個項目。Item1 與 Item2 的資料類型必須相同。 |
||
Return |
Boolean |
指出項目是否不相同。 |
||
GreaterThan |
Item1 |
DateTime、Integer、Decimal、Float 或 String |
1 |
要比較的第一個項目。 |
Item2 |
1 |
要比較的第二個項目。Item1 與 Item2 的資料類型必須相同。 |
||
Return |
Boolean |
指出第一個項目是否大於第二個項目。 |
||
GreaterThanOrEquals |
Item1 |
DateTime、Integer、Decimal、Float 或 String |
1 |
要比較的第一個項目。 |
Item2 |
1 |
要比較的第二個項目。Item1 與 Item2 的資料類型必須相同。 |
||
Return |
Boolean |
指出第一個項目是否大於或等於第二個項目。 |
||
LessThan |
Item1 |
DateTime、Integer、Decimal、Float 或 String |
1 |
要比較的第一個項目。 |
Item2 |
1 |
要比較的第二個項目。Item1 與 Item2 的資料類型必須相同。 |
||
Return |
Boolean |
指出第一個項目是否小於第二個項目。 |
||
LessThanOrEquals |
Item1 |
DateTime、Integer、Decimal、Float 或 String |
1 |
要比較的第一個項目。 |
Item2 |
1 |
要比較的第二個項目。Item1 與 Item2 的資料類型必須相同。 |
||
Return |
Boolean |
指出第一個項目是否小於或等於第二個項目。 |
||
And |
Item1 |
Boolean |
1 |
第一個條件。 |
Item2 |
Boolean |
1 |
第二個條件。如果 Item1 為 False,則不會評估 Item2。 |
|
Return |
Boolean |
如果 Item1 與 Item2 都為 true,則傳回值為 true。 |
||
Or |
Item1 |
Boolean |
1 |
第一個條件。 |
Item2 |
Boolean |
1 |
第二個條件。如果 Item1 為 true,則不會評估 Item2。 |
|
Return |
Boolean |
如果 Item1 或 Item2 為 true,則傳回值為 true。 |
||
Not |
Item |
Boolean |
1 |
要否定的條件。 |
Return |
Boolean |
如果項目為 false,則傳回值為 true。 |
||
Truncate |
Item |
Decimal 或 Float |
1 |
要截斷的項目。 |
Digits |
Integer |
1 |
項目的小數位數,超過的應截斷。例如,指定 3 會截斷項目小數位數第 3 位以後的數字。 |
|
Return |
傳回值類型與所截斷之項目的類型相同。 |
|||
Round |
Item |
Decimal 或 Float |
1 |
要捨入的項目。 |
Digits |
Integer |
1 |
項目應捨入的小數位數。例如,指定 3 會將項目捨入至小數位右邊第 3 位數。 |
|
Return |
傳回值類型與所捨入之項目的類型相同。 |
|||
Integer |
Item |
Numeric 或 String |
1 |
要轉換的項目。在報表產生器中,Integer 在 [函數] 索引標籤上列為 INT。 |
Return |
Integer |
項目轉換為整數。如果項目是數值,則會被截斷。請注意,使用了不變地區設定來轉換數值字串。句點是小數分隔符號。不允許用來分隔千位數的逗號。 |
||
Decimal |
Item |
Numeric 或 String |
1 |
要轉換的項目。 |
Return |
Decimal |
項目轉換為小數。 |
||
Float |
Item |
Numeric 或 String |
1 |
要轉換的項目。 |
Return |
Float |
項目轉換為浮點數。 |
||
String |
Item |
Numeric |
1 |
要轉換的項目。在報表產生器中,String 在 [函數] 索引標籤上列為 TEXT。 |
Return |
String |
要轉換為字串的項目。 |
||
Length |
String |
String |
1 |
用來決定長度的字串。 |
Return |
Integer |
字串的長度,指定為字串中的字元數目。 |
||
Find |
String |
String |
1 |
針對包含的字串搜尋的字串。 |
Substring |
String |
1 |
要搜尋的子字串。 |
|
Return |
Integer |
字串裡,子字串之第一個執行個體的位置。如果找不到子字串,則會傳回 0。 |
||
Substring |
String |
String |
1 |
要從其中擷取子字串的字串。 |
Start |
Integer |
1 |
字串中的開始位置 (以 1 為基準)。 |
|
Length |
Integer |
1 |
字元數。 |
|
Return |
String |
從字串中擷取出來的子字串,其中包含從 Start 到 Start+Length 的字元。 |
||
Left |
String |
String |
1 |
要從中取得最左邊字元的字串。 |
Length |
Integer |
1 |
字元數。 |
|
Return |
String |
字串的子字串,其中包含從 1 到 Length 的字元。 |
||
Right |
String |
String |
1 |
要從中取得最右邊字元的字串。 |
Length |
Integer |
1 |
字元數。 |
|
Return |
String |
字串的子字串,從 Length(String)-Length+1 到 Length(String)。 |
||
Concat |
String1 |
String |
1 |
要串連的第一個字串。 |
String2 |
String |
1 |
要串連的第二個字串。 |
|
Return |
String |
串連至第一個字串結尾處的第二個字串。 |
||
Lower |
String |
String |
1 |
要轉換為小寫的字串。 |
Return |
String |
所有大寫字元都轉換為小寫的字串。 |
||
Upper |
String |
String |
1 |
轉換為大寫的字串。 |
Return |
String |
所有小寫字元都轉換為大寫的字串。 |
||
LTrim |
String |
String |
1 |
要從中移除開頭空白的字串。 |
Return |
String |
已移除所有開頭空白的字串。 |
||
RTrim |
String |
String |
1 |
要移除尾端空白的字串。 |
Return |
String |
已移除尾端空白的字串。 |
||
Replace |
String |
String |
1 |
要以乙子字串取代所有甲子字串的字串。 |
Find |
String |
1 |
要搜尋的子字串。 |
|
Replace |
String |
1 |
取代 Find 字串的子字串。 |
|
Return |
String |
以 Replace 取代所有 Find 的字串。 |
||
Date |
Year |
Integer |
1 |
日期的年份。 |
Month |
Integer |
1 |
日期的月份 (1-12)。 |
|
Day |
Integer |
1 |
日期的日數 (1-31),必須是指定之月份和年份的有效日。 |
|
Return |
DateTime |
給定年、月、日及時間為 00:00:00 的日期時間。 |
||
DateTime |
Year |
Integer |
1 |
日期的年份。 |
Month |
Integer |
1 |
日期的月份 (1-12)。 |
|
Day |
Integer |
1 |
日期的日數 (1-31),必須是指定之月份和年份的有效日。 |
|
Hour |
Integer |
1 |
時間的時位 (0-23)。 |
|
Minute |
Integer |
1 |
時間的分位 (0-59)。 |
|
Second |
Decimal |
1 |
時間的秒位 (0-60)。 |
|
Return |
DateTime |
指定了年、月、日、時、分以及秒的日期時間。 |
||
Year |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取年份。 |
Return |
Integer |
日期時間的年。 |
||
Quarter |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取季度。 |
Return |
Integer |
日期時間的季別 (1-4)。 |
||
Month |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取月份。 |
Return |
Integer |
日期時間的月 (1-12)。 |
||
Day |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取日。 |
Return |
Integer |
日期時間的日 (1-31)。 |
||
Hour |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取時。 |
Return |
Integer |
日期時間的時 (0-23)。 |
||
Minute |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取分。 |
Return |
Integer |
日期時間的分 (0-59)。 |
||
Second |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取秒。 |
Return |
Integer |
日期時間的秒 (0-60)。 |
||
DayofYear |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取一年中的第幾天。 |
Return |
Integer |
日期時間之年中的日 (1-366)。 |
||
Week |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取週。 |
Return |
Integer |
日期時間的週 (1-53)。與語意模型之文化特性相關聯的預設每星期第一天,決定週的第一天。 |
||
DayofWeek |
DateTime |
DateTime |
1 |
日期,從這個日期中擷取週中的日。 |
Return |
Integer |
日期時間之週中的日 (1-7)。值從星期一開始=1 至星期日=7。 |
||
Date |
DateTime |
DateTime |
1 |
要移除時間的日期。在報表產生器中,此 Date 函數在 [函數] 索引標籤上列為 DATEONLY。 |
Return |
Integer |
已清除時間的日期時間 (00:00:00)。 |
||
Now |
Return |
DateTime |
目前的日期/時間。Now 是靜態函數。 |
|
Today |
Return |
DateTime |
已清除時間之目前的日期/時間 (00:00:00)。Today 是靜態函數。 |
|
DateDiff |
Interval |
String |
1 |
用來指定日期差異的單位。必須是下列項目之一:年、季、月、日、時、分、秒或週。必須是常值。 |
Start |
DateTime |
1 |
開始日期時間。 |
|
End |
DateTime |
1 |
結束日期時間。 |
|
Return |
Integer |
開始日期時間與結束日期時間之間的差異,單位和 Interval 中指定的單位相同。如果開始日期時間在結束日期時間之後,結果為負的。 |
||
DateAdd |
Interval |
String |
1 |
用來指定日期加總的單位。必須是下列項目之一:年、季、月、日、時、分、秒或週。必須是常值。 |
Number |
Integer |
1 |
要加入至日期時間之間隔的單位。 |
|
DateTime |
DateTime |
1 |
要加入至的日期時間。 |
|
Return |
DateTime |
將指定的間隔單位數加入至原始日期時間後,產生的日期時間。 |
彙總函數
使用彙總函數,您可以執行一組值或單一值的計算,然後傳回運算式的單一值。
函數名稱 | 引數 | 資料類型 | 基數 | 描述 |
---|---|---|---|---|
Sum |
Items |
Numeric |
N |
要加總的項目。 |
Return |
1 |
所有項目之值的總和。傳回值的資料類型和項目資料類型相同。 |
||
Avg |
Items |
Numeric |
N |
要平均的項目。在報表產生器中,Avg 在 [函數] 索引標籤上列為 AVERAGE。 |
Return |
1 |
項目之非 Null 值的平均。如果項目是 Decimal 或 Integer,則資料類型為 Decimal,否則為 Float。 |
||
Max |
Items |
DateTime、Integer、Decimal、Float 或 String |
N |
排序項目以決定最大值。 |
Return |
1 |
項目之非 Null 值的最大值。傳回值的資料類型和項目資料類型相同。 |
||
Min |
Items |
DateTime、Integer、Decimal、Float 或 String |
N |
排序項目以決定最小值。 |
Return |
1 |
項目之非 Null 值的最小值。傳回值的資料類型和項目資料類型相同。 |
||
Count |
Items |
任意 |
N |
要計數的項目。 |
Return |
Integer |
1 |
項目之非 Null 值的計數。 |
|
CountDistinct |
Items |
任意 |
N |
要計數的項目。項目的資料類型不能是 EntityKey。 |
Return |
Integer |
1 |
項目之相異非 Null 值的計數。 |
|
StDev |
Items |
Numeric |
N |
用來決定標準差的項目。 |
Return |
Float |
1 |
項目之非 Null 值的標準差。 |
|
StDevP |
Items |
Numeric |
N |
用來決定母體擴展標準差的項目。 |
Return |
Float |
1 |
項目之非 Null 值的母體擴展標準差。 |
|
Var |
Items |
Numeric |
N |
用來決定變異數的項目。 |
Return |
Float |
1 |
項目之非 Null 值的變異數。 |
|
VarP |
Items |
Numeric |
N |
用來決定母體擴展變異數的項目。 |
Return |
Float |
1 |
項目之非 Null 值的母體擴展變異數。 |
Information 函數
使用 Information 函數,您可以取得有關使用者的基本資訊。
函數名稱 | 引數 | 資料類型 | 基數 | 描述 |
---|---|---|---|---|
GetUserID |
Return |
String |
1 |
使用者的使用者識別碼。GetUserID 是靜態函數。 |
GetUserCulture |
Return |
Language |
1 |
使用者的語言或地區設定。GetUserCulture 是靜態函數。 |
其他函數
除了上面討論的函數之外,語意模型定義語言中使用了下列函數。
函數名稱 | 引數 | 資料類型 | 基數 | 描述 |
---|---|---|---|---|
Filter |
篩選項目 |
任意 |
N |
要篩選的值。若要篩選項目,請使用 [篩選] 對話方塊。 |
篩選條件 |
Boolean |
1 |
指出是否包含對應的執行個體。 |
|
Return |
N |
傳回值的資料類型與篩選項目相同。 |
||
In |
Item |
Boolean、DateTime、Integer、Decimal、Float、String 或 EntityKey |
1 |
要檢查集合成員資格的項目。 |
Set |
N |
這必須是沒有 Path 的常值運算式。Item 與 Set 的資料類型必須相同。 |
||
Return |
Boolean |
1 |
指出項目是否在集合裡面。 |
|
If |
Condition |
Boolean |
1 |
要測試的條件。 |
TrueCase |
任意 |
1 |
如果條件為 True,要傳回的值。如果條件為 False,不會評估 TrueCase。不能是 EntityKey 資料類型。 |
|
FalseCase |
任意 |
1 |
如果條件為 False,要傳回的值。FalseCase 的值類型必須與 TrueCase 相同。如果條件為 True,不會評估 FalseCase。 |
|
Return |
1 |
類型必須與 TrueCase 相同。 |
||
Switch |
Condition1 |
Boolean |
1 |
要測試的條件。參數可以有零或多個其他的條件/值配對: |
Value1 |
任意 |
1 |
如果 Condition1 為 True,要傳回的值。 |
|
Condition/N |
Boolean |
1 |
要測試的條件。如果先前有任何條件為 True,則不評估。 |
|
Value/N |
Boolean |
1 |
如果 Condition/N 為 True,要傳回的值。其資料類型必須與 Value1 相同。如果未評估 Condition/N,或者如果 Condition/N 為 False,則不評估。 |
|
Return |
Boolean |
1 |
類型與 Value1 相同。如果所有條件都為 False,則傳回 Null。 |
|
Evaluate |
Expression |
任意 |
N |
要評估的運算式。此函數用於控制評估運算式的實體內容。例如,下列運算式會將客戶訂購的每一種不同產品的售價平均: Avg([customer->order->product]Price)。 下列運算式會將客戶所下的每筆訂單的售價 (從產品實體取得) 平均: Avg([customer->order]Evaluate([order->product]Price))。 路徑中有許多點,可由評估位置控制彙總的相異性,因此可能使用多個獨立的 Evaluate。以下是在模型中使用多個獨立之 Evaluate 的範例,範例中的產品可以由多家製造商生產: Average([customer->order]Evaluate([order->product]Evaluate([product->manufacturer->city]population))) |
Return |
N |
類型與運算式相同。 |
||
Aggregate |
Expression |
任意 |
N |
要評估的彙總運算式。此函數用來控制評估彙總的實體內容。例如,請考慮在 Order 實體中定義的 TotalSales 屬性。顯示訂單的內容中之總銷售額的運算式為:TotalSales。計算客戶的內容中之總銷售額的運算式為: Aggregate([customer->order]TotalSales)。 運算式引數必須包含一個非錨定的運算式,或者一或多個巢狀通過函數 (可以是任何資料類型),其中最內層通過引數含有非錨定的 ExpressionNode。例如, Aggregate([customer->order]Filter([order->product]Sum(UnitPrice),=(Shipped, "True"))。 |
Return |
1 |
類型與運算式相同。 |
請參閱
概念
模型設計師物件屬性
模型設計師查詢屬性
模型設計師資料類型
使用函數 (報表產生器)