資料準備對應函式
「資料準備」函式可用於根據來源欄位中輸入的內容計算值。
欄位
欄位名稱可以是任何合法的識別碼 — 以字母、美元符號($
)或底線字元(_
)開頭的無限制長度的Unicode字母和數字序列。 變數名稱也區分大小寫。
如果欄位名稱不遵循此慣例,欄位名稱必須以${}
包住。 因此,舉例來說,如果欄位名稱為「First Name」或「First.Name」,則名稱必須分別包裝為${First Name}
或${First\.Name}
。
如果欄位名稱是下列保留關鍵字中的 any,則必須以${}{}
括住:
new, mod, or, break, var, lt, for, false, while, eq, gt, div, not, null, continue, else, and, ne, true, le, if, ge, return, _errors, do, function, empty, size
此外,保留關鍵字也包含此頁面上列出的任何對應函式。
可以使用點標籤法存取子欄位中的資料。 例如,如果有name
物件,若要存取firstName
欄位,請使用name.firstName
。
函式清單
下表列出所有支援的對映函式,包括範例運算式及其產生的輸出。
字串函式 string
- STRING:要串連的字串。
"Hi, there!"
\
逸出: +, ?, ^, |, ., [, (, {, ), *, $, \
如果您包含多個字元作為分隔符號,則會將分隔符號視為多字元分隔符號。- 字串: 必要 需要分割的字串。
- REGEX: Optional 可用來分割字串的規則運算式。
["Hi,", "there"]
- 輸入: 必要 正在搜尋的字串。
- SUBSTRING: 必要 正在字串中搜尋的子字串。
- START_POSITION: Optional 開始檢視字串的位置。
- 發生次數: 選擇性 從開始位置尋找的第n個發生次數。 預設為1。
- 輸入: 必要 輸入字串。
- TO_FIND: 必要 要在輸入中查詢的字串。
- TO_REPLACE: 必要 將取代"TO_FIND"中值的字串。
- 輸入: 必要 輸入字串。
- START_INDEX: 必要 子字串開始的輸入字串索引。
- 長度: 必要 子字串的長度。
lcase
- INPUT: 必要 將轉換為小寫的字串。
lcase("HeLlO")
ucase
- INPUT: 必要 將轉換為大寫的字串。
ucase("HeLo")
\
逸出: \
。 如果您包含多個分隔符號,字串將會分割到字串中存在的 any 個分隔符號上。 注意: 此函式只會從字串傳回非Null索引,無論是否有分隔符號。 如果產生的陣列中需要所有索引(包括null),請改用「爆炸」函式。- INPUT: 必要 要分割的輸入字串。
- SEPARATOR: 必要 用來分割輸入的字串。
["Hello", "world"]
- 分隔符號: 必要 用來加入物件的字串。
- 物件: 必要 將聯結的字串陣列。
join(SEPARATOR, [OBJECTS])
join(" ", to_array(true, "Hello", "world"))
- INPUT: 必要 要填補的字串。 此字串可以是Null。
- 計數: 必要 要填補的字串大小。
- PADDING: 必要 用來填補輸入的字串。 如果為Null或空白,則會視為單一空格。
- INPUT: 必要 要填補的字串。 此字串可以是Null。
- 計數: 必要 要填補的字串大小。
- PADDING: 必要 用來填補輸入的字串。 如果為Null或空白,則會視為單一空格。
- 字串: 必要 您要取得前「n」個字元的字串。
- 計數: 必要 您要從字串取得的「n」個字元。
- 字串: 必要 您要取得最後「n」個字元的字串。
- 計數: 必要 您要從字串取得的「n」個字元。
- 字串: 必要 您要移除空白字元的字串。
- 字串: 必要 您要移除空白字元的字串。
- 字串: 必要 您要移除空白字元的字串。
- STRING1: 必要 您要比較的第一個字串。
- STRING2: 必要 您要比較的第二個字串。
- STRING1: 必要 您要比較的第一個字串。
- STRING2: 必要 您要比較的第二個字串。
規則運算式函式
- 字串: 必要 您正在擷取群組的字串。
- REGEX: 必要 您希望群組比對的規則運算式。
- 字串: 必要 您正在檢查的字串符合規則運算式。
- REGEX: 必要 您要比較的規則運算式。
雜湊函式 hashing
- 輸入: 必要 要雜湊的純文字。
- CHARSET: 選擇性 字元集的名稱。 可能的值包括UTF-8、UTF-16、ISO-8859-1和US-ASCII。
- 輸入: 必要 要雜湊的純文字。
- CHARSET: 選擇性 字元集的名稱。 可能的值包括UTF-8、UTF-16、ISO-8859-1和US-ASCII。
- 輸入: 必要 要雜湊的純文字。
- CHARSET: 選擇性 字元集的名稱。 可能的值包括UTF-8、UTF-16、ISO-8859-1和US-ASCII。
- 輸入: 必要 要雜湊的純文字。
- CHARSET: 選擇性 字元集的名稱。 可能的值包括UTF-8、UTF-16、ISO-8859-1和US-ASCII。
- 輸入: 必要 要雜湊的純文字。
- CHARSET: 選擇性 字元集的名稱。 可能的值包括UTF-8、UTF-16、ISO-8859-1和US-ASCII。
URL函式 url
- URL: 必要 需要擷取通訊協定的URL。
- URL: 必要 需要擷取主機的URL。
- URL: 必要 需要擷取連線埠的URL。
- URL: 必要 需要從中擷取路徑的URL。
- FULL_PATH: Optional 判斷是否傳回完整路徑的布林值。 若設為false,則僅傳迴路徑的結尾。
- URL: 必要 您嘗試從中取得查詢字串的URL。
- 錨點: 必要 決定要如何處理查詢字串中的錨點。 可以是下列三個值之一:「保留」、「移除」或「附加」。
如果值為「保留」,則錨點會附加至傳回的值。
如果值為「remove」,則會從傳回的值中移除錨點。
如果值為「附加」,則錨點會以個別值的形式傳回。
get_url_query_str("foo://example.com:8042 /over/there?name=ferret#nose", "remove")
get_url_query_str("foo://example.com:8042/over/there?name=ferret#nose", "append")
{"name": "ferret#nose"}
{"name": "ferret"}
{"name": "ferret", "_anchor_": "nose"}
- URL: 必要 您要取代或編碼為ASCII字元的輸入URL (含特殊字元)。
- URL: 必要 您要解碼成特殊字元的輸入URL (含ASCII字元)。
日期和時間函式 date-and-time
date
函式的詳細資訊。2021-10-26T10:10:24Z
- 日期: 必要 您要格式化的輸入日期(ZonedDateTime物件)。
- 格式: 必要 您想要將日期變更為的格式。
yyyy-MM-dd HH:mm:ss
")2019-10-23 11:24:35
- 時間戳記: 必要 您要格式化的時間戳記。 這是以毫秒為單位寫入。
- 格式: 必要 您要時間戳記變成的格式。
yyyy-MM-dd'T'HH:mm:ss.SSSX
")2019-10-23T11:24:35.000Z
- 日期: 必要 代表日期的字串。
- 格式: 必要 代表來源日期格式的字串。注意: 這並 不 代表您要將日期字串轉換成的格式。
- DEFAULT_DATE: 必要 如果提供的日期為Null,則傳回預設日期。
2019-10-23T11:24:00Z
- 日期: 必要 代表日期的字串。
- 格式: 必要 代表來源日期格式的字串。注意: 這並 不 代表您要將日期字串轉換成的格式。
2019-10-23T11:24:00Z
- 日期: 必要 代表日期的字串。
"year"
"yyyy"
"yy"
"quarter"
"qq"
"q"
"month"
"mm"
"m"
"dayofyear"
"dy"
"y"
"day"
"dd"
"d"
"week"
"w"
"weekday"
"dw"
"w"
"hour"
"hh"
"hh24"
"hh12"
"minute"
"mi"
"n"
"second"
"ss"
"s"
"millisecond"
"SSS"
- 元件: 必要 代表日期一部分的字串。
- 日期: 必要 日期(標準格式)。
"year"
"yyyy"
"yy"
"month"
"mm"
"m"
"day"
"dd"
"d"
"hour"
"hh"
"minute"
"mi"
"n"
"second"
"ss"
"s"
- 元件: 必要 代表日期一部分的字串。
- 值: 必要 為指定日期的元件設定的值。
- 日期: 必要 日期(標準格式)。
- YEAR: 必填 以四位數寫入的年份。
- 月份: 必要 月份。 允許的值為1到12。
- 日: 必要 日。 允許的值為1到31。
- 小時: 必要 小時。 允許的值為0到23。
- MINUTE: 必要 分鐘。 允許值為0到59。
- NANOSECOND: 必要 納秒的值。 允許的值為0到999999999。
- 時區: 必要 日期時間的時區。
2019-10-17T11:55:12Z
- 日期: 必要 您嘗試轉換的日期。
zone_date_to_utc​(2019-10-17T11:55:​12 PST
2019-10-17T19:55:12Z
- 日期: 必要 您嘗試轉換的日期。
- ZONE: 必要 您嘗試將日期轉換為的時區。
zone_date_to_zone(now(), "Europe/Paris")
2021-10-26T15:43:59Z
階層 — 物件 objects
- 輸入: 必要 您嘗試檢查的物件是空的。
is_empty([1, null, 2, 3])
- INPUT: 必要 索引鍵和陣列配對的群組。
arrays_to_objects('sku', explode("id1|id2", '\\|'), 'price', [22.5,14.35])
[{ "sku": "id1", "price": 22.5 }, { "sku": "id2", "price": 14.35 }]
- INPUT: 必要 索引鍵/值配對的平面清單。
{"firstName": "John", "lastName": "Doe"}
- 字串: 必要 正在剖析以建立物件的字串。
- VALUE_DELIMITER: Optional 將欄位與值分開的分隔符號。 預設分隔字元為
:
。 - FIELD_DELIMITER: Optional 分隔欄位值配對的分隔符號。 預設分隔字元為
,
。
get()
函式搭配str_to_object()
來擷取字串中索引鍵的值。- 範例#1: str_to_object("firstName - John ; lastName - ; - 123 345 7890", "-", ";")
- 範例#2: str_to_object("firstName - John ; lastName - ; phone - 123 456 7890", "-", ";")。get("firstName")
- 範例#1:
{"firstName": "John", "lastName": "Doe", "phone": "123 456 7890"}
- 範例#2: "John"
is_set()
函式。- INPUT: 必要 要檢查的路徑是否存在於來源資料中。
null
。 當您不想將欄位複製到目標結構描述時,就應該使用此專案。null
- 物件: 必要 將從中擷取金鑰的物件。
["book1", "book2"]
- 字串: 必要 您要剖析的字串。
- 索引鍵: 必要 必須擷取值的索引鍵。
- VALUE_DELIMITER: 必要 分隔欄位與值的分隔符號。 若提供
null
或空字串,則此值為:
。 - FIELD_DELIMITER: Optional 分隔欄位和值配對的分隔符號。 若提供
null
或空字串,則此值為,
。
- 對應: 必要 輸入對應資料。
- 索引鍵: 必要 索引鍵可以是單一字串或字串陣列。 如果提供任何其他基本型別(資料/數字),則會將其視為字串。
- 對應: 必要 輸入對應資料
- 索引鍵: 必要 索引鍵可以是單一字串或字串陣列。 如果提供任何其他基本型別(資料/數字),則會將其視為字串。
- 索引鍵: 必要 索引鍵必須是字串。 如果提供其他任何基本值(例如整數或日期),則會自動轉換為字串並視為字串。
- ANY_TYPE: 必要 參考任何支援的XDM資料型別,但Map除外。
- 物件: 必要 您可以提供內送物件或物件陣列,並以索引鍵指向物件內的屬性。
- 物件: 必要 您可以提供內送物件或物件陣列,並以索引鍵指向物件內的屬性。
如需物件複製功能的詳細資訊,請參閱下方小節。
階層 — 陣列 arrays
- INPUT: 必要 您要尋找的第一個非null物件的陣列。
- INPUT: 必要 您要尋找第一個元素的陣列。
- INPUT: 必要 您要尋找最後一個元素的陣列。
- ARRAY: 必要 您要新增元素的陣列。
- VALUES:您要附加至陣列的元素。
- ARRAY: 必要 您要新增元素的陣列。
- VALUES:您要附加至父陣列的陣列。
- INCLUDE_NULLS: 必要 布林值,表示是否要在回應陣列中包含null。
- 值: 必要 要轉換成陣列的元素。
[1, 2, 3]
- 輸入: 必要 您嘗試尋找大小的物件。
size_of([1, 2, 3, 4])
- 陣列: 必要 要在設定檔中附加陣列的陣列。
upsert_array_append([123, 456])
- 陣列: 必要 要取代設定檔中陣列的陣列。
upsert_array_replace([123, 456], 1)
- SEPARATOR: 必要 用來聯結陣列中元素的分隔符號。
- ARRAY: 必要 要聯結的陣列(平面化之後)。
array_to_string(";", ["Hello", "world"])
- 陣列: 必要 要篩選的陣列
- 述詞: 必要 要套用至指定陣列之每個專案的述詞。
filterArray([5, -6, 0, 7], x -> x > 0)
- 陣列: 必要 要轉換的陣列。
- 述詞: 必要 要套用至指定陣列之每個專案的述詞。
transformArray([5, 6, 7], x -> x + 1)
- 陣列: 必要 要平面化的陣列。
階層 — 對應 map
- INPUT: 必要 您要尋找的第一個非null物件的物件陣列。
- 索引鍵: 必要 索引鍵必須是物件陣列中的欄位名稱,而且物件必須是值。
- INPUT: 必要 您要尋找的第一個非null物件的物件陣列。
"{line1 : \"345 park ave\",line2: \"bldg 2\",City : \"san jose\",State : \"CA\",type: \"office\"}"
"{\"firstName\" : \"John\", \"lastName\": \"Doe\"}"
邏輯運運算元 logical-operators
- 索引鍵: 必要 要比對的索引鍵。
- OPTIONS: 必要 索引鍵/值配對的平面化陣列。 您可以選擇將預設值放在結尾。
如果指定的stateCode為「pa」,「Pennsylvania」。
如果stateCode不符合下列專案:「不適用」。
- 運算式: 必要 正在評估的布林運算式。
- TRUE_VALUE: 必要 如果運算式評估為true,則傳回的值。
- FALSE_VALUE: 必要 運算式評估為false時所傳回的值。
彙總 aggregation
- OPTIONS: 必要 可以相互比較的一或多個物件。
- OPTIONS: 必要 可以相互比較的一或多個物件。
型別轉換 type-conversions
- 字串: 必要 要轉換為BigInteger的字串。
- 字串: 必要 要轉換為Double的字串。
- 字串: 必要 要轉換為浮點數的字串。
- 字串: 必要 要轉換為整數的字串。
JSON函式 json
- 字串: 必要 要還原序列化的JSON字串。
特殊操作 special-operations
guid
guid()
guid()
c7016dc7-3163-43f7-afc7-2e1c9c206333
fpid_to_ecid
- 字串: 必要 要轉換為ECID的FPID字串。
fpid_to_ecid(STRING)
fpid_to_ecid("4ed70bee-b654-420a-a3fd-b58b6b65e991")
"28880788470263023831040523038280731744"
使用者代理程式功能 user-agent
下表包含的任何使用者代理程式函式都可以傳回下列任一值:
- 電話 — 具有小熒幕(通常< 7英吋)的行動裝置
- 行動 — 尚未識別的行動裝置。 此行動裝置可以是電子閱讀器、平板電腦、手機、手錶等。
如需裝置欄位值的詳細資訊,請閱讀本檔案附錄中的裝置欄位值清單。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
- USER_AGENT: 必要 使用者代理字串。
Analytics函式 analytics
- EVENT_STRING: 必要 逗號分隔的Analytics事件字串。
- EVENT_NAME: 必要 要擷取的事件名稱和ID。
- EVENT_STRING: 必要 逗號分隔的Analytics事件字串。
- EVENT_NAME: 必要 要從中擷取值的事件名稱。
- PRODUCTS_STRING: 必要 Analytics產品字串。
- PRODUCTS_STRING: 必要 Analytics產品字串。
- PRODUCTS_STRING: 必要 Analytics產品字串。
- PRODUCTS_STRING: 必要 Analytics產品字串。
- PRODUCTS_STRING: 必要 Analytics產品字串。
- EVENT_NAME: 必要 要從中擷取值的事件名稱。
- PRODUCTS_STRING: 必要 Analytics產品字串。
- eVar_名稱: 必要 要擷取的eVar名稱。
物件複製 object-copy
您可以使用物件複製功能自動複製物件的屬性,而不需變更對映。 例如,如果來源資料的結構為:
address{
line1: 4191 Ridgebrook Way,
city: San Jose,
state: California
}
和XDM結構:
addr{
addrLine1: 4191 Ridgebrook Way,
city: San Jose,
state: California
}
然後,對應會變成:
address -> addr
address.line1 -> addr.addrLine1
在上述範例中,city
和state
屬性也會在執行階段自動擷取,因為address
物件已對應至addr
。 如果您要在XDM結構中建立line2
屬性,而您的輸入資料也在address
物件中包含line2
,則它也會自動內嵌,而無需手動變更對應。
若要確保自動對應能夠運作,必須符合下列先決條件:
- 父級物件應進行對應;
- 必須在XDM結構描述中建立新屬性;
- 新屬性在來源結構描述和XDM結構描述中應該有相符的名稱。
如果不滿足任何先決條件,則必須使用資料準備手動將來源結構描述對應到XDM結構描述。
附錄
以下提供使用「資料準備」對應函式的其他資訊
特殊字元 special-characters
下表概述保留字元及其對應的編碼字元清單。
裝置欄位值 device-field-values
下表概述裝置欄位值清單及其對應說明。
useragents
。useragents
,不包含裝置的相關資訊。useragent
字串中偵測到指令碼時,會使用此裝置值。程式碼範例 code-samples
map_get_values map-get-values
code language-json |
---|
|
map_has_keys map_has_keys
code language-json |
---|
|
add_to_map add_to_map
code language-json |
---|
|
object_to_map object_to_map
語法1
code language-json |
---|
|
語法2
code language-json |
---|
|
語法3
code language-json |
---|
|
array_to_map array_to_map
code language-json |
---|
|