共用方式為


Azure Data Factory 和 Azure Synapse Analytics 中的運算式和函式

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文提供 Azure Data Factory 和 Azure Synapse Analytics 支援的運算式和函式的詳細資料。

運算式

定義中的 JSON 值可以是常值,或是在執行階段評估的運算式。 例如:

"name": "value"

"name": "@pipeline().parameters.password"

運算式可以出現在 JSON 字串值中的任何一處,並一律產生另一個 JSON 值。 當 JSON 值為運算式時,藉由移除 @ 符號來擷取運算式的主體。 如果需要的常值字串開頭為 @,就必須使用 @@ 逸出。 下列範例顯示如何評估運算式。

JSON 值 結果
"parameters" 傳回字元 'parameters'。
"parameters[1]" 傳回字元 'parameters[1]'。
"@@" 傳回包含 \'\@\' 的 1 個字元字串。
" @" 傳回包含 '\@\' 的 2 個字元字串。

使用稱為「字串插補」的功能,運算式也可以出現在字串內,其中運算式會包含在 @{ ... } 內。 例如:"name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"

使用字串插補時,結果一律為字串。 假設我將 myNumber 定義為 42,將 myString 定義為 foo

JSON 值 結果
"@pipeline().parameters.myString" 傳回 foo 做為字串。
"@{pipeline().parameters.myString}" 傳回 foo 做為字串。
"@pipeline().parameters.myNumber" 傳回 42 做為「編號」
"@{pipeline().parameters.myNumber}" 傳回 42 做為「字串」
"Answer is: @{pipeline().parameters.myNumber}" 傳回 Answer is: 42 字串。
"@concat('Answer is: ', string(pipeline().parameters.myNumber))" 傳回字串 Answer is: 42
"Answer is: @@{pipeline().parameters.myNumber}" 傳回 Answer is: @{pipeline().parameters.myNumber} 字串。

在 ForEach 活動之類的控制流程活動中,您可以針對屬性專案提供要逐一查看的陣列,並用 @item() 來逐一查看 ForEach 活動中的單一列舉。 例如,如果項目為陣列:[1, 2, 3],@item() 在第一個反覆項目中會傳回 1,在第二個反覆項目中會傳回 2,在第三個反覆項目中會傳回 3。 您也可以使用 @range(0,10) 之類的運算式,逐一查看十個項目,從 0 開始到 9 結束。

您可以使用 @activity(「活動名稱」) 來擷取活動的輸出並做出決策。 請考慮名為 Web1 的 Web 活動。 為了將第一個活動的輸出放在第二個活動的主體中,運算式通常看起來如下:@activity('Web1').output 或 @activity('Web1').output.data,或視第一個活動的輸出外觀而定。

範例

複雜運算式範例

下列範例顯示的複雜範例參考活動輸出的深度子欄位。 若要參考評估為子欄位的管道參數,請使用 [] 語法,而不是點 (.) 運算子 (如同 subfield1 和 subfield2 的情況) 作為活動輸出的一部份。

@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*

動態建立檔案並將其命名,是常見的模式。 讓我們探索一些動態檔案命名範例。

  1. 將日期附加至檔案名:@concat('Test_', formatDateTime(utcnow(), 'yyyy-dd-MM'))

  2. 在客戶時區中附加 DateTime:@concat('Test_', convertFromUtc(utcnow(), 'Pacific Standard Time'))

  3. 附加觸發程式時間: @concat('Test_', pipeline().TriggerTime)

  4. 輸出至具有日期的單一檔案時,輸出對應資料流中的自訂檔案名:'Test_' + toString(currentDate()) + '.csv'

在上述情況下,會從 Test_ 開始建立 4 個動態檔案名。

動態內容編輯器

完成編輯時,動態內容編輯器會自動逸出內容中的字元。 例如,內容編輯器中的下列內容是具有兩個運算式函式的字串插補。

{ 
  "type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
  "name": "@{toUpper('myData')}"
}

動態內容編輯器會將上述內容轉換成運算式 "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}"。 此運算式的結果是如下所示的 JSON 格式字串。

{
  "type": "Table",
  "name": "MYDATA"
}

具有參數的資料集

在以下範例中,BlobDataset 會採用一個名為 path 的參數。 其值會藉由使用下列運算式,設定 folderPath 屬性的值:dataset().path

{
    "name": "BlobDataset",
    "properties": {
        "type": "AzureBlob",
        "typeProperties": {
            "folderPath": "@dataset().path"
        },
        "linkedServiceName": {
            "referenceName": "AzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "parameters": {
            "path": {
                "type": "String"
            }
        }
    }
}

具有參數的管線

在以下範例中,管線會採用 inputPathoutputPath 參數。 這些參數的值會用來設定參數化 Blob 資料集的 path。 這裡使用的語法為:pipeline().parameters.parametername.

{
    "name": "Adfv2QuickStartPipeline",
    "properties": {
        "activities": [
            {
                "name": "CopyFromBlobToBlob",
                "type": "Copy",
                "inputs": [
                    {
                        "referenceName": "BlobDataset",
                        "parameters": {
                            "path": "@pipeline().parameters.inputPath"
                        },
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "BlobDataset",
                        "parameters": {
                            "path": "@pipeline().parameters.outputPath"
                        },
                        "type": "DatasetReference"
                    }
                ],
                "typeProperties": {
                    "source": {
                        "type": "BlobSource"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                }
            }
        ],
        "parameters": {
            "inputPath": {
                "type": "String"
            },
            "outputPath": {
                "type": "String"
            }
        }
    }
}

取代特殊字元

當您完成編輯時,動態內容編輯器會自動逸出內容中的字元,例如雙引號、反斜線。 如果您想要使用 replace() 函式 中的\n\t 來取代換行字元或索引標籤,將會造成問題。 您可以在程式碼檢視中編輯動態內容,以移除運算式中的額外 \,或者您可以遵循下列步驟,使用運算式語言取代特殊字元:

  1. 針對原始字串值的 URL 編碼
  2. 取代 URL 編碼字串,例如換行字元 (%0A)、歸位字元 (%0D)、水準索引標籤 (%09)。
  3. URL 解碼

例如,變數 companyName 在其值中有分行符號,運算式 @uriComponentToString(replace(uriComponent(variables('companyName')), '%0A', '')) 可以移除分行符號。

Contoso-
Corporation

逸出單引號字元

管線中的表示式函式會使用單引號 (') 括住字串值參數。 使用管線字串表示式中的兩個連續單引號字元來包含單引號。 以下是範例:expression @concat('Here is a double quote character: ". ', 'And here is a single quote character all within the same string: ''.') 會傳回下列結果:

Here is a double quote character: ". And here is a single quote character all within the same string: '.

不過,在數據流表達式中,不支援此語法。 相反地,數據流表達式可以以單引號或雙引弧括住。 以雙引弧括住需要單引號的文字,以及在字串函式中要求單引號的文字。 如果您需要同時包含單引號和雙引號的字串,您可以使用 concat() 來合併每個包含單引號或雙引號的兩個子字串。 與上一個管線表示式範例相等的數據流會是 concat('Here is a double quote character: ". ', "And here is a single quote character all within the same string: '.")。 在數據流中,該表達式會傳回與前一個管線表達式範例相同的結果。

教學課程

教學課程會引導您如何在管道與活動之間,以及活動之間傳遞參數。 本教學課程特別示範 Azure Data Factory 的步驟,雖然 Synapse 工作區的步驟幾乎相同,但使用者介面稍有差異。

函式

您可以在運算式內呼叫函式。 下列各節提供可在運算式中使用之函式的相關資訊。

日期函式

日期或時間函式 Task
addDays 將天數加入時間戳記。
addHours 將時數加入時間戳記。
addMinutes 將分鐘數加入時間戳記。
addSeconds 將秒數加入時間戳記。
addToTime 將時間單位數字加入時間戳記。 另請參閱 getFutureTime
convertFromUtc 將時間戳記從國際標準時間 (UTC) 轉換為目標時區。
convertTimeZone 將時間戳記從來源時區轉換為目標時區。
convertToUtc 將時間戳記從來源時區轉換為國際標準時間 (UTC)。
dayOfMonth 傳回時間戳記中的當月日期元件。
dayOfWeek 傳回時間戳記中的星期幾元件。
dayOfYear 傳回時間戳記中一年的第幾天元件。
formatDateTime 以選用格式將時間戳記當作字串傳回。
getFutureTime 傳回目前時間戳記加上指定時間單位的結果。 另請參閱 addToTime
getPastTime 傳回目前時間戳記減去指定時間單位的結果。 另請參閱 subtractFromTime
startOfDay 傳回時間戳記中當天的起始點。
startOfHour 傳回時間戳記中小時的起始點。
startOfMonth 傳回時間戳記中月份的起始點。
subtractFromTime 從時間戳記減去時間單位數字。 另請參閱 getPastTime
ticks 傳回指定時間戳記的 ticks 屬性值。
utcNow 傳回目前的時間戳記作為字串。

字串函數

若要處理字串,您可以使用這些字串函式以及一些集合函式。 字串函式只能用於字串。

字串函數 Task
concat 結合兩個或多個字串,並傳回合併的字串。
endsWith 檢查字串是否以指定的子字串結束。
guid 以字串形式產生全域唯一識別碼 (GUID)。
indexOf 傳回子字串的起始位置。
lastIndexOf 傳回子字串最後一次出現的起始位置。
replace 使用指定字串取代子字串,並傳回已更新的字串。
split 在指定分隔符號每次出現時分割字串,並以陣列元素的形式傳回結果子字串。
startsWith 檢查字串是否以特定的子字串開始。
substring 傳回字串中的字元 (從指定的位置起始)。
toLower 傳回小寫格式的字串。
toUpper 傳回大寫格式的字串。
修剪 移除字串的開頭和尾端空白字元,並傳回更新後的字串。

集合函數

若要處理集合 (通常為陣列、字串,而有時候為字典),您可以使用這些集合函式。

集合函式 Task
contains 檢查集合是否具有特定項目。
empty 檢查集合是否是空的。
first 傳回集合中的第一個項目。
intersection 在指定的多個集合中,傳回「只有」共同項目的集合。
join 傳回具有陣列中「所有」項目 (以指定的字元隔開) 的字串。
last 傳回集合中的最後一個項目。
length 傳回字串或陣列中的項目數目。
skip 移除集合前端的項目,並傳回「其他所有」項目。
take 傳回集合中的前端項目。
union 傳回具有指定集合中「所有」項目的集合。

邏輯函式

這些函式在條件內相當有用,而且可以用來評估任何類型的邏輯。

邏輯比較函式 Task
and 檢查是否所有運算式都是 True。
equals 檢查兩個值是否相等。
greater 檢查第一個值是否大於第二個值。
greaterOrEquals 檢查第一個值是否大於或等於第二個值。
if 檢查運算式是 True 或 False。 根據結果,傳回指定的值。
less 檢查第一個值是否小於第二個值。
lessOrEquals 檢查第一個值是否小於或等於第二個值。
not 檢查運算式是否為 False。
or 檢查是否至少有一個運算式是 True。

轉換函數

這些函式是用來在每個原生類型語言之間轉換︰

  • string
  • 整數
  • float
  • boolean
  • 陣列
  • 字典
轉換函式 Task
array 從單一指定輸入傳回的陣列。 關於多個輸入的資訊,請參閱 createArray
base64 傳回字串的 base64 編碼版本。
base64ToBinary 傳回 base64 編碼字串的二進位版本。
base64ToString 傳回 base64 編碼字串的字串版本。
binary 傳回輸入值的二進位版本。
bool 傳回輸入值的布林值版本。
coalesce 從一個或多個參數中傳回第一個非 Null 值。
createArray 從多個輸入傳回陣列。
dataUri 傳回輸入值的資料 URI。
dataUriToBinary 傳回資料 URI 的二進位版本。
dataUriToString 傳回資料 URI 的字串版本。
decodeBase64 傳回 base64 編碼字串的字串版本。
decodeDataUri 傳回資料 URI 的二進位版本。
decodeUriComponent 傳回以已解碼版本取代逸出字元的字串。
encodeUriComponent 傳回以逸出字元取代 URL 中 Unsafe 字元的字串。
float 傳回輸入值的浮點數。
int 傳回字串的整數版本。
json 傳回字串或 XML 的 JavaScript 物件標記法 (JSON) 類型值或物件。
string 傳回輸入值的字串版本。
uriComponent 藉由以逸出字元取代 URL 中的 Unsafe 字元,傳回輸入值的 URI 編碼版本。
uriComponentToBinary 傳回 URI 編碼字串的二進位版本。
uriComponentToString 傳回 URI 編碼字串的字串版本。
xml 傳回字串的 SML 版本。
xpath 檢查 XML 中是否有符合 XPath (XML 路徑語言) 運算式的節點或值,並傳回符合的節點或值。

數學函數

這些函式可用於任一類型的數字︰整數浮點數

數學函式 Task
add 傳回兩個數字相加的結果。
div 傳回將一個數位除以另一個數字的結果。
max 從數字集合或陣列中傳回最大值。
min 從數字集合或陣列中傳回最小值。
mod 傳回餘數,將一個數位除以另一個數位。
mul 傳回將兩數相乘的乘積。
rand 從指定範圍傳回隨機整數。
range 傳回從指定整數開始的整數陣列。
sub 傳回從另一個數位減去一個數字的結果。

函式參考

本節依字母順序列出所有可用的函式。

add

傳回兩個數字相加的結果。

add(<summand_1>, <summand_2>)
參數 必要 類型​ 描述
<summand_1>, <summand_2> Yes 整數、浮點數或混合 要相加的數字
傳回值 類型 描述
<result-sum> 整數或浮點數 指定數字相加的結果

範例

此範例會相加指定的數字:

add(1, 1.5)

並傳回此結果:2.5

addDays

將天數加入時間戳記。

addDays('<timestamp>', <days>, '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<days> Yes 整數 要加入的天數 (正數或負數)
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 時間戳記加上指定的天數

範例 1

此範例會在指定的時間戳記中加上 10 天:

addDays('2018-03-15T13:00:00Z', 10)

並傳回此結果:"2018-03-25T00:00:0000000Z"

範例 2

此範例會從指定的時間戳記中減去五天:

addDays('2018-03-15T00:00:00Z', -5)

並傳回此結果:"2018-03-10T00:00:0000000Z"

addHours

將時數加入時間戳記。

addHours('<timestamp>', <hours>, '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<hours> Yes 整數 要加入的時數 (正數或負數)
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 時間戳記加上指定的時數

範例 1

此範例會在指定的時間戳記中加上 10 小時:

addHours('2018-03-15T00:00:00Z', 10)

並傳回此結果:"2018-03-15T10:00:0000000Z"

範例 2

此範例會從指定的時間戳記中減去五小時:

addHours('2018-03-15T15:00:00Z', -5)

並傳回此結果:"2018-03-15T10:00:0000000Z"

addMinutes

將分鐘數加入時間戳記。

addMinutes('<timestamp>', <minutes>, '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<分鐘> Yes 整數 要加入的分鐘數 (正數或負數)
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 時間戳記加上指定的分鐘數

範例 1

此範例會在指定的時間戳記中加上 10 分鐘:

addMinutes('2018-03-15T00:10:00Z', 10)

並傳回此結果:"2018-03-15T00:20:00.0000000Z"

範例 2

此範例會從指定的時間戳記中減去五分鐘:

addMinutes('2018-03-15T00:20:00Z', -5)

並傳回此結果:"2018-03-15T00:15:00.0000000Z"

addSeconds

將秒數加入時間戳記。

addSeconds('<timestamp>', <seconds>, '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<seconds> Yes 整數 要加入的秒數 (正數或負數)
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 時間戳記加上指定的秒數

範例 1

此範例會在指定的時間戳記中加上 10 秒鐘:

addSeconds('2018-03-15T00:00:00Z', 10)

並傳回此結果:"2018-03-15T00:00:10.0000000Z"

範例 2

此範例會在指定的時間戳記中減去 5 秒鐘:

addSeconds('2018-03-15T00:00:30Z', -5)

並傳回此結果:"2018-03-15T00:00:25.0000000Z"

addToTime

將時間單位數字加入時間戳記。 另請參閱 getFutureTime()

addToTime('<timestamp>', <interval>, '<timeUnit>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<interval> Yes 整數 要加入的指定時間單位數字
<timeUnit> Yes String interval 搭配使用的時間單位:"Second"、"Minute"、"Hour"、"Day"、"Week"、"Month"、"Year"
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 時間戳記加上指定的時間單位數字

範例 1

此範例會在指定的時間戳記中加上 1 天:

addToTime('2018-01-01T00:00:00Z', 1, 'Day')

並傳回此結果:"2018-01-02T00:00:00.0000000Z"

範例 2

此範例會在指定的時間戳記中加上 1 天:

addToTime('2018-01-01T00:00:00Z', 1, 'Day', 'D')

並傳回選用 "D" 格式的結果:"Tuesday, January 2, 2018"

檢查是否所有運算式都是 True。 在所有運算式都是 True 時,傳回 True,或至少有一個運算式為 False 時傳回 False。

and(<expression1>, <expression2>)
參數 必要 類型​ 描述
<expression1>, <expression2> Yes 布林值 要檢查的運算式
傳回值 類型 描述
[True] 或 [False] 布林值 當兩個運算式都是 True 時,便傳回 True。 至少一個運算式為 False 時,則傳回 False。

範例 1

這些範例會檢查指定的布林值是否都是 True:

and(true, true)
and(false, true)
and(false, false)

並傳回下列結果:

  • 第一個範例:兩個運算式都是 True,所以會傳回 true
  • 第二個範例:一個運算式為 False,所以會傳回 false
  • 第一個範例:兩個運算式都是 False,所以會傳回 false

範例 2

這些範例會檢查指定的運算式是否都是 True:

and(equals(1, 1), equals(2, 2))
and(equals(1, 1), equals(1, 2))
and(equals(1, 2), equals(1, 3))

並傳回下列結果:

  • 第一個範例:兩個運算式都是 True,所以會傳回 true
  • 第二個範例:一個運算式為 False,所以會傳回 false
  • 第一個範例:兩個運算式都是 False,所以會傳回 false

陣列

從單一指定輸入傳回的陣列。 關於多個輸入的資訊,請參閱 createArray()

array('<value>')
參數 必要 類型​ 描述
<value> Yes String 建立陣列的字串
傳回值 類型 描述
[<>] 陣列 包含單一指定輸入的陣列

範例

此範例會從 "hello" 字串建立陣列:

array('hello')

並傳回此結果:["hello"]

base64

傳回字串的 base64 編碼版本。

base64('<value>')
參數 必要 類型​ 描述
<value> Yes String 輸入字串
傳回值 類型 描述
<base64-string> String 輸入字串的 base64 編碼版本

範例

此範例會將 "hello" 字串轉換為 base64 編碼的字串:

base64('hello')

並傳回此結果:"aGVsbG8="

base64ToBinary

傳回 base64 編碼字串的二進位版本。

base64ToBinary('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的 base64 編碼字串
傳回值 類型 描述
<binary-for-base64-string> String base64 編碼字串的二進位版本

範例

此範例會將 "aGVsbG8=" base64 編碼的字串轉換為二進位字串:

base64ToBinary('aGVsbG8=')

並傳回此結果:

"0110000101000111010101100111001101100010010001110011100000111101"

base64ToString

傳回 base64 編碼字串的字串版本,也就是有效地解碼 base64 字串。 使用此函式而非 decodeBase64()。 雖然這兩個函數的運作方式相同,但是較常使用 base64ToString()

base64ToString('<value>')
參數 必要 類型​ 描述
<value> Yes String 要解碼的 base64 編碼字串
傳回值 類型 描述
<decoded-base64-string> String 傳回 base64 編碼字串的字串版本

範例

此範例會將 "aGVsbG8=" base64 編碼的字串轉換為單純字串:

base64ToString('aGVsbG8=')

並傳回此結果:"hello"

binary

傳回字串的二進位版本。

binary('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的字串
傳回值 類型 描述
<binary-for-input-value> String 指定字串的二進位版本

範例

此範例會將 "hello" 字串轉換為二進位字串:

binary('hello')

並傳回此結果:

"0110100001100101011011000110110001101111"

bool

傳回值的布林值版本。

bool(<value>)
參數 必要 類型​ 描述
<value> Yes 任意 要轉換的值
傳回值 類型 描述
[True] 或 [False] 布林值 指定值的布林值版本

範例

這些範例會將指定的值轉換為布林值:

bool(1)
bool(0)

並傳回下列結果:

  • 第一個範例:true
  • 第二個範例:false

coalesce

從一個或多個參數中傳回第一個非 Null 值。 空白字串、空白陣列和空白物件不是 null。

coalesce(<object_1>, <object_2>, ...)
參數 必要 類型​ 描述
<object_1>, <object_2>, ... Yes 任何類型,可以是混合類型 要檢查是否有 Null 的一個或多個項目
傳回值 類型 描述
<first-non-null-item> 任意 第一個不是 Null 的項目或值。 如果所有參數都是 Null,則此函式會傳回 Null。

範例

這些範例會從指定值傳回第一個非 Null 的值,或是,如果所有值都是 Null,則傳回 Null:

coalesce(null, true, false)
coalesce(null, 'hello', 'world')
coalesce(null, null, null)

並傳回下列結果:

  • 第一個範例:true
  • 第二個範例:"hello"
  • 第三個範例:null

concat

結合兩個或多個字串,並傳回合併的字串。

concat('<text1>', '<text2>', ...)
參數 必要 類型​ 描述
<text1>, <text2>, ... Yes String 要結合的至少兩個字串
傳回值 類型 描述
<text1text2...> String 從合併輸入字串中建立的字串

範例

此範例會合併 "Hello" 和 "World" 字串:

concat('Hello', 'World')

並傳回此結果:"HelloWorld"

contains

檢查集合是否具有特定項目。 找到項目時,傳回 True,或找不到項目時,傳回 False。 此函式會區分大小寫。

contains('<collection>', '<value>')
contains([<collection>], '<value>')

具體而言,此函數會用在這些集合類型上:

  • 要尋找「子字串」的「字串」
  • 要尋找「值」的「陣列」
  • 要尋找「索引碼」的「字典」
參數 必要 類型​ 描述
<collection> Yes 字串、陣列或字典 要檢查的集合
<value> Yes 個別的字串、陣列或字典 要尋找的項目
傳回值 類型 描述
[True] 或 [False] 布林值 找到項目時,傳回 True。 找不到項目時,傳回 False。

範例 1

此範例會檢查字串 "hello world" 是否有子字串 "world",並傳回 True:

contains('hello world', 'world')

範例 2

此範例會檢查字串 "hello world" 是否有子字串 "universe",並傳回 False:

contains('hello world', 'universe')

convertFromUtc

將時間戳記從國際標準時間 (UTC) 轉換為目標時區。

convertFromUtc('<timestamp>', '<destinationTimeZone>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<destinationTimeZone> Yes String 目標時區的名稱。 如需時區名稱,請參閱 Microsoft 時區值,但您可能必須從時區名稱中移除任何標點符號。
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<converted-timestamp> String 轉換為目標時區的時間戳記

範例 1

此範例會將時間戳記轉換為指定的時區:

convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific Standard Time')

並傳回此結果:"2018-01-01T00:00:00Z"

範例 2

此範例會將時間戳記轉換為指定的時區和格式:

convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific Standard Time', 'D')

並傳回此結果:"Monday, January 1, 2018"

convertTimeZone

將時間戳記從來源時區轉換為目標時區。

convertTimeZone('<timestamp>', '<sourceTimeZone>', '<destinationTimeZone>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<sourceTimeZone> Yes String 來源時區的名稱。 如需時區名稱,請參閱 Microsoft 時區值,但您可能必須從時區名稱中移除任何標點符號。
<destinationTimeZone> Yes String 目標時區的名稱。 如需時區名稱,請參閱 Microsoft 時區值,但您可能必須從時區名稱中移除任何標點符號。
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<converted-timestamp> String 轉換為目標時區的時間戳記

範例 1

此範例會將來源時區轉換為目標時區:

convertTimeZone('2018-01-01T08:00:00.0000000Z', 'UTC', 'Pacific Standard Time')

並傳回此結果:"2018-01-01T00:00:00.0000000"

範例 2

此範例會將時區轉換為指定的時區和格式:

convertTimeZone('2018-01-01T08:00:00.0000000Z', 'UTC', 'Pacific Standard Time', 'D')

並傳回此結果:"Monday, January 1, 2018"

convertToUtc

將時間戳記從來源時區轉換為國際標準時間 (UTC)。

convertToUtc('<timestamp>', '<sourceTimeZone>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<sourceTimeZone> Yes String 來源時區的名稱。 如需時區名稱,請參閱 Microsoft 時區值,但您可能必須從時區名稱中移除任何標點符號。
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<converted-timestamp> String 轉換為 UTC 的時間戳記

範例 1

此範例會將時間戳記轉換為 UTC:

convertToUtc('01/01/2018 00:00:00', 'Pacific Standard Time')

並傳回此結果:"2018-01-01T08:00:00.0000000Z"

範例 2

此範例會將時間戳記轉換為 UTC:

convertToUtc('01/01/2018 00:00:00', 'Pacific Standard Time', 'D')

並傳回此結果:"Monday, January 1, 2018"

createArray

從多個輸入傳回陣列。 如需單一輸入陣列的資訊,請參閱 array()

createArray('<object1>', '<object2>', ...)
參數 必要 類型​ 描述
<object1>, <object2>, ... Yes 任何類型,但不能是混合 用來建立陣列的至少兩個項目
傳回值 類型 描述
[<object1>, <object2>, ...] 陣列 從所有輸入項目建立的陣列

範例

此範例會從以下輸入建立陣列:

createArray('h', 'e', 'l', 'l', 'o')

並傳回此結果:["h", "e", "l", "l", "o"]

dataUri

傳回字串的資料統一資源識別項 (URI)。

dataUri('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的字串
傳回值 類型 描述
<data-uri> String 輸入字串的資料 URI

範例

此範例會針對 "hello" 字串建立資料 URI:

dataUri('hello')

並傳回此結果:"data:text/plain;charset=utf-8;base64,aGVsbG8="

dataUriToBinary

傳回資料統一資源識別項 (URI) 的二進位版本。 使用此函式而非 decodeDataUri()。 雖然這兩個函數的運作方式相同,但是較常使用 dataUriBinary()

dataUriToBinary('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的資料 URI
傳回值 類型 描述
<binary-for-data-uri> String 資料 URI 的二進位版本

範例

此範例會建立此資料 URI 的二進位版本:

dataUriToBinary('data:text/plain;charset=utf-8;base64,aGVsbG8=')

並傳回此結果:

"01100100011000010111010001100001001110100111010001100101011110000111010000101111011100000 1101100011000010110100101101110001110110110001101101000011000010111001001110011011001010111 0100001111010111010101110100011001100010110100111000001110110110001001100001011100110110010 10011011000110100001011000110000101000111010101100111001101100010010001110011100000111101"

dataUriToString

傳回資料統一資源識別項 (URI) 的字串版本。

dataUriToString('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的資料 URI
傳回值 類型 描述
<string-for-data-uri> String 資料 URI 的字串版本

範例

此範例會建立此資料 URI 的字串:

dataUriToString('data:text/plain;charset=utf-8;base64,aGVsbG8=')

並傳回此結果:"hello"

dayOfMonth

傳回時間戳記中的當月日期。

dayOfMonth('<timestamp>')
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
傳回值 類型 描述
<day-of-month> 整數 在指定時間戳記中的當月日期

範例

此範例會傳回此時間戳記中的當月日期數字:

dayOfMonth('2018-03-15T13:27:36Z')

並傳回此結果:15

dayOfWeek

從時間戳記傳回當週的第幾天。

dayOfWeek('<timestamp>')
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
傳回值 類型 描述
<day-of-week> 整數 在指定時間戳記上那一週的第幾天,其中星期日是 0、星期一是 1,依此類推

範例

此範例會從此時間戳記傳回當週的第幾天:

dayOfWeek('2018-03-15T13:27:36Z')

並傳回此結果:3

dayOfYear

從時間戳記傳回一年的第幾天。

dayOfYear('<timestamp>')
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
傳回值 類型 描述
<day-of-year> 整數 在指定時間戳記上那一年的第幾天

範例

此範例會從此時間戳記傳回一年的第幾天:

dayOfYear('2018-03-15T13:27:36Z')

並傳回此結果:74

decodeBase64

傳回 base64 編碼字串的字串版本,也就是有效地解碼 base64 字串。 請考慮使用 base64ToString(),而非 decodeBase64()。 雖然這兩個函數的運作方式相同,但是較常使用 base64ToString()

decodeBase64('<value>')
參數 必要 類型​ 描述
<value> Yes String 要解碼的 base64 編碼字串
傳回值 類型 描述
<decoded-base64-string> String 傳回 base64 編碼字串的字串版本

範例

此範例會建立 base64 編碼字串的字串:

decodeBase64('aGVsbG8=')

並傳回此結果:"hello"

decodeDataUri

傳回資料統一資源識別項 (URI) 的二進位版本。 請考慮使用 dataUriToBinary(),而非 decodeDataUri()。 雖然這兩個函數的運作方式相同,但是較常使用 dataUriToBinary()

decodeDataUri('<value>')
參數 必要 類型​ 描述
<value> Yes String 要解碼的資料 URI 字串
傳回值 類型 描述
<binary-for-data-uri> String 資料 URI 字串的二進位版本

範例

此範例會傳回此資料 URI 的二進位版本:

decodeDataUri('data:text/plain;charset=utf-8;base64,aGVsbG8=')

並傳回此結果:

"01100100011000010111010001100001001110100111010001100101011110000111010000101111011100000 1101100011000010110100101101110001110110110001101101000011000010111001001110011011001010111 0100001111010111010101110100011001100010110100111000001110110110001001100001011100110110010 10011011000110100001011000110000101000111010101100111001101100010010001110011100000111101"

decodeUriComponent

傳回以已解碼版本取代逸出字元的字串。

decodeUriComponent('<value>')
參數 必要 類型​ 描述
<value> Yes String 其逸出字元需要解碼的字串
傳回值 類型 描述
<decoded-uri> String 更新後的字串,其中逸出字元已解碼

範例

此範例會以已解碼的版本取代此字串中的逸出字元:

decodeUriComponent('http%3A%2F%2Fcontoso.com')

並傳回此結果:"https://contoso.com"

div

傳回將一個數位除以另一個數字的結果。

div(<dividend>, <divisor>)

函式的精確傳回類型取決於其參數的類型,請參閱範例以取得詳細數據。

參數 必要 類型​ 描述
<dividend> Yes 整數或浮點數 要除以「除數」的數字
<divisor> Yes 整數或浮點數 的數位。 零的除數值會在運行時間造成錯誤。
傳回值 類型 描述
<quotient-result> 整數或浮點數 將第一個數位除以第二個數字的結果

範例 1

這些範例會將數位 9 除以 2:

div(9, 2.0)
div(9.0, 2)
div(9.0, 2.0)

全部都會傳回此結果: 4.5

範例 2

此範例也會將數位 9 除以 2,但因為兩個參數都是整數,所以捨棄餘數 (整數除法):

div(9, 2)

表示式會傳回結果 4。 若要取得餘數的值,請使用 mod() 函式。

encodeUriComponent

傳回字串的統一資源識別項 (URI) 編碼版本,以逸出字元取代 URL 中的 Unsafe 字元。 請考慮使用 uriComponent(),而非 encodeUriComponent()。 雖然這兩個函數的運作方式相同,但是較常使用 uriComponent()

encodeUriComponent('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換成 URI 編碼格式的字串
傳回值 類型 描述
<encoded-uri> String 具有逸出字元的 URI 編碼字串

範例

此範例會建立此字串的 URI 編碼版本:

encodeUriComponent('https://contoso.com')

並傳回此結果:"http%3A%2F%2Fcontoso.com"

empty

檢查集合是否是空的。 集合若是空的,傳回 True,或集合若不是空的,則傳回 False。

empty('<collection>')
empty([<collection>])
參數 必要 類型​ 描述
<collection> Yes 字串、陣列或物件 要檢查的集合
傳回值 類型 描述
[True] 或 [False] 布林值 若集合是空的,傳回 True。 若不是空的,傳回 False。

範例

這些範例會檢查指定的集合是否是空的:

empty('')
empty('abc')

並傳回下列結果:

  • 第一個範例:傳遞空字串,所以函數傳回 true
  • 第二個範例:傳遞 "abc" 字串,所以函數傳回 false

endsWith

檢查字串是否以特定的子字串結束。 找到子字串時,傳回 True,或找不到子字串時,傳回 False。 此函式不區分大小寫。

endsWith('<text>', '<searchText>')
參數 必要 類型​ 描述
<text> String 要檢查的字串
<searchText> Yes String 要尋找的結尾子字串
傳回值 類型 描述
[True] 或 [False] 布林值 找到結尾子字串時,傳回 True。 找不到項目時,傳回 False。

範例 1

此範例會檢查 "hello world" 字串是否以 "world" 字串結尾:

endsWith('hello world', 'world')

並傳回此結果:true

範例 2

此範例會檢查 "hello world" 字串是否以 "universe" 字串結尾:

endsWith('hello world', 'universe')

並傳回此結果:false

等於

檢查兩個值、運算式或物件是否相等。 兩個項目相等時,傳回 True,或兩個項目不相等時,傳回 False。

equals('<object1>', '<object2>')
參數 必要 類型​ 描述
<object1>, <object2> Yes 各種 要比較的值、運算式或物件
傳回值 類型 描述
[True] 或 [False] 布林值 當兩個項目相等時,傳回 True。 當兩個項目不相等時,傳回 False。

範例

這些範例會檢查指定的輸入是否相等。

equals(true, 1)
equals('abc', 'abcd')

並傳回下列結果:

  • 第一個範例:兩個值相等,所以函數傳回 true
  • 第二個範例:兩個值不相等,所以函式傳回 false

第一

傳回字串或陣列中的第一個項目。

first('<collection>')
first([<collection>])
參數 必要 類型​ 描述
<collection> Yes 字串或陣列 要從中尋找第一個項目的集合
傳回值 類型 描述
<first-collection-item> 任意 集合中的第一個項目

範例

這些範例會尋找以下集合中第一個項目:

first('hello')
first(createArray(0, 1, 2))

並傳回下列結果:

  • 第一個範例:"h"
  • 第二個範例:0

float

將浮點數的字串版本轉換為實際浮點數。

float('<value>')
參數 必要 類型​ 描述
<value> Yes String 具有有效浮點數要轉換的字串
傳回值 類型 描述
<float-value> Float 所指定字串的浮點數

範例

此範例會建立此浮點數的字串版本:

float('10.333')

並傳回此結果:10.333

formatDateTime

傳回指定格式的時間戳記。

formatDateTime('<timestamp>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<reformatted-timestamp> String 所指定格式的更新時間戳記

範例

此範例會將時間戳記轉換為指定格式:

formatDateTime('03/15/2018 12:00:00', 'yyyy-MM-ddTHH:mm:ss')

並傳回此結果:"2018-03-15T12:00:00"

getFutureTime

傳回目前時間戳記加上指定時間單位的結果。

getFutureTime(<interval>, <timeUnit>, <format>?)
參數 必要 類型​ 描述
<interval> Yes 整數 要加入的指定時間單位數字
<timeUnit> Yes String interval 搭配使用的時間單位:"Second"、"Minute"、"Hour"、"Day"、"Week"、"Month"、"Year"
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 目前時間戳記加上指定的時間單位數字

範例 1

假設目前的時間戳記是 "2018-03-01T00:00:00.0000000Z"。 此範例會在時間戳記中加上 5 天:

getFutureTime(5, 'Day')

並傳回此結果:"2018-03-06T00:00:00.0000000Z"

範例 2

假設目前的時間戳記是 "2018-03-01T00:00:00.0000000Z"。 此範例會加上五天,並將結果轉換為 "D" 格式:

getFutureTime(5, 'Day', 'D')

並傳回此結果:"Tuesday, March 6, 2018"

getPastTime

傳回目前時間戳記減去指定時間單位的結果。

getPastTime(<interval>, <timeUnit>, <format>?)
參數 必要 類型​ 描述
<interval> Yes 整數 要減去的指定時間單位數字
<timeUnit> Yes String interval 搭配使用的時間單位:"Second"、"Minute"、"Hour"、"Day"、"Week"、"Month"、"Year"
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 目前時間戳記減去指定的時間單位數字

範例 1

假設目前的時間戳記是 "2018-02-01T00:00:00.0000000Z"。 此範例會從此時間戳記中減去五天:

getPastTime(5, 'Day')

並傳回此結果:"2018-01-27T00:00:00.0000000Z"

範例 2

假設目前的時間戳記是 "2018-02-01T00:00:00.0000000Z"。 此範例會減去五天,並將結果轉換為 "D" 格式:

getPastTime(5, 'Day', 'D')

並傳回此結果:"Saturday, January 27, 2018"

greater

檢查第一個值是否大於第二個值。 當第一個值比較大時,傳回 True,或當第一個值比較小時,傳回 False。

greater(<value>, <compareTo>)
greater('<value>', '<compareTo>')
參數 必要 類型​ 描述
<value> Yes 整數、浮點數或字串 要檢查其是否大於第二個值的第一個值
<compareTo> Yes 個別的整數、浮點數或字串 比較值
傳回值 類型 描述
[True] 或 [False] 布林值 當第一個值大於第二個值時,傳回 True。 當第一個值等於或小於第二個值時,傳回 False。

範例

以下範例會檢查第一個值是否大於第二個值:

greater(10, 5)
greater('apple', 'banana')

並傳回下列結果:

  • 第一個範例:true
  • 第二個範例:false

greaterOrEquals

檢查第一個值是否大於或等於第二個值。 當第一個值較大或相等時,傳回 True,或當第一個值較小時,傳回 False。

greaterOrEquals(<value>, <compareTo>)
greaterOrEquals('<value>', '<compareTo>')
參數 必要 類型​ 描述
<value> Yes 整數、浮點數或字串 要檢查其是否大於或等於第二個值的第一個值
<compareTo> Yes 個別的整數、浮點數或字串 比較值
傳回值 類型 描述
[True] 或 [False] 布林值 當第一個值大於或等於第二個值時,傳回 True。 當第一個值小於第二個值時,傳回 False。

範例

以下範例會檢查第一個值是否大於或等於第二個值:

greaterOrEquals(5, 5)
greaterOrEquals('apple', 'banana')

並傳回下列結果:

  • 第一個範例:true
  • 第二個範例:false

guid

以字串形式產生唯一識別碼 (GUID),例如 "c2ecc88d-88c8-4096-912c-d6f2e2b138ce":

guid()

此外,除了預設格式 "D" (以連字號分隔的 32 個數字),您可以指定不同格式的 GUID。

guid('<format>')
參數 必要 類型​ 描述
<format> No String 所傳回 GUID 的單一格式規範。 預設格式為 "D",但您可以使用 "N"、"D"、"B"、"P" 或 "X"。
傳回值 類型 描述
<GUID-value> String 隨機產生的 GUID

範例

此範例會產生相同 GUID,不過格式是 32 個以連字號分隔的數字,並以括號括住:

guid('P')

並傳回此結果:"(c2ecc88d-88c8-4096-912c-d6f2e2b138ce)"

if

檢查運算式是 True 或 False。 根據結果,傳回指定的值。

if(<expression>, <valueIfTrue>, <valueIfFalse>)
參數 必要 類型​ 描述
<expression> Yes 布林值 要檢查的運算式
<valueIfTrue> Yes 任意 運算式為 True 時要傳回的值
<valueIfFalse> Yes 任意 運算式為 False 時要傳回的值
傳回值 類型 描述
<specified-return-value> 任意 根據運算式為 True 或 False,傳回的指定值

範例

此範例會傳回 "yes",因為指定的運算式傳回 True。 否則,此範例會傳回 "no"

if(equals(1, 1), 'yes', 'no')

indexOf

傳回子字串的起始位置或索引值。 此函式不區分大小寫,而且索引以數字 0 開頭。

indexOf('<text>', '<searchText>')
參數 必要 類型​ 描述
<text> String 具有子字串要尋找的字串
<searchText> Yes String 要尋找的子字串
傳回值 類型 描述
<index-value> 整數 所指定子字串的起始位置或索引值。

如果找不到該字串,傳回數字 -1。

範例

此範例會在 "hello world" 字串中,尋找 "world" 子字串的起始索引值:

indexOf('hello world', 'world')

並傳回此結果:6

int

傳回字串的整數版本。

int('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的字串
傳回值 類型 描述
<integer-result> 整數 所指定字串的整數版本

範例

此範例會建立字串 "10" 的整數版本:

int('10')

並傳回此結果:10

json

傳回字串或 XML 的 JavaScript 物件標記法 (JSON) 類型值或物件。

json('<value>')
參數 必要 類型​ 描述
<value> Yes 字串或 XML 要轉換的字串或 XML
傳回值 類型 描述
<JSON-result> JSON 原生類型或物件 所指定字串或 XML 的 JSON 原生類型值或物件。 如果字串為 Null,函式會傳回空物件。

範例 1

此範例會將此字串轉換為 JSON 值:

json('[1, 2, 3]')

並傳回此結果:[1, 2, 3]

範例 2

此範例會將此字串轉換為 JSON:

json('{"fullName": "Sophia Owen"}')

並傳回此結果:

{
  "fullName": "Sophia Owen"
}

範例 3

此範例會將此 XML 轉換為 JSON:

json(xml('<?xml version="1.0"?> <root> <person id='1'> <name>Sophia Owen</name> <occupation>Engineer</occupation> </person> </root>'))

並傳回此結果:

{
   "?xml": { "@version": "1.0" },
   "root": {
      "person": [ {
         "@id": "1",
         "name": "Sophia Owen",
         "occupation": "Engineer"
      } ]
   }
}

交集

在指定的多個集合中,傳回「只有」共同項目的集合。 項目若要出現在結果中,必須出現在所有傳遞至此函式的集合中。 如果一個或多個項目有相同的名稱,則具有該名稱的最後一個項目會出現在結果中。

intersection([<collection1>], [<collection2>], ...)
intersection('<collection1>', '<collection2>', ...)
參數 必要 類型​ 描述
<collection1>, <collection2>, ... Yes 陣列或物件,但不可以兩者並存 您想要其中「只有」共同項目的集合
傳回值 類型 描述
<common-items> 個別的陣列或物件 在指定的多個集合中,「只有」共同項目的集合

範例

此範例會從以下陣列中找出共同項目:

intersection(createArray(1, 2, 3), createArray(101, 2, 1, 10), createArray(6, 8, 1, 2))

並傳回的「只有」這些項目的陣列:[1, 2]

join

傳回具有陣列中所有項目的字串,並以「分隔符號」將每個字元隔開。

join([<collection>], '<delimiter>')
參數 必要 類型​ 描述
<collection> Yes 陣列 要將其項目聯結的陣列
<delimiter> Yes String 在結果字串中,要出現在每個字元之間的分隔符號
傳回值 類型 描述
<char1><delimiter><char2><delimiter>... String 從指定陣列中所有項目建立的結果字串

範例

此範例會從此陣列中所有項目建立字串,並以指定字元作為分隔符號:

join(createArray('a', 'b', 'c'), '.')

並傳回此結果:"a.b.c"

最後一

傳回集合中的最後一個項目。

last('<collection>')
last([<collection>])
參數 必要 類型​ 描述
<collection> Yes 字串或陣列 要從中尋找最後一個項目的集合
傳回值 類型 描述
<last-collection-item> 個別的字串或陣列 集合中的最後一個項目

範例

這些範例會尋找以下集合中最後一個項目:

last('abcd')
last(createArray(0, 1, 2, 3))

並傳回下列結果:

  • 第一個範例:"d"
  • 第二個範例:3

lastIndexOf

傳回子字串最後一次出現的起始位置或索引值。 此函式不區分大小寫,而且索引以數字 0 開頭。

lastIndexOf('<text>', '<searchText>')
參數 必要 類型​ 描述
<text> String 具有子字串要尋找的字串
<searchText> Yes String 要尋找的子字串
傳回值 類型 描述
<ending-index-value> 整數 指定的子字串最後一次出現的起始位置或索引值。

如果找不到該字串,傳回數字 -1。

範例

此範例會在 "hello world" 字串中,尋找 "world" 子字串最後一次出現的起始索引值:

lastIndexOf('hello world', 'world')

並傳回此結果:6

length

傳回集合中的項目數目。

length('<collection>')
length([<collection>])
參數 必要 類型​ 描述
<collection> Yes 字串或陣列 要計算其項目數的集合
傳回值 類型 描述
<length-or-count> 整數 集合中的項目數目

範例

這些範例會計算以下集合中的項目數:

length('abcd')
length(createArray(0, 1, 2, 3))

並傳回此結果:4

less

檢查第一個值是否小於第二個值。 當第一個值較小時,傳回 True,或當第一個值較大時,傳回 False。

less(<value>, <compareTo>)
less('<value>', '<compareTo>')
參數 必要 類型​ 描述
<value> Yes 整數、浮點數或字串 要檢查其是否小於第二個值的第一個值
<compareTo> Yes 個別的整數、浮點數或字串 比較項目
傳回值 類型 描述
[True] 或 [False] 布林值 當第一個值小於第二個值時,傳回 True。 當第一個值等於或大於第二個值時,傳回 False。

範例

以下範例會檢查第一個值是否小於第二個值。

less(5, 10)
less('banana', 'apple')

並傳回下列結果:

  • 第一個範例:true
  • 第二個範例:false

lessOrEquals

檢查第一個值是否小於或等於第二個值。 當第一個值較小或相等時,傳回 True,或當第一個值較大時,傳回 False。

lessOrEquals(<value>, <compareTo>)
lessOrEquals('<value>', '<compareTo>')
參數 必要 類型​ 描述
<value> Yes 整數、浮點數或字串 要檢查其是否小於或等於第二個值的第一個值
<compareTo> Yes 個別的整數、浮點數或字串 比較項目
傳回值 類型 描述
[True] 或 [False] 布林值 當第一個值小於或等於第二個值時,傳回 True。 當第一個值大於第二個值時,傳回 False。

範例

以下範例會檢查第一個值是否小於或等於第二個值。

lessOrEquals(10, 10)
lessOrEquals('apply', 'apple')

並傳回下列結果:

  • 第一個範例:true
  • 第二個範例:false

max

從具有數字的清單或陣列中傳回最大值 (包含首尾兩端的值)。

max(<number1>, <number2>, ...)
max([<number1>, <number2>, ...])
參數 必要 類型​ 描述
<number1>, <number2>, ... Yes 整數、浮點數或兩者並存 您需要其中最大值的數字集合
[<number1>, <number2>, ...] Yes 陣列 - 整數、浮點數或兩者並存 您需要其中最大值的數字陣列
傳回值 類型 描述
<max-value> 整數或浮點數 所指定陣列或數字集合中的最大值

範例

這些範例會從數字集合和陣列中取得最大值:

max(1, 2, 3)
max(createArray(1, 2, 3))

並傳回此結果:3

分鐘

從數字集合或陣列中傳回最小值。

min(<number1>, <number2>, ...)
min([<number1>, <number2>, ...])
參數 必要 類型​ 描述
<number1>, <number2>, ... Yes 整數、浮點數或兩者並存 您需要其中最小值的數字集合
[<number1>, <number2>, ...] Yes 陣列 - 整數、浮點數或兩者並存 您需要其中最小值的數字陣列
傳回值 類型 描述
<min-value> 整數或浮點數 所指定數字集合或陣列中的最小值

範例

這些範例會取得數字集合和陣列中的最小值:

min(1, 2, 3)
min(createArray(1, 2, 3))

並傳回此結果:1

mod

傳回餘數,將一個數位除以另一個數位。 如需整數除法,請參閱 div()

mod(<dividend>, <divisor>)
參數 必要 類型​ 描述
<dividend> Yes 整數或浮點數 要除以「除數」的數字
<divisor> Yes 整數或浮點數 的數位。 零的除數值會在運行時間造成錯誤。
傳回值 類型 描述
<modulo-result> 整數或浮點數 第一個數字除以第二個數字的餘數

範例

本範例會計算第一個數位除以第二個數位時的餘數:

mod(3, 2)

並傳回此結果:1

mul

傳回將兩數相乘的乘積。

mul(<multiplicand1>, <multiplicand2>)
參數 必要 類型​ 描述
<multiplicand1> Yes 整數或浮點數 要與「被乘數 2」 相乘的數字
<multiplicand2> Yes 整數或浮點數 以 multiplicand1 的數位
傳回值 類型 描述
<product-result> 整數或浮點數 第一個數字與第二個數字相乘的乘積

範例

這些範例會將第一個數位乘以第二個數位:

mul(1, 2)
mul(1.5, 2)

並傳回下列結果:

  • 第一個範例:2
  • 第二個範例:3

not

檢查運算式是否為 False。 運算式為 False 時,傳回 True,或運算式為 True 時,傳回 False。

not(<expression>)
參數 必要 類型​ 描述
<expression> Yes 布林值 要檢查的運算式
傳回值 類型 描述
[True] 或 [False] 布林值 運算式為 False 時,傳回 True。 運算式為 True 時,傳回 False。

範例 1

這些範例會檢查指定的運算式是否為 False:

not(false)
not(true)

並傳回下列結果:

  • 第一個範例:運算式為 False,所以函數傳回 true
  • 第一個範例:運算式為 True,所以函數傳回 false

範例 2

這些範例會檢查指定的運算式是否為 False:

not(equals(1, 2))
not(equals(1, 1))

並傳回下列結果:

  • 第一個範例:運算式為 False,所以函數傳回 true
  • 第一個範例:運算式為 True,所以函數傳回 false

檢查是否至少有一個運算式是 True。 至少有一個運算式是 True 時,傳回 True,或所有運算式都是 False 時,傳回 False。

or(<expression1>, <expression2>)
參數 必要 類型​ 描述
<expression1>, <expression2> Yes 布林值 要檢查的運算式
傳回值 類型 描述
[True] 或 [False] 布林值 至少有一個運算式是 True 時,傳回 True。 所有運算式都是 False 時,即傳回 False。

範例 1

這些範例會檢查是否至少有一個運算式是 True:

or(true, false)
or(false, false)

並傳回下列結果:

  • 第一個範例:至少有一個運算式為 True,所以函數傳回 true
  • 第二個範例:兩個運算式都是 False,所以函式傳回 false

範例 2

這些範例會檢查是否至少有一個運算式是 True:

or(equals(1, 1), equals(1, 2))
or(equals(1, 2), equals(1, 3))

並傳回下列結果:

  • 第一個範例:至少有一個運算式為 True,所以函數傳回 true
  • 第二個範例:兩個運算式都是 False,所以函式傳回 false

rand

從指定範圍傳回隨機整數 (不包含範圍中的末端數字)。

rand(<minValue>, <maxValue>)
參數 必要 類型​ 描述
<minValue> Yes 整數 範圍中的最小整數
<maxValue> Yes 整數 在範圍中,在函式所能傳回最大整數後面的整數
傳回值 類型 描述
<random-result> 整數 從指定範圍傳回的隨機整數。 請注意,每次叫用 rand() 都會產生唯一的結果,這表示您在輸出監視中觀察到的值在實際執行階段可能會不相同。

範例

此範例會從指定範圍取得隨機整數,但不包含最大值:

rand(1, 5)

並傳回這些數字的其中一個作為結果:1234

range

傳回從指定整數開始的整數陣列。

range(<startIndex>, <count>)
參數 必要 類型​ 描述
<startIndex> Yes 整數 作為第一個項目起始陣列的整數值
<計數> Yes 整數 陣列中的整數數量
傳回值 類型 描述
[<range-result>] 陣列 從指定索引開始的整數陣列

範例

此範例會建立從指定索引開始的整數陣列,且其中有指定數量的整數:

range(1, 4)

並傳回此結果:[1, 2, 3, 4]

replace

使用指定字串取代子字串,並傳回結果字串。 此函式會區分大小寫。

replace('<text>', '<oldText>', '<newText>')
參數 必要 類型​ 描述
<text> String 有子字串要取代的字串
<oldText> Yes String 要取代的子字串
<newText> Yes String 取代字串
傳回值 類型 描述
<updated-text> String 取代子字串後的更新字串

如果找不到子字串,則傳回原始字串。

範例

此範例會尋找 "the old string" 中的 "old" 字串,然後以"new" 取代 "old":

replace('the old string', 'old', 'new')

並傳回此結果:"the new string"

skip

移除集合前端的項目,並傳回「其他所有」項目。

skip([<collection>], <count>)
參數 必要 類型​ 描述
<collection> Yes 陣列 您想要從中移除項目的集合
<計數> Yes 整數 正整數,表示要移除的前端項目數量
傳回值 類型 描述
[<updated-collection>] 陣列 移除指定項目之後的更新集合

範例

此範例會從指定陣列的前端移除一個項目,也就是數字 0:

skip(createArray(0, 1, 2, 3), 1)

並傳回具有剩餘項目的此陣列:[1,2,3]

split

在指定分隔符號每次出現時分割字串,並以陣列元素的形式傳回結果子字串。 分隔符號通常是單一字元,但多字元分隔符號也受支援。

split('<text>', '<delimiter>')
參數 必要 類型​ 描述
<text> String 要分隔成子字串的字串
<delimiter> Yes String 用來作為分隔符號的字串
傳回值 類型 描述
[<substring1>,<substring2>,...] 陣列 包含原始字串的子字串之陣列

範例

此範例會根據分隔符號 "_" 傳回包含字串 "a_b_c" 子字串的陣列:

split('a_b_c', '_')

傳回的陣列為:["a","b","c"]

startOfDay

傳回時間戳記中當天的起始點。

startOfDay('<timestamp>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 指定的時間戳記,但以當天的零小時標記開始

範例

此範例會尋找此時間戳記中當天的起始點:

startOfDay('2018-03-15T13:30:30Z')

並傳回此結果:"2018-03-15T00:00:00.0000000Z"

startOfHour

傳回時間戳記中小時的起始點。

startOfHour('<timestamp>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 指定的時間戳記,但以小時的零分鐘標記開始

範例

此範例會尋找此時間戳記中小時的起始點:

startOfHour('2018-03-15T13:30:30Z')

並傳回此結果:"2018-03-15T13:00:00.0000000Z"

startOfMonth

傳回時間戳記中月份的起始點。

startOfMonth('<timestamp>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 指定的時間戳記,但以當月第一天的零小時標記開始

範例

此範例會傳回此時間戳記中月份的起始點:

startOfMonth('2018-03-15T13:30:30Z')

並傳回此結果:"2018-03-01T00:00:00.0000000Z"

startsWith

檢查字串是否以特定的子字串開始。 找到子字串時,傳回 True,或找不到子字串時,傳回 False。 此函式不區分大小寫。

startsWith('<text>', '<searchText>')
參數 必要 類型​ 描述
<text> String 要檢查的字串
<searchText> Yes String 要尋找的起始字串
傳回值 類型 描述
[True] 或 [False] 布林值 找到起始子字串時,傳回 True。 找不到項目時,傳回 False。

範例 1

此範例會檢查 "hello world" 字串是否以 "hello" 子字串開始:

startsWith('hello world', 'hello')

並傳回此結果:true

範例 2

此範例會檢查 "hello world" 字串是否以 "greetings" 子字串開始:

startsWith('hello world', 'greetings')

並傳回此結果:false

string

傳回值的字串版本。

string(<value>)
參數 必要 類型​ 描述
<value> Yes 任意 要轉換的值
傳回值 類型 描述
<string-value> String 指定值的字串版本

範例 1

此範例會建立此數字的字串版本:

string(10)

並傳回此結果:"10"

範例 2

此範例會為指定的 JSON 物件建立字串,並使用反斜線字元 (\) 做為雙引號 (") 的逸出字元。

string( { "name": "Sophie Owen" } )

並傳回此結果:"{ \\"name\\": \\"Sophie Owen\\" }"

sub

傳回從另一個數位減去一個數字的結果。

sub(<minuend>, <subtrahend>)
參數 必要 類型​ 描述
<minuend> Yes 整數或浮點數 要從中減去「減數」的數字
<subtrahend> Yes 整數或浮點數 從「被減數」中減去的數字
傳回值 類型 描述
<result> 整數或浮點數 從第一個數字減去第二個數字的結果

範例

此範例會從第一個數字減去第二個數字:

sub(10.3, .3)

並傳回此結果:10

substring

從字串中傳回從指定位置或索引起始的字元。 索引值會以數字 0 開頭。

substring('<text>', <startIndex>, <length>)
參數 必要 類型​ 描述
<text> String 您需要其中字元的字串
<startIndex> Yes 整數 等於或大於 0 的正數,作為起始位置或索引值
<length> Yes 整數 子字串中您需要的字元數正數
傳回值 類型 描述
<substring-result> String 具有指定字元數目的子字串,並以來源字串中的指定索引位置起始

範例

此範例會從指定字串建立 5 個字元的子字串,並且從索引值 6 起始:

substring('hello world', 6, 5)

並傳回此結果:"world"

subtractFromTime

從時間戳記減去時間單位數字。 另請參閱 getPastTime

subtractFromTime('<timestamp>', <interval>, '<timeUnit>', '<format>'?)
參數 必要 類型​ 描述
<timestamp> Yes String 包含時間戳記的字串
<interval> Yes 整數 要減去的指定時間單位數字
<timeUnit> Yes String interval 搭配使用的時間單位:"Second"、"Minute"、"Hour"、"Day"、"Week"、"Month"、"Year"
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<updated-timestamp> String 時間戳記減去指定的時間單位數字

範例 1

此範例會從此時間戳記中減去一天:

subtractFromTime('2018-01-02T00:00:00Z', 1, 'Day')

並傳回此結果:"2018-01-01T00:00:00:0000000Z"

範例 2

此範例會從此時間戳記中減去一天:

subtractFromTime('2018-01-02T00:00:00Z', 1, 'Day', 'D')

並傳回選用 "D" 格式的此結果:"Monday, January, 1, 2018"

take

傳回集合中的前端項目。

take('<collection>', <count>)
take([<collection>], <count>)
參數 必要 類型​ 描述
<collection> Yes 字串或陣列 您需要其中項目的集合
<計數> Yes 整數 正整數,表示您需要的前端項目數量
傳回值 類型 描述
<子集>或 [<子集>] 個別的字串或陣列 從原始集合前端取得指定項目數量的字串或陣列

範例

此範例會從這些集合的前端取得指定數目的項目:

take('abcde', 3)
take(createArray(0, 1, 2, 3, 4), 3)

並傳回下列結果:

  • 第一個範例:"abc"
  • 第二個範例:[0, 1, 2]

刻度

傳回指定時間戳記的 ticks 屬性值。 一「刻度」是 100 奈秒的間隔。

ticks('<timestamp>')
參數 必要 類型​ 描述
<timestamp> Yes String 時間戳記的字串
傳回值 類型 描述
<ticks-number> 整數 在輸入時間戳記後,自西曆 0001 年 1 月 1 日午夜 12:00:00 起經過的刻度數

toLower

傳回小寫格式的字串。 如果字串中的字元沒有小寫版本,則該字元在傳回的字串中會保持不變。

toLower('<text>')
參數 必要 類型​ 描述
<text> String 要以小寫格式傳回的字串
傳回值 類型 描述
<lowercase-text> String 小寫格式的原始字串

範例

此範例會將此字串轉換為小寫:

toLower('Hello World')

並傳回此結果:"hello world"

toUpper

傳回大寫格式的字串。 如果字串中的字元沒有大寫版本,則該字元在傳回的字串中會保持不變。

toUpper('<text>')
參數 必要 類型​ 描述
<text> String 要以大寫格式傳回的字串
傳回值 類型 描述
<uppercase-text> String 大寫格式的原始字串

範例

此範例會將此字串轉換為大寫:

toUpper('Hello World')

並傳回此結果:"HELLO WORLD"

修剪

移除字串的開頭和尾端空白字元,並傳回更新後的字串。

trim('<text>')
參數 必要 類型​ 描述
<text> String 要為其移除開頭和尾端空白字元的字串
傳回值 類型 描述
<updatedText> String 不含開頭或尾端空白字元的原始字串更新版本

範例

此範例會從「Hello World」字串中移除開頭與結尾空白字元:

trim(' Hello World  ')

並傳回此結果:"Hello World"

union

傳回具有指定集合中「所有」項目的集合。 出現在結果中的項目,可以出現在任何傳遞至此函式的集合中。 如果一個或多個項目有相同的名稱,則具有該名稱的最後一個項目會出現在結果中。

union('<collection1>', '<collection2>', ...)
union([<collection1>], [<collection2>], ...)
參數 必要 類型​ 描述
<collection1>, <collection2>, ... Yes 陣列或物件,但不可以兩者並存 您想要其中「所有」項目的集合
傳回值 類型 描述
<updatedCollection> 個別的陣列或物件 具有指定集合中所有項目的集合 - 不含重複值

範例

此範例會從以下集合取得「所有」項目:

union(createArray(1, 2, 3), createArray(1, 2, 10, 101))

並傳回此結果:[1, 2, 3, 10, 101]

uriComponent

傳回字串的統一資源識別項 (URI) 編碼版本,以逸出字元取代 URL 中的 Unsafe 字元。 使用此函式而非 encodeUriComponent()。 雖然這兩個函數的運作方式相同,但是較常使用 uriComponent()

uriComponent('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換成 URI 編碼格式的字串
傳回值 類型 描述
<encoded-uri> String 具有逸出字元的 URI 編碼字串

範例

此範例會建立此字串的 URI 編碼版本:

uriComponent('https://contoso.com')

並傳回此結果:"http%3A%2F%2Fcontoso.com"

uriComponentToBinary

傳回統一資源識別項 (URI) 元件的二進位版本。

uriComponentToBinary('<value>')
參數 必要 類型​ 描述
<value> Yes String 要轉換的 URI 編碼字串
傳回值 類型 描述
<binary-for-encoded-uri> String URI 編碼字串的二進位版本。 二進位內容是以 base64 編碼,而且由 $content 表示。

範例

此範例會建立此 URI 編碼字串的二進位版本:

uriComponentToBinary('http%3A%2F%2Fcontoso.com')

並傳回此結果:

"001000100110100001110100011101000111000000100101001100 11010000010010010100110010010001100010010100110010010001 10011000110110111101101110011101000110111101110011011011 110010111001100011011011110110110100100010"

uriComponentToString

傳回統一資源識別項 (URI) 編碼字串的字串版本,也就是有效地解碼 URI 編碼字串。

uriComponentToString('<value>')
參數 必要 類型​ 描述
<value> Yes String 要解碼的 URI 編碼字串
傳回值 類型 描述
<decoded-uri> String URI 編碼字串的已解碼版本

範例

此範例會建立此 URI 編碼字串的已解碼字串版本:

uriComponentToString('http%3A%2F%2Fcontoso.com')

並傳回此結果:"https://contoso.com"

utcNow

傳回目前的時間戳記。

utcNow('<format>')

您可以選擇性地以 <format> 參數指定不同格式。

參數 必要 類型​ 描述
<format> No String 單一格式規範自訂格式模式。 時間戳記的預設格式為 "o" (yyyy-MM-ddTHH:mm:ss:fffffffK),其符合 ISO 8601 並保留時區資訊。
傳回值 類型 描述
<current-timestamp> String 目前的日期和時間

範例 1

假設今天是 2018 年 4 月 15 日下午 1:00:00。 此範例會取得目前的時間戳記:

utcNow()

並傳回此結果:"2018-04-15T13:00:00.0000000Z"

範例 2

假設今天是 2018 年 4 月 15 日下午 1:00:00。 此範例會使用選擇性的 "D" 格式取得目前時間戳記:

utcNow('D')

並傳回此結果:"Sunday, April 15, 2018"

xml

傳回包含 JSON 物件的 XML 版字串。

xml('<value>')
參數 必要 類型​ 描述
<value> Yes String 其中有 JSON 物件要轉換的字串

JSON 物件必須只能有一個根屬性,且不可以是陣列。
使用反斜線字元 (\) 做為雙引號 (") 的逸出字元。

傳回值 類型 描述
<xml-version> Object 所指定字串或 JSON 物件的編碼 XML

範例 1

此範例會為包含 JSON 物件的此字串建立 XML 版本:

xml(json('{ \"name\": \"Sophia Owen\" }'))

並傳回此結果 XML:

<name>Sophia Owen</name>

範例 2

假設您有此 JSON 物件:

{
  "person": {
    "name": "Sophia Owen",
    "city": "Seattle"
  }
}

此範例會為包含此 JSON 物件的字串建立 XML:

xml(json('{\"person\": {\"name\": \"Sophia Owen\", \"city\": \"Seattle\"}}'))

並傳回此結果 XML:

<person>
  <name>Sophia Owen</name>
  <city>Seattle</city>
<person>

xpath

檢查 XML 中是否有符合 XPath (XML 路徑語言) 運算式的節點或值,並傳回符合的節點或值。 XPath 運算式 (或 "XPath") 可協助您瀏覽 XML 文件結構,讓您可以在 XML 內容中選取節點或計算值。

xpath('<xml>', '<xpath>')
參數 必要 類型​ 描述
<xml> Yes 任意 XML 字串,將對其搜尋是否有符合 XPath 運算式的值或節點
<xpath> Yes 任意 用來尋找相符 XML 節點或值的 XPath 運算式
傳回值 類型 描述
<xml-node> XML 只有單一節點符合指定的 XPath 運算式時會傳回 XML 節點
<value> 任意 只有單一值符合指定的 XPath 運算式時,會傳回 XML 節點的值
[<xml-node1>, <xml-node2>, ...]
-or-
[<value1>, <value2>, ...]
陣列 陣列,其中有符合指定 XPath 運算式的 XML 節點或值

範例 1

以範例 1 為基礎,此範例會尋找符合 <count></count> 節點的節點,並使用 sum() 函式將這些節點值相加:

xpath(xml(parameters('items')), 'sum(/produce/item/count)')

並傳回此結果:30

範例 2

在此範例中,有兩個運算式會在指定的引數中 (其中包含具有命名空間的 XML) 尋找符合 <location></location> 節點的節點。 此運算式使用反斜線字元 (\) 作為雙引號 (") 的逸出字元。

  • 運算式 1

    xpath(xml(body('Http')), '/*[name()=\"file\"]/*[name()=\"location\"]')

  • Expression 2

    xpath(xml(body('Http')), '/*[local-name()=\"file\" and namespace-uri()=\"http://contoso.com\"]/*[local-name()=\"location\"]')

以下是引數:

  • 包含 XML 文件命名空間的此 XML xmlns="http://contoso.com"

    <?xml version="1.0"?> <file xmlns="http://contoso.com"> <location>Paris</location> </file>
    
  • 此處其中一個 XPath 運算式:

    • /*[name()=\"file\"]/*[name()=\"location\"]

    • /*[local-name()=\"file\" and namespace-uri()=\"http://contoso.com\"]/*[local-name()=\"location\"]

以下是符合 <location></location> 節點的結果節點:

<location xmlns="https://contoso.com">Paris</location>

範例 3

以範例 3 為基礎,此範例會尋找 <location></location> 節點中的值:

xpath(xml(body('Http')), 'string(/*[name()=\"file\"]/*[name()=\"location\"])')

並傳回此結果:"Paris"

注意

您可以將註解新增至資料流程運算式,但無法在管線運算式中新增。

如需可在運算式中使用之系統變數的清單,請參閱系統變數