컬렉션 관리 기능

표현식 언어에서는 컬렉션을 쿼리하는 함수 집합도 도입합니다.

이러한 함수는 아래에 설명되어 있습니다. 다음 예에서 컬렉션을 포함하는 이벤트 페이로드를 사용하겠습니다.

                {
   "_experience":{
      "campaign":{
         "message":{
            "profile":{
               "pushNotificationTokens":[
                  {
                     "token":"token_1",
                     "application":{
                        "_id":"APP1",
                        "name":"MarltonMobileApp",
                        "version":"1.0"
                     }
                  },
                  {
                     "token":"token_2",
                     "application":{
                        "_id":"APP2",
                        "name":"MarketplaceApp",
                        "version":"1.0"
                     }
                  },
                  {
                     "token":"token_3",
                     "application":{
                        "_id":"APP3",
                        "name":"VendorApp",
                        "version":"2.0"
                     }
                  }
               ]
            }
         }
      }
   },
   "timestamp":"1536160728"
}

함수 "all(<condition>)"

다음 all 함수를 사용하면 부울 표현식을 사용하여 주어진 컬렉션에 대한 필터 정의를 사용할 수 있습니다.

<listExpression>.all(<condition>)

예를 들어 모든 앱 사용자 중에서 IOS 13(부울 표현식 "app used IOS 13")을 사용하여 앱을 가져올 수 있습니다. 이 함수의 결과는 부울 표현식과 일치하는 항목이 포함된 필터링된 목록입니다(예: 앱 사용자 1, 앱 사용자 34, 앱 사용자 432).

데이터 소스 조건 활동에서 all 함수가 null이거나 null입니다. 이 두 가지 방법을 결합할 수도 있습니다 all 함수를 다음과 같은 다른 함수와 함께 사용합니다 count. 자세한 내용은 데이터 소스 조건 활동.

예 1:

사용자가 특정 버전의 응용 프로그램을 설치했는지 확인하려고 합니다. 이를 위해 버전이 1.0인 모바일 애플리케이션과 연관된 모든 푸시 알림 토큰을 얻습니다. 그런 다음 를 사용하여 조건을 수행합니다 count 반환된 토큰 목록에 하나 이상의 요소가 포함되어 있는지 확인하는 함수입니다.

count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0

결과는 true입니다.

예 2:

여기서는 를 사용합니다 count 컬렉션에 푸시 알림 토큰이 있는지 확인하는 함수입니다.

count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

결과는 true입니다.

노트

에서 필터링 조건이 all() 함수가 비어 있으면 필터가 목록의 모든 요소를 반환합니다. 그러나 컬렉션의 요소 수를 계산하기 위해 모든 함수가 필요하지 않습니다.

count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

표현식의 결과는 다음과 같습니다 3.

예제 3:

여기에서 개인이 지난 24시간 내에 어떠한 연락도 받지 못했는지를 확인합니다. 컬렉션의 두 요소를 기반으로 두 개의 표현식을 사용하여 Experience Platform 데이터 소스에서 검색된 경험 이벤트 컬렉션을 필터링합니다. 특히 이벤트의 타임스탬프는 nowWithDelta 함수 위에 있어야 합니다.

count(#{ExperiencePlatform.MarltonExperience.experienceevent.all(
   currentDataPackField.directMarketing.sends.value > 0 and
   currentDataPackField.timestamp > nowWithDelta(-1, "days")).timestamp}) == 0

두 조건과 일치하는 경험 이벤트가 없으면 결과는 true가 됩니다.

예제 4:

여기서는 개인이 지난 7일 동안 적어도 한 번 이상 애플리케이션을 시작했는지 확인하려고 합니다. 예를 들어 자습서를 시작할 수 있도록 푸시 알림을 트리거할 수 있습니다.

count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
노트

currentEventField 이벤트 컬렉션을 조작할 때만 사용할 수 있습니다. currentDataPackField
데이터 소스 컬렉션을 조작할 때. 을 사용하여 컬렉션을 처리할 때 all, firstlast, we
컬렉션의 각 요소를 하나씩 반복합니다. currentEventFieldcurrentDataPackField
는 루프가 있는 요소에 해당합니다.

함수 "first(<condition>)" 및 "last()<condition>)"

다음 firstlast 또한 함수를 사용하면 필터를 충족하는 목록의 첫 번째/마지막 요소를 반환하는 동안 컬렉션에 대한 필터의 정의를 사용할 수 있습니다.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

예 1:

이 표현식은 버전이 1.0인 모바일 애플리케이션과 연관된 첫 번째 푸시 알림 토큰을 반환합니다.

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.first(currentEventField.application.version == "1.0").token

결과는 "token_1"입니다.

예 2:

이 표현식은 버전이 1.0인 모바일 애플리케이션과 연관된 마지막 푸시 알림 토큰을 반환합니다.

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last&#8203;(currentEventField.application.version == "1.0").token}

결과는 "token_2"입니다.

노트

경험 이벤트는 Adobe Experience Platform에서 시간 순서대로 컬렉션으로 검색되므로,

  • first 함수는 최신 이벤트를 반환합니다
  • last 함수는 가장 오래된 것을 반환합니다.

예제 3:

DMA ID에 대해 값이 0이 아닌 첫 번째(가장 최근) Adobe Analytics 이벤트가 602와 같은지 확인합니다.

#{ExperiencePlatform.AnalyticsProd_EvarsProps.experienceevent.first(
currentDataPackField.placeContext.geo.dmaID > 0).placeContext.geo.dmaID} == 602

함수 "at(<index>)"

다음 at 함수를 사용하면 인덱스에 따라 컬렉션의 특정 요소를 참조할 수 있습니다.
인덱스 0은 컬렉션의 첫 번째 색인입니다.

<listExpression>.at(<index>)

예:

이 표현식은 목록의 두 번째 푸시 알림 토큰을 반환합니다.

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.at(1).token}

결과는 "token_2"입니다.

기타 예

#{ExperiencePlatform.ExperienceEventFieldGroup.experienceevent. all(currentDataPackField._aepgdcdevenablement2.purchase_event.receipt_nbr == "10-337-4016").
_aepgdcdevenablement2.purchase_event.productListItems. all(currentDataPackField.SKU == "AB17 1234 1775 19DT B4DR 8HDK 762").name}
 #{ExperiencePlatform.ExperienceEventFieldGroup.experienceevent.last(
currentDataPackField.eventType == "commerce.productListAdds").productListItems.last(currentDataPackField.priceTotal >= 150).name}

이 페이지에서는