リスト関数 list-functions
リスト関数を使用すると、ジャーニー式内で値のコレクションを操作して作業できます。 これらの関数は、カスタマージャーニーでの配列やリストのフィルタリング、並べ替え、変換、分析に不可欠です。
リスト関数は、次の操作が必要な場合に使用します。
- 条件に基づいてコレクションから特定の項目をフィルタリングして抽出(filter、getListItem)
- リスト要素を昇順または降順に並べ替えて整理(sort)
- リストから重複を削除し、一意の値を取得(distinct、distinctWithNull)
- コレクション内に値が存在するかどうかを確認(in)
- リストから返される項目の数を制限(limit)
- リストのサイズを取得(listSize)またはリストを異なる形式に変換(serializeList)
- リスト間の共通エレメントの検索(intersect)、リストの結合(mergeLists)、別のリストからのリストの減算(differenceLists)などのセット操作を実行します
リスト関数は、複雑なデータ構造を操作するための強力なツールを提供し、コレクションの内容に基づいた高度なデータ操作と条件付きロジックを可能にします。
differenceLists differenceLists
2番目のリストに存在しない最初のリストの項目を返します(差分を設定:list 1 - list 2)。 Null エントリはスキップされます。 結果は常に重複する値を削除し、最初のリストの挿入順序を保持します。
differenceLists(<parameters>)| table 0-row-3 1-row-3 2-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| リスト 1 | listString、listInteger、listDecimal、listBoolean、listDuration、listDateTime、listDateTimeOnly、listDateOnly | 減算するリスト。 |
| リスト 2 | リスト 1と同じタイプです。 | リスト 1から削除する項目のリスト。 |
differenceLists(listString,listString):listString
differenceLists(listInteger,listInteger):listInteger
differenceLists(listDecimal,listDecimal):listDecimal
differenceLists(listBoolean,listBoolean):listBoolean
differenceLists(listDuration,listDuration):listDuration
differenceLists(listDateTime,listDateTime):listDateTime
differenceLists(listDateTimeOnly,listDateTimeOnly):listDateTimeOnly
differenceLists(listDateOnly,listDateOnly):listDateOnly
| code language-json |
|---|
|
['a','c'] を返します。
| code language-json |
|---|
|
['a','b'] を返します。
| code language-json |
|---|
|
[] を返します。
distinct distinct
指定されたリストのユニークな値またはオブジェクトを返します。 null エントリは無視されます。
distinct(<parameters>)| table 0-row-3 1-row-3 2-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToProcess | listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly、listObject のいずれか | 処理するリスト。 listObject の場合は、フィールド参照にする必要があります。 |
| keyAttributeName | 文字列 | このパラメーターはオプションで、listObject に対してのみ使用できます。 パラメーターを指定しないと、すべての属性の値が同じ場合、オブジェクトは重複していると見なされます。 パラメーターを指定していて、指定された属性が同じ値を持つ場合、オブジェクトは重複していると見なされます。 |
distinct(<listInteger>)
整数のリストを返します。
distinct(<listDecimal>)
小数のリストを返します。
distinct(<listString>)
文字列のリストを返します。
distinct(<listDateTimeOnly>)
タイムゾーンを考慮しない日時のリストを返します。
distinct(<listDateTime>)
日時のリストを返します。
distinct(<listDateOnly>)
日付のリストを返します。
distinct(<listBoolean>)
ブール値のリストを返します。
distinct(<listDuration>)
期間のリストを返します。
distinct(<listObject>)
distinct(<listObject>,<string>)
オブジェクトのリストを返します。
distinct([10,2,10,null])
[10, 2] を返します。
distinctWithNull distinctWithNull
指定されたリストのユニークな値またはオブジェクトを返します。 リストに null エントリが少なくとも 1 つ含まれる場合、返されるリストに null エントリが含まれます。
distinctWithNull(<parameters>)| table 0-row-3 1-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToProcess | listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly | 処理するリスト。 |
distinctWithNull(<listInteger>)
整数のリストを返します。
distinctWithNull(<listDecimal>)
小数のリストを返します。
distinctWithNull(<listString>)
文字列のリストを返します。
distinctWithNull(<listDateTimeOnly>)
タイムゾーンを考慮しない日時のリストを返します。
distinctWithNull(<listDateTime>)
日時のリストを返します。
distinctWithNull(<listDateOnly>)
日付のリストを返します。
distinctWithNull(<listBoolean>)
ブール値のリストを返します。
distinctWithNull(<listDuration>)
期間のリストを返します。
distinctWithNull([10,2,10,null])
[10, 2, null] を返します。
メモ:パラメーター <listObject> は、この関数ではサポートされません。
filter filter
指定されたキー値の 1 つに一致するキー属性を持つオブジェクトで構成される listObject(オブジェクトリスト)を返します。
filter(<parameters>)| table 0-row-3 1-row-3 2-row-3 3-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToFilter | listObject(オブジェクトリスト) | フィルタリングの対象となるオブジェクトリスト。 フィールド参照にする必要があります。 |
| keyAttributeName | 文字列 | 指定されたリストのオブジェクト内の属性名。フィルタリングのキーとして使用されます |
| keyValueList | リスト | フィルタリングに使用するキー値の配列 |
filter(listObject, string, listString)
filter(listObject, string, listInteger)
filter(listObject, string, listDecimal)
filter(listObject, string, listDateTime)
filter(listObject, string, listDateTimeOnly)
filter(listObject, string, listDateOnly)
filter(listObject, string, listDuration)
filter(listObject, string, listBoolean)
listObject を返します。
受信イベント「myevent」で渡されるペイロードの例を次に示します。
| code language-json |
|---|
|
次の式を使用できます。
| code language-json |
|---|
|
「product2」と「product3」を id とする 2 つのオブジェクトから成る listObject を返します。
getListItem getListItem
指定されたインデックスのリスト項目を返します。
getListItem(<parameters>)| table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 | |
|---|---|
| パラメーター | タイプ |
| リスト | listString |
| リスト | listBoolean |
| リスト | listInteger |
| リスト | listDecimal |
| リスト | listDuration |
| リスト | listDateTime |
| リスト | listDateTimeOnly |
| リスト | listDateOnly |
| index | 整数 |
getListItem(<listInteger>,<index>)
整数を返します。
getListItem(<listDecimal>,<index>)
小数を返します。
getListItem(<listString>,<index>)
文字列を返します。
getListItem(<listDateTimeOnly>,<index>)
タイムゾーンを無視して日時を返します。
getListItem(<listDateTime>,<index>)
日時を返します。
getListItem(<listDateOnly>,<index>)
日付のリストを返します。
getListItem(<listBoolean>,<index>)
ブール値を返します。
getListItem(<listDuration>,<index>)
期間を返します。
getListItem([10, 2, 3], 1)
「2」を返します。
getListItem(["A", "B", "C"], 2)
「C」を返します。
値「20.45.2.3434」を持つイベントフィールド「event.appVersion」の例
split(@event{event.appVersion}, "\\.")
["20", "45", "2", "3434"] を返します
getListItem(split(@event{event.appVersion}, "\\."), 0)
「20」を返します
in in
最初の引数値がリストに含まれているかどうかを確認します。 確認は、各引数値に対して Equal を使用して実行されます。 引数の値が見つかった場合は true を返し、それ以外の場合は false を返します。
<expression> のタイプは、リストの項目と一致する必要があります。 なお、リストの項目のタイプは互いに一致する必要があります。
in(<parameters>)| table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2 | |
|---|---|
| パラメーター | タイプ |
| 文字列 | 文字列 |
| ブール | ブール |
| 整数 | 整数 |
| 小数 | 小数 |
| 期間 | 期間 |
| 日時 | 日時 |
| 日時のみ | 日時のみ |
| リスト | listString |
| リスト | listBoolean |
| リスト | listInteger |
| リスト | listDecimal |
| リスト | listDuration |
| リスト | listDateTime |
| リスト | listDateTimeOnly |
| リスト | listDateOnly |
in(<integer>,<listInteger>)
in(<decimal>,<listDecimal>)
in(<string>,<listString>)
in(<boolean>,<listBoolean>)
in(<dateTimeOnly>,<listDateTimeOnly>)
in(<dateTime>,<listDateTime>)
in(<dateOnly>,<listDateOnly>)
in(<duration>,<listDuration>)
ブール値を返します。
in(4,[4,5,3,4])
true を返します。
in(8,[4,5,3,4])
false を返します。
in(#{ExperiencePlatform.ProfileFieldGroup.profile.person.gender}, ["male"])
intersect intersect
2 つの入力リストで共通する値を返します。 2 つのリストのいずれかが null の場合、空のリストを返します。
intersect(<parameters>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| パラメーター | タイプ |
| リスト 1 | リスト |
| リスト 2 | リスト |
intersect(listString,listString):listString
intersect(listDecimal,listDecimal):listDecimal
intersect(listInteger,listInteger):listInteger
intersect(listDateTime,listDateTime):listDateTime
intersect(listDateTimeOnly,listDateTimeOnly):listDateTimeOnly
intersect(listDateOnly,listDateOnly):listDateOnly
intersect(listDuration,listDuration):listDuration
intersect(listBoolean,listBoolean):listBoolean
リストを返します。
| code language-json |
|---|
|
[“sports”, “news”] を返します。
| code language-json |
|---|
|
プロファイル属性と指定されたカテゴリリストの間の共通項目を返します。
| code language-json |
|---|
|
プロファイル属性と指定されたイベントフィールドの間の共通項目を返します。
limit limit
リストの先頭または末尾の N 個の要素を返します。
limit(<parameters>)| table 0-row-3 1-row-3 2-row-3 3-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToProcess | listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly、listObject のいずれか | 考慮するリスト。 listObject の場合は、フィールド参照にする必要があります。 |
| numberOfItems | 整数 | 指定されたリストから返される項目の数。 |
| firstOrLastItems | ブール値 | このパラメーターはオプションです(デフォルトは true)。 true の場合は、先頭の項目を返します。 false の場合は、末尾の項目を返します。 |
limit(<listString>,<integer>)
limit(<listString>,<integer>,<boolean>)
文字列のリストを返します。
limit(<listInteger>,<integer>)
limit(<listInteger>,<integer>,<boolean>)
整数のリストを返します。
limit(<listDecimal>,<integer>)
limit(<listDecimal>,<integer>,<boolean>)
小数のリストを返します。
limit(<listBoolean>,<integer>)
limit(<listBoolean>,<integer>,<boolean>)
ブール値のリストを返します。
limit(<listDateOnly>,<integer>)
limit(<listDateOnly>,<integer>,<boolean>)
日付のリストを返します。
limit(<listDateTimeOnly>,<integer>)
limit(<listDateTimeOnly>,<integer>,<boolean>)
タイムゾーンを考慮しない日時のリストを返します。
limit(<listDateTime>,integer>)
limit(<listDateTime>,<integer>,<boolean>)
日時のリストを返します。
limit(<listDuration>,<integer>)
limit(<listDuration>,<integer>,<boolean>)
期間のリストを返します。
limit(<listObject>,<integer>)
limit(<listObject>,<integer>,<boolean>)
オブジェクトのリストを返します。
limit(["A", "B", "C", "D", "E"], 3)
["A","B","C"] を返します。
limit(["A", "B", "C", "D", "E"], 3, false)
["C","D","E"] を返します。
listSize listSize
リスト内の要素の数をカウントします。
listSize(<parameters>)| table 0-row-3 1-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToProcess | listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly、listObject のいずれか | 処理するリスト。 listObject の場合は、フィールド参照にする必要があります。 listObject に null オブジェクトを含めることはできません。 |
listSize(<listInteger>)
listSize(<listDecimal>)
listSize(<listString>)
listSize(<listBoolean>)
listSize(<listDateTimeOnly>)
listSize(<listDateTime>)
listSize(<listDateOnly>)
listSize(<listDuration>)
整数を返します。
listSize(<listObject>)
listSize([10,2,3])
3 を返します。
listSize(@event{my_event.productListItems})
指定されたオブジェクト配列内のオブジェクト数を返します(listObject 型)。
mergeLists mergeLists
2つのリストを組み合わせる。 deduplicateがtrueの場合、重複する値が削除された2つのリストの和集合を返します。 deduplicateがfalseの場合、2つのリスト (リスト 1のアイテムの後にリスト 2のアイテムが続く)の連結を返し、重複を保持します。 Null エントリはスキップされます。
注意: deduplicate パラメーターは、動的なブール式ではなく、リテラル trueまたはfalseである必要があります。
mergeLists(<parameters>)| table 0-row-3 1-row-3 2-row-3 3-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| リスト 1 | listString、listInteger、listDecimal、listBoolean、listDuration、listDateTime、listDateTimeOnly、listDateOnly | 最初のリスト。 その項目は最初に結果に追加されます。 |
| リスト 2 | リスト 1と同じタイプです。 | 2つ目のリスト。 その項目は、リスト 1の項目の後に追加されます。 |
| 重複の除外 | ブーリアンリテラル | trueは、重複が削除された両方のリストの結合を返します。 falseは、重複を保持しながら、両方のリストの連結を返します。 リテラル trueまたはfalseである必要があります。 |
mergeLists(listString,listString,boolean):listString
mergeLists(listInteger,listInteger,boolean):listInteger
mergeLists(listDecimal,listDecimal,boolean):listDecimal
mergeLists(listBoolean,listBoolean,boolean):listBoolean
mergeLists(listDuration,listDuration,boolean):listDuration
mergeLists(listDateTime,listDateTime,boolean):listDateTime
mergeLists(listDateTimeOnly,listDateTimeOnly,boolean):listDateTimeOnly
mergeLists(listDateOnly,listDateOnly,boolean):listDateOnly
| code language-json |
|---|
|
['a','b','c'] を返します。
| code language-json |
|---|
|
['a','b','b','c'] を返します。
serializeList serializeList
指定されたリスト(listObject 以外の任意の型)を文字列に変換します。
serializeList(<parameters>)| table 0-row-3 1-row-3 2-row-3 3-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToProcess | listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly | 文字列に変換するリスト。 |
| 区切り記号 | 文字列 | 出力文字列内の各リスト要素間の区切り記号。 |
| addQuotes | ブール値 | このパラメーターは、出力文字列の各要素に引用符を含める(true)か、含まない(false)かを示します。 |
serializeList(<listInteger>,<string>,<boolean>)
serializeList(<listDecimal>,<string>,<boolean>)
serializeList(<listString>,<string>,<boolean>)
serializeList(<listBoolean>,<string>,<boolean>)
serializeList(<listDateTimeOnly>,<string>,<boolean>)
serializeList(<listDateTime>,<string>,<boolean>)
serializeList(<listDateOnly>,<string>,<boolean>)
serializeList(<listDuration>,<string>,<boolean>)
文字列を返します。
serializeList(["Hello","World"], " ", false)
「Hello World」を返します。
serializeList(["Hello", "World"], ",", true)
「“Hello”,“World”」を返します。
sort sort
値のリストやオブジェクトを自然な順序に並べ替えます。
sort(<parameters>)| table 0-row-3 1-row-3 2-row-3 3-row-3 | ||
|---|---|---|
| パラメーター | タイプ | 説明 |
| listToSort | listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly、listObject のいずれか | 並べ替えるリスト。 listObject の場合は、フィールド参照にする必要があります。 |
| keyAttributeName | 文字列 | このパラメーターは listObject に対してのみ使用します。 指定されたリストのオブジェクト内の属性名は、並べ替えのキーとして使用されます。 |
| sortingOrder | ブール値 | 昇順(true)または降順(false) |
sort(<listInteger>,<boolean>)
整数のリストを返します。
sort(<listDecimal>,<boolean>)
小数のリストを返します。
sort(<listString>,<boolean>)
文字列のリストを返します。
sort(<listDateTimeOnly>,<boolean>)
タイムゾーンを考慮しない日時のリストを返します。
sort(<listDateTime>,<boolean>)
日時のリストを返します。
sort(<listDateOnly>,<boolean>)
日付のリストを返します。
sort(<listBoolean>,<boolean>)
ブール値のリストを返します。
sort(<listObject>,<string>,<boolean>)
オブジェクトのリストを返します。
sort(["A", "C", "B"], true)
["A","B","C"] を返します。
sort([1, 3, 2], false)
[3, 2, 1] を返します。
sort(@event{my_event.productListItems}, "SKU", true)
SKU 属性で並べ替えられた listObject を返します(昇順)
この節には、このトピックに関連する解釈、検索、質問への回答をサポートすることを目的とした構造化された知識が含まれています。
完全に理解するには、この情報をこのページのドキュメント組み合わせる必要があります。 どちらのソースも単独で使用することを意図していません。このページでは、機能について説明していますが、この節では、用語、意図、適用可能性、制約の曖昧さを解消するのに役立つ追加コンテキストを提供しています。
- TL;DR:このページでは、AJO ジャーニー式で使用できるすべてのリスト関数について説明します。リストと配列の交差をフィルタリング、並べ替え、重複排除、メンバーシップの確認、制限、シリアル化、結合、減算、検索する方法について説明します。
インテント:
distinct(nullを無視)またはdistinctWithNull(nullを保持)を使用して、リストから重複する値を削除しますfilterを使用して特定のキー値に一致するオブジェクトのみを返すようにlistObjectをフィルタリングしますgetListItemを使用して、リストから特定のインデックスの要素を取得しますinを使用して、リストに値が存在するかどうかを確認しますintersectを使用して2つのリスト間の共通の要素を検索mergeListsを使用して、重複排除の有無にかかわらず2つのリストを結合しますdifferenceListsを使用して、あるリストを別のリスト(差を設定)から減算するlimitを使用して、リストの最初または最後のN要素を返しますlistSizeを使用してリスト内の要素の合計数をカウントしますserializeListを使用してリストを区切り文字列に変換するsortを使用してリストを昇順または降順で並べ替える
用語集:
- listObject: フィールド参照である必要がある複雑なオブジェクトのリスト。null オブジェクトを含めることはできません(製品固有)
- keyAttributeName:
distinct、filter、sortで使用されるオプションの文字列パラメーターで、重複排除、フィルタリング、並べ替えに使用するオブジェクト属性 (製品固有) を識別します - intersect:両方の入力リストに存在する要素のみを返す設定操作
- mergeLists:
deduplicateパラメーター (製品固有) に応じて、2つのリストの結合(重複あり)または連結(重複あり)を返すセット操作 - differenceLists:2番目のリスト (製品固有)に存在しない最初のリストの項目を返す設定操作
ガードレール:
distinctWithNullは<listObject>パラメーター型をサポートしていませんfilterでは、listObject パラメーターをインライン リテラルではなくフィールド参照にする必要があります- listObjectの
listSizeでは、リストをフィールド参照にする必要があります。listObjectにnull オブジェクトを含めることはできません serializeListはlistObjectタイプをサポートしていませんmergeListsとdifferenceListsはスカラーのリスト型(文字列、整数、小数、ブール値、dateTime、dateTimeOnly、dateOnly、duration)のみをサポートしています。listObjectはサポートされていませんmergeListsのdeduplicateパラメーターは、動的ブール式ではなく、リテラルtrue/falseである必要がありますdifferenceListsは常に結果の重複を除外します。重複を保持するオプションはありません
用語:
- 正規名:リスト関数 – Acronym: none — バリアント:コレクション関数、配列関数
- 同義語:“listSize” = “count list elements”; “serializeList” = “join list to string”
- 混同しないでください:“distinct” (nullを無視) ≠ “distinctWithNull” (nullを一意の値として保持)
- 次を混同しないでください:「limit」と3番目のパラメーター
true(最初のN個の項目を返します)≠「limit」とfalse(最後のN個の項目を返します) - 混同しないでください。「intersect」(2つのリスト間の共通エレメント)≠「filter」(特定のキー値に一致するエレメント)
- 混同しないでください。「mergeLists」(2つのリスト、和集合または連結を組み合わせる)≠「differenceLists」(あるリストを別のリストから減算する)≠「intersect」(共通の要素のみ)
よくある質問:
- Q: リストの最初の3つの項目を取得するにはどうすればよいですか? —
limit(myList, 3)またはlimit(myList, 3, true)を使用します。デフォルトでは、最初の項目を返します。 - Q: リストの最後の3つの項目を取得するにはどうすればよいですか? —
limit(myList, 3, false)を使用します。 - Q:
distinctとdistinctWithNullの違いは何ですか? —distinctはnull値を無視して結果から除外します。distinctWithNullはnullを明確な値として扱い、nullが存在する場合は1つのnull エントリを含みます。 - Q:
filterで文字列のリストをフィルタリングできますか? – いいえ、filterはlistObjectでのみ機能します。スカラー一覧の場合は、重複排除にinまたはdistinctを使用します。 - Q:値がリストにあるかどうかを確認するにはどうすればよいですか? — リスト内に値が見つかった場合にtrueを返す
in(value, myList)を使用します。 - Q: listObjectを特定の属性で並べ替えることはできますか? – はい、2番目のパラメーターが属性名、3番目のパラメーターが並べ替え方向(true = ascending)の場合は
sort(@event{...}, "attributeName", true)を使用します。 - Q: 2つのリストを組み合わせて重複を削除するにはどうすればよいですか? —
mergeLists(list1, list2, true)を使用します。 - Q: 2つのリストを組み合わせても重複した値を保持する方法を教えてください。 —
mergeLists(list1, list2, false)を使用します。 - Q:別のリストにない項目を1つのリストで見つけるにはどうすればよいですか? —
differenceLists(list1, list2)を使用します。list2に存在しないlist1の項目を返します。 - Q:
intersectとdifferenceListsの違いは何ですか? —intersectは両方のリストに共通する項目を返し、differenceListsは2番目のリストに存在しない最初のリストの項目を返します。