Funktionen zur Verwaltung von Sammlungen collection-management-functions

Die Ausdruckssprache bietet auch eine Reihe von Funktionen zum Abfragen von Sammlungen.

Diese Funktionen werden nachfolgend erläutert. In den folgenden Beispielen verwenden wir die Ereignis-Payload, die eine Sammlung enthält:

                {
   "_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"
}

Die Funktion „all(<condition>)“

Die Funktion all ermöglicht mithilfe eines booleschen Ausdrucks die Definition eines Filters für eine bestimmte Sammlung.

<listExpression>.all(<condition>)

Beispielsweise können Sie von allen App-Anwendern diejenigen abfragen, die iOS 13 verwenden (boolescher Ausdruck „app used == iOS 13“). Das Ergebnis dieser Funktion ist die gefilterte Liste mit Elementen, die dem booleschen Ausdruck entsprechen (Beispiel: App-Anwender 1, App-Anwender 34, App-Anwender 432).

In einer Aktivität des Typs „Bedingung der Datenquelle“ können Sie überprüfen, ob das Ergebnis der Funktion all null ist. Sie können die Funktion all auch mit anderen Funktionen wie count kombinieren. Weitere Informationen finden Sie unter Aktivität „Bedingung der Datenquelle“.

Beispiel 1:

Wir möchten überprüfen, ob ein Anwender eine bestimmte Version einer App installiert hat. Zu diesem Zweck rufen wir alle Push-Benachrichtigungs-Token für Mobile Apps mit der Version 1.0 ab. Anschließend führen wir eine Bedingung mit der Funktion Zählen aus, um zu überprüfen, ob die zurückgegebene Liste von Tokens mindestens ein Element enthält.

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

Das Ergebnis ist wahr.

Beispiel 2:

Hier verwenden wir die Funktion count, um zu überprüfen, ob in der Sammlung Push-Benachrichtigungstoken vorhanden sind.

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

Das Ergebnis ist wahr.

NOTE
Wenn die Filterbedingung in der Funktion all() leer ist, gibt der Filter alle Elemente in der Liste zurück. Um jedoch die Anzahl der Elemente einer Sammlung zu zählen, ist die Funktion „all“ nicht erforderlich.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

Das Ergebnis des Ausdrucks ist 3.

Beispiel 3:

Hier prüfen wir, ob ein Kontakt innerhalb der letzten 24 Stunden keine Mitteilungen erhalten hat. Wir filtern die Sammlung von Erlebnisereignissen, die aus der Experience Platform-Datenquelle abgerufen wurden, mithilfe von zwei Ausdrücken, die auf zwei Elementen der Sammlung basieren. Insbesondere wird der Zeitstempel des Ereignisses mit dem von der Funktion nowWithDelta zurückgegebenen Wert „dateTime“ verglichen.

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

Das Ergebnis ist wahr, wenn es kein Erlebnisereignis gibt, das den beiden Bedingungen entspricht.

Beispiel 4:

Hier möchten wir überprüfen, ob ein Kontakt in den letzten sieben Tagen mindestens einmal ein Programm gestartet hat, um z. B. eine Push-Benachrichtigung auszulösen, die den Kontakt zum Ansehen eines Tutorials einlädt.

count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
NOTE
currentEventField ist nur bei der Bearbeitung von Ereignissammlungen verfügbar, currentDataPackField bei der Bearbeitung von Datenquellensammlungen und currentActionField bei der Bearbeitung von benutzerdefinierten Aktionsantwortsammlungen.
Bei der Verarbeitung von Sammlungen mit all, first und last durchlaufen wir eine Schleife über jedes Element der Sammlung, eins nach dem anderen. currentEventField, currentDataPackField und currentActionField entsprechen dem Element, das in einer Schleife läuft.

Die Funktionen „first(<condition>)“ und „last(<condition>)“

Die Funktionen first und last ermöglichen auch die Definition eines Filters für die Sammlung, wobei das erste/letzte Element der Liste zurückgegeben wird, das dem Filter entspricht.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Beispiel 1:

Dieser Ausdruck gibt das erste Push-Benachrichtigungs-Token zurück, das mit Mobile Apps verknüpft ist, deren Version 1.0 ist.

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

Das Ergebnis ist „token_1“.

Beispiel 2:

Dieser Ausdruck gibt das letzte Push-Benachrichtigungs-Token zurück, das mit Mobile Apps verknüpft ist, deren Version 1.0 ist.

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

Das Ergebnis ist „token_2“.

NOTE
Die Erlebnisereignisse werden von Adobe Experience Platform als Sammlung in umgekehrter chronologischer Reihenfolge abgerufen. Entsprechend gilt:
  • Die Funktion first gibt das neueste Ereignis zurück.
  • Die Funktion last gibt das älteste zurück.

Beispiel 3:

Wir prüfen, ob das erste (neueste) Adobe Analytics-Ereignis mit einem Wert ungleich null für die DMA-ID den Wert „602“ hat.

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

Die Funktion „at(<index>)“

Mit der Funktion at können Sie anhand eines Index auf ein bestimmtes Element in einer Sammlung verweisen.
Der Index „0“ ist der erste Index der Sammlung.

<listExpression>.at(<index>)

Beispiel:

Dieser Ausdruck gibt das zweite Push-Benachrichtigungstoken der Liste zurück.

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

Das Ergebnis ist „token_2“.

Weitere Beispiele

#{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}
recommendation-more-help
b22c9c5d-9208-48f4-b874-1cefb8df4d76