eBiss 3

Hilfe & Dokumentation

Benutzer-Werkzeuge

Webseiten-Werkzeuge


transformation:mappings:funktionen:gruppierung:groupbyexsorted

GroupByExSorted

Die Funktion GroupByExSorted() sortiert die Ergebnisse1) der verschiedenen Suchkriterien (Key's) in aufsteigender alphabetischer Reihenfolge und gibt diese als Ergebnis zurück. Es könnnen maximal sechs Key Felder verwendet werden.

Syntax:

GroupByExSorted('Knoten', 'Key1', 'Key2', 'Key3', ..., 'Key6')
GroupByExSorted('Knoten', 'Attribut1', 'Attribut2', 'Attribut3')

Hinweise

  • Die 'Key'-Werte werden intern als Zeichenketten behandelt. Was z.B. bei einer Sortierung nach nummerischen oder Datumswerten relevant ist und eine explizite Formatierung als Zeichenkette sinnvoll macht, z.B.:
     GroupByExSorted('//IndustryItems', 'FormatNumber(@PosNumber, "0000000")'). 
  • Es ist möglich eine Gruppierung aus Attributen welche in unterschiedlicher Tiefe der Knotenebenen liegen. Dazu muss aber der Knoten auf die unterste Ebene zeigen. Die hierarchisch höher gelegenen Attribute müssen dann per „../“ Verweis hinzugenommen werden.
  • Werden XPATH Filter benötigt, so ist auf die richtige Anwendung von doppelten und einfachen Anführungszeichen zu achten.(Siehe Beispiele)
  • Das Resultat des XPATH Filters(zweiter bis sechster Parameter) wird immer als STRING behandelt. D.h. z.Bsp. für die Anwendung der Funktion als Sortierung nach Positionsnummer, diese muss zunächst mit FormatNumber in ein passendes Format umgewandelt werden, damit die alphanumerische Sortierung quasi eine numerische simuliert.
    GroupByExSorted('//IndustryItems', 'FormatNumber(@PosNumber, "0000000")')

Beispiele

  1. Gruppiert und sortiert unter /InventoryReport/Items nach @Ean
    GroupByExSorted(/InventoryReport/Items, "@Ean")
  2. Gibt eine Liste mit allen LIN-Knoten, gruppiert nach den DE_7140-Attributen, deren DE_7143-Attribut den Wert 'GU' beinhaltet, zurück.
    GroupByExSorted(//LIN, "../PIA/*[@DE_7143='GU']/@DE_7140")
  3. Gibt eine Liste mit allen SG_33-Knoten, gruppiert nach den DE_7140-Attributen, deren DE_7143-Attribut den Wert 'GU' beinhaltet, zurück.
    GroupByExSorted(//SG_33, "PIA/*[@DE_7143='GU']/@DE_7140")
  4. Gibt eine Liste mit allen LIN-Knoten, gruppiert nach den ArtikelDetails-Color-Attributen deren EAN gleich dem Wert im DE_7140-Attribut ist, zurück.
    GroupByExSorted(//LIN, "GetArticleDetailsByEAN(DG_212/@DE_7140)/Detail/@Color")
  5. Gruppiere SLSRPT Gruppen deren CustomItem Key = 'EK_Abteilung' ist:
    GroupByExSorted(//Groups,"CustomItem[@Key='EK_Abteilung']/@Value")
  6. Gruppiert den Salesreport nach der, unter PIA[@DE_4347='1']/DG_C212[@DE_7143='LN']/@DE_7140 angegebenen, ID2)
    GroupByExSorted(//SG_7,"PIA[@DE_4347='1']/DG_C212[@DE_7143='LN']/@DE_7140")
  7. Gruppiert den Salesreport nach Location, SalesDate und dann nach PIA[@DE_4347='1']/DG_C212[@DE_7143='LN']/@DE_7140. In dieser Gruppierung ist bemerkenswert, dass die Gruppenschlüssel in unterschiedlichen Segmenten angesiedelt sind. D.h. man muss die Gruppierung auf den untersten Knoten3) leiten und für die höher liegenden Segmente mit „../“ entsprechend hochschalten4).
    GroupByExSorted(//SG_5/SG_7,"../LOC/DG_C517/@DE_3225","../DTM/DG_C507[@DE_2005='356' and @DE_2379='102']/@DE_2380","PIA[@DE_4347='1']/DG_C212[@DE_7143='LN']/@DE_7140")

    Die Schlüssel enthalten folglich:

    1. @Key1 = Location
    2. @Key2 = SalesDate
    3. @Key3 = z.Bsp. ID einer Einkaufsabteilung (z.Bsp. bei Breuninger)

  8. Gruppiert den Salesreport nach Location, SalesDate und dann nach RFF/DG_C506[@DE_1153 = 'SB']/@DE_1154. Auch hier ist anzumerken, dass die Gruppenschlüssel in unterschiedlichen Segmenten angesiedelt sind. D.h. man muss die Gruppierung auf den untersten Knoten5)(analog vorheriges Beispiel) leiten und für die höher liegenden Segmente mit „../“ entsprechend hochschalten6).
    GroupByExSorted(//SG_5/SG_7,"../LOC/DG_C517/@DE_3225","../DTM/DG_C507[@DE_2005='356' and @DE_2379='102']/@DE_2380","RFF/DG_C506[@DE_1153 = 'SB']/@DE_1154")

    Die Schlüssel enthalten folglich:

    1. @Key1 = Location
    2. @Key2 = SalesDate
    3. @Key3 = z.Bsp. eine original Location(z.Bsp. bei DeBijenkorf)

  9. Gruppiert den DESADV nach Lieferscheinnummer auf Positionsebene
    GroupByExSorted(//SG_15, "SG_16/RFF/DG_C506[@DE_1153='ON']/@DE_1154")

    Der Schlüssel enthält folglich:

    1. @Key1 = Lieferscheinnummer

  10. Gruppiert INVRPT nach EAN auf Positionsebene
    GroupByExSorted(//SG_9, "LIN/DG_C212/@DE_7140")

    Der Schlüssel enthält folglich:

    1. @Key1 = EAN
      Das Ruleset im Mapping kann dann in etwa so aussehen:

Hinweis: Muss man im Zielobjekt aus der Gruppierung wieder in einer höheren Pfad spring so kann im Ziel der Selektor Prefix ../ angewendet werden.

Verschachtelung

In besonderen Fällen kann es notwendig werden eine Sortierung7) vor der eigentlichen Gruppierung vorzunehmen. Dies kann mit einer Verschachtelung der Funktion realisiert werden. Zu beachten ist dabei, das der geschachtelten Gruppierungsfunktion8) der Pfad /Items angehängt ist.

Beispiel einer Verschachtelung

GroupByExSorted(GroupByExSorted(/TradeItemDocument/TradeItems,'@ArticleNo','@Color','@Size')/Items,'@ArticleNo','@Color')

Im vorliegenden Beispiel werden also die eingehenden Items nach Artikelnummer, Farbe und Größe sortiert und gruppiert und anschließend nur nach Artikelnummer und Farbe sortiert und gruppiert, damit die Größen innerhalb eines Zielrecords aufsteigend iteriert werden können.

Unsortiertes Ergebnis:
  <TradeItems OfferNo="0" SupArtNo="1-1-25316-21" SupColNo="001" ArtDesc="Woms Boots" ColDesc="BLACK" SupplierPhotoName="0012531621001.JPG" SupplierModel="Lycoris" SupplierGender="Women" SupplierBrand="TAMARIS" SupplierCollCode="W" SupplierCollYear="18" IntrasNo="2" SupplierCOO="CN" SupplierUppMat="IMI SUEDE" SupplierSolMat="synthetic" SupplierLinMat="Lining=Polyester 100%Socklining=Polyester 100%" SupplierInsMat="textile" SupplierFasMat="Reißverschluss" 
  SizeDesc1="36" Barcode1="4059252686483" RetailPrice1="59.95" 
  SizeDesc2="37" Barcode2="4059252686490" RetailPrice2="59.95" 
  SizeDesc3="38" Barcode3="4059252686506" RetailPrice3="59.95" 
  SizeDesc4="39" Barcode4="4059252686513" RetailPrice4="59.95" 
  SizeDesc5="40" Barcode5="4059252686520" RetailPrice5="59.95" 
  SizeDesc6="41" Barcode6="4059252686544" RetailPrice6="59.95" 
  SizeDesc7="35" Barcode7="4059252766758" RetailPrice7="59.95" 
  SizeDesc8="42" Barcode8="4059252686575" RetailPrice8="59.95" />
Sortiertes Ergebnis:
  <TradeItems OfferNo="0" SupArtNo="1-1-25316-21" SupColNo="001" ArtDesc="Woms Boots" ColDesc="BLACK" SupplierPhotoName="0012531621001.JPG" SupplierModel="Lycoris" SupplierGender="Women" SupplierBrand="TAMARIS" SupplierCollCode="W" SupplierCollYear="18" IntrasNo="2" SupplierCOO="CN" SupplierUppMat="IMI SUEDE" SupplierSolMat="synthetic" SupplierLinMat="Lining=Polyester 100%Socklining=Polyester 100%" SupplierInsMat="textile" SupplierFasMat="Reißverschluss" 
  SizeDesc1="35" Barcode7="4059252766758" RetailPrice7="59.95" 
  SizeDesc2="36" Barcode1="4059252686483" RetailPrice1="59.95" 
  SizeDesc3="37" Barcode2="4059252686490" RetailPrice2="59.95" 
  SizeDesc4="38" Barcode3="4059252686506" RetailPrice3="59.95" 
  SizeDesc5="39" Barcode4="4059252686513" RetailPrice4="59.95" 
  SizeDesc6="40" Barcode5="4059252686520" RetailPrice5="59.95" 
  SizeDesc7="41" Barcode6="4059252686544" RetailPrice6="59.95" 
  SizeDesc8="42" Barcode8="4059252686575" RetailPrice8="59.95" />
1)
Das Result NodeSet
2)
Dies ist z.Bsp. die Einkaufsabteilung
3)
PIA ist hier unter „SG_5/SG_7“
4) , 6)
Wie angegebene: „../LOC/DG_C517/@DE_3225“ und „../DTM/DG_C507[@DE_2005='356' and @DE_2379='102']/@DE_2380“,
5)
RFF ist hier unter „SG_5/SG_7“
7)
auf einem Datenelement innerhalb der gewünschten Gruppierung
8)
welche zur Vorsortierung auf tieferer Ebene angewendet wird
transformation/mappings/funktionen/gruppierung/groupbyexsorted.txt · Zuletzt geändert: 2024/02/20 08:15 von 127.0.0.1