共用方式為


模型設計師函數

您可以使用報表模型設計師函數來計算新屬性。例如,假設您想要知道每一筆銷售訂單的總銷售額。這個數字包括銷售金額,加上針對訂單支付的稅金。使用 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

指定了年、月、日、時、分以及秒的日期時間。

Time

DateTime

DateTime

1

要從中擷取時間的日期時間。從日期時間值傳回小時、分鐘和秒鐘。

Return

Time

日期時間的時間。

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

1

從中擷取小時的日期或時間。

Return

Integer

日期時間的時 (0-23)。

Minute

DateTime

DateTime 或 Time

1

從中擷取分鐘的日期或時間。

Return

Integer

日期時間的分 (0-59)。

Second

DateTime

DateTime 或 Time

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

用於指定日期差異的單位。必須是下列項目之一:年、季、月、日、時、分、秒或週。必須是常值。如果公式在開始時間和結束時間中計算出差異,間隔單位可能只有 HOUR、MINUTE 或 SECOND。

Start

DateTime 或 Time

1

開始日期或時間。

End

DateTime 或 Time

1

結束日期或時間。必須與開始時間具有相同的資料類型。

Return

Integer

開始日期時間與結束日期時間之間的差異,單位和 Interval 中指定的單位相同。如果開始日期時間在結束日期時間之後,結果為負的。

DateAdd

Interval

String

1

用於指定日期或時間加總的單位。必須是下列項目之一:年、季、月、日、時、分、秒或週。必須是常值。如果公式在開始時間中加入一些時間間隔單位,間隔單位可能只有 HOUR、MINUTE 或 SECOND。

Number

Integer

1

要加入至日期或時間之間隔的單位數目。

DateTime

DateTime 或 Time

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

類型與運算式相同。