Zum Inhalt springen

Verwandeln Sie Ihre Kontakte in Urlaubsgeld mit unserem neuen Kundenempfehlungsprogramm! Erfahren Sie mehr

Instanzfunktionen im Jitterbit Integration Studio

Einführung

Diese Funktionen sind für die Verwendung in Transformation (oder während der Zuordnungen aufgerufenen Scripts) vorgesehen, da sie die Instanzen der in den Zuordnungen gefundenen Datenelemente (Quellen und Ziele) verwenden.

Einfügen eines Hashs zur Rückgabe eines Arrays

Wenn ein erforderlicher Eingabeparameter für eine Instanzfunktion ein Array ist, wird ein Raute-Symbol (#) kann in den Referenzpfad eines Datenelements eingefügt werden, um ein Datenarray anstelle eines einzelnen Felds zurückzugeben.

Beispiel:

SumString(_Root$customer.contact#.Email, ",", true);

Im obigen Beispiel ist der Datenelementpfad (_Root$customer.contact#.Email) ist so aufgebaut, dass es ein Array von Email Adressen zurückgibt (.Email) innerhalb eines Arrays von Kontakten (.contact). Der # wird vor dem Array der Email Adressen eingefügt (#.Email), um anzugeben, dass für jeden Kontakt ein Array von Email-Adressen vorhanden sein könnte. Dies führt zu einer Zuordnung, die das Array der Kontaktdatensätze durchläuft, das Array der Emails jedoch nicht durchläuft.

Dieses Konzept gilt auch für Schleifenknoten in Transformations. Weitere Erläuterungen zur Syntax für Datenelementpfade finden Sie unter Referenzpfadnotation in Knoten und Felder.

Erweiterte Nutzung

Die Instanzfunktionen können grundsätzlich ineinander verschachtelt werden. Durch die Verschachtelung verschieben sich die Ergebnisse in der Hierarchie nach oben und umfassen mehr Ergebnisse. Diese Funktionen können je nach Kontext entweder einen einzelnen Wert oder ein Array von Werten zurückgeben.

Beispiel: Sum Funktion, die eine Count Die darin enthaltene Funktion addiert die Ergebnisse jedes Aufrufs der Count Funktion und ergibt insgesamt:

Sum(Count(_Root$customer.sales#.items#.ID));

Count

Erklärung

int Count(type de)

int Count(array arr)

Syntax

Count(<de>)

Count(<arr>)

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Zählt alle Instanzen eines Datenelements auf einer bestimmten Hierarchieebene in einer Quelle oder einem Ziel, sofern dieses Datenelement einen gültigen Wert enthält (und ungleich null ist).

Die Funktion gibt je nach Kontext des Aufrufs entweder eine Ganzzahl oder ein Array von Instanzen zurück.

Beispiele

Angenommen, eine Datenbank enthält das Feld „Menge“ in der Tabelle „Artikel“, die ein untergeordnetes Element von „POHeader“ (einer Bestellung) ist, und ein „POHeader“ enthält viele Artikel. Diese Anweisung gibt dann die Anzahl der Artikelzeilen für einen bestimmten „POHeader“ zurück, deren Werte in der Spalte „Menge“ ungleich null sind:

Count(POHeader.Items#.Quantity);

In diesem Fall wird von einer Datendatei mit mehreren Instanzen ausgegangen, die Kunden mit Verkäufen und Artikeln enthält. Jeder Artikel verfügt über ein ID-Feld. Diese Anweisung zählt die Anzahl der verschiedenen Artikel pro Verkauf und verwendet die Sum Funktion zum Addieren aller zurückgegebenen Artikel pro Verkauf. Dies ergibt die Gesamtzahl der gekauften Artikel:

Sum(Count(_Root$customer.sales#.items#.ID));

CountSourceRecords

Erklärung

int CountSourceRecords()

Syntax

CountSourceRecords()

Beschreibung

Gibt die Anzahl der Quellinstanzen für einen Zielknoten zurück, wenn dieser auf ein übergeordnetes Element eines Mapping-Felds verweist.

Ist der Zielknoten kein Schleifenknoten, gibt die Funktion 1 zurück. Siehe auch SourceInstanceCount Funktion.

Notiz

Der Streaming-Modus einer Flat-to-Flat Transformation würde durch die Verwendung dieser Funktion nicht beeinflusst, während der Streaming-Modus bei einer XML-to-Flat Transformation ausgeschaltet würde.

Beispiele

Nehmen wir eine Quelle mit Kundendatensätzen an, die sowohl Verkäufe als auch Artikel mit dem Feld „Typ“ enthalten:

// This statement shows the instance count of a record compared
// to the total number of source records
"Record " + SourceInstanceCount() + " of " + CountSourceRecords();

Exist

Erklärung

bool Exist(type v, type de)

bool Exist(type v, array arr)

Syntax

Exist(<v>, <de>)

Exist(<v>, <arr>)

Erforderliche Parameter

  • v: Ein zu findender Wert
  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein und vom gleichen Typ wie v

Beschreibung

Prüft, ob ein Wert vorhanden ist (v) in Instanzen eines Datenelements (de) oder ein Array (arr) und gibt „true“ (oder „false“) zurück, je nachdem, ob es gefunden wird.

Die Funktion gibt je nach Kontext, in dem sie aufgerufen wird, entweder einen Booleschen Wert oder ein Array von Instanzen zurück.

Beispiele

Nehmen wir eine Quelle mit Kundendatensätzen an, die sowohl Verkäufe als auch Artikel mit dem Feld „Typ“ enthalten:

// Returns if true if the value "subscription" is
// found in any instances of a field "customer.sales.items.Type"
// at the level of "sales":
Exist("subscription",_Root$customer.sales.items#.Type);

// To test this at the next highest level of the hierarchy,
// at the level of the customer,
// enclose this in a nested "Exist", testing for "true":
Exist(true, Exist("subscription",_Root$customer.sales#.items#.Type));

// The last statement answers, at the customer level, if a customer
// has any items in any sales with a Type field equal to "subscription"

FindByPos

Erklärung

type FindByPos(int pos, type de)

type FindByPos(int pos, array arr)

Syntax

FindByPos(<pos>, <de>)

FindByPos(<pos>, <arr>)

Erforderliche Parameter

  • pos: Der Index (aus dem Vorkommen; 1-basiert), um den Wert abzurufen.
  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel; oder
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Gibt den Wert eines Datenelements aus einer mehrfach vorkommenden Instanz zurück. Es kann auch verwendet werden, um ein Element eines Arrays (basierend auf 1) zurückzugeben.

Wenn für das Vorkommen oder Array eine negative Zahl angegeben wird, beginnt die Zählung mit der letzten Zeile bzw. dem letzten Element. Beachten Sie, dass der Index 1-basiert ist.

Beispiele

// Assume a database has a child-parent relationship
// where for each parent the child occurs multiple times

// To retrieve the second child, use:
FindByPos(2, ParentTab.ChildTab#.Value$);

// To retrieve the last child, use:
FindByPos(-1, ParentTab.ChildTab#.Value$);

FindValue

Erklärung

type FindValue(type0 v, type1 de1, type2 de2)

Syntax

FindValue(<v>, <de1>, <de2>)

Erforderliche Parameter

  • v: Ein zu suchender Wert
  • de1: Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel, der als Übereinstimmung verwendet werden soll.
  • de2: Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel, der zurückgegeben wird, wenn eine Übereinstimmung gefunden wird.

Beschreibung

Durchsucht mehrere Instanzen eines Datenelements (de1) auf der Suche nach dem in v. Wenn die Funktion den Wert findet, gibt sie den Wert im Feld zurück, das im dritten Parameter angegeben ist (de2) für die gefundene Instanz. Wenn der Wert nicht gefunden wird, gibt die Funktion null zurück. Siehe auch die HasKey Funktion.

Beispiele

Diese Anweisung durchsucht die Instanzen von B unter A und überprüfen Sie den Inhalt von field1. Es wird die erste Instanz von B es findet, wo field1 enthält "ID" und geben Sie dann den Wert von field2 aus demselben Fall:

FindValue("ID", A.B#.field1, A.B#.field2);

Diese Anweisungen zeigen, wie ein Array auf die Aufnahme eines Wertes geprüft wird. Das Array wird nach einem Wert durchsucht und gibt „true“ zurück, wenn er gefunden wurde, andernfalls „false“. Es handelt sich um das Array-Äquivalent zum Wörterbuch. HasKey Funktion. Beachten Sie, dass zwei Instanzen desselben Arrays an die Funktion übergeben werden:

arr = {1, 2, 3};
value = 1;
t = (FindValue(value, arr, arr) == value);
// t will be 1 (true)

value = 4;
t = (FindValue(value, arr, arr) == value);
// t will be 0 (false)

GetInstance

Erklärung

type GetInstance()

Syntax

GetInstance()

Beschreibung

Diese Funktion gibt das Instanzdatenelement zurück, das durch den Aufruf eines SetInstances Funktion während der Generierung des übergeordneten Elements. Alternativ zu dieser Funktion finden Sie im ArgumentList Funktion.

Beispiele

Angenommen, eine der übergeordneten Zuordnungen einer Transformation enthält diese Anweisungen:

...
r1=DBLookupAll("<TAG>endpoint:database/My Database</TAG>",
    "SELECT key_name, key_value, key_type FROM key_values");
SetInstances("DETAILS", r1);
r2={"MS","HP"};
SetInstances("COMPANIES", r2);
...

Im "DETAILS" Zielknoten können wir eine Zuordnungsbedingung erstellen mit:

<trans>
GetInstance()["key_value"] != "";
// Same as GetInstance()[0] != ""
</trans>

Oder die Zuordnung kann in einem der Attribute Folgendes enthalten:

<trans>
x=GetInstance();
x["key_name"] + "=" + x["key_value"];
// Same as x[0] + "=" + x[1]
</trans>

In einem der Attribute des "COMPANIES" Zielknoten. Die Zuordnung kann Folgendes enthalten:

<trans>
GetInstance();
// This will return
// "MS" for the first instance
// "HP" for the second instance
</trans>

Max

Erklärung

type Max(type de)

type Max(array arr)

Syntax

Max(<de>)

Max(<arr>)

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Gibt den Maximalwert der Instanzen eines Datenelements auf einer bestimmten Hierarchieebene einer Datenstruktur zurück. Alle Instanzen auf dieser Ebene werden geprüft und die größte zurückgegeben. Die Funktion kann auch zur Rückgabe des Maximalwerts eines Arrays verwendet werden.

Beispiele

Angenommen, eine Datenbank enthält ein Feld "Quantity" in einer Tabelle "Items" das ist ein Kind von "POHeader"(eine Bestellung) und dass ein POHeader viele Artikel enthält. Diese Anweisung gibt dann den Maximalwert von Quantity für jeden Artikel eines bestimmten POHeader zurück:

Max(POHeader.Items#.Quantity);

Min

Erklärung

type Min(type de)

type Min(array arr)

Syntax

Min(<de>)

Min(<arr>)

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Gibt den Mindestwert der Instanzen eines Datenelements auf einer bestimmten Hierarchieebene einer Datenstruktur zurück. Alle Instanzen auf dieser Ebene werden geprüft und die kleinste zurückgegeben. Die Funktion kann auch zur Rückgabe des Mindestwerts eines Arrays verwendet werden.

Beispiele

Angenommen, eine Datenbank enthält ein Feld "Quantity" in einer Tabelle "Items" das ist ein Kind von "POHeader"(eine Bestellung) und dass ein POHeader viele Artikel enthält. Diese Anweisung gibt dann den Mindestwert von Menge für jeden Artikel eines bestimmten POHeaders zurück:

Min(POHeader.Items#.Quantity);

ResolveOneOf

Erklärung

type ResolveOneOf(type de)

type ResolveOneOf(array arr)

Syntax

ResolveOneOf(<de>)

ResolveOneOf(<arr>)

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Gibt den ersten Nicht-Null-Wert aus Instanzen eines Datenelements zurück. Diese Funktion wird üblicherweise zum Abrufen des Werts eines Quelldatenelements verwendet. Sie kann auch mit Arrays verwendet werden und gibt das erste Nicht-Null-Element zurück.

SetInstances

Erklärung

null SetInstances(string nodeName, array de)

Syntax

SetInstances(<nodeName>, <de>)

Erforderliche Parameter

  • nodeName: Name eines Ziels
  • de: Ein Entitätspfad zu Instanzen eines Datenelements im Ziel.

Beschreibung

Definiert die Quellinstanzen für einen Zielschleifenknoten. Normalerweise wird eine Schleifenzielinstanz aus einer Schleifenquellinstanz generiert. Gelegentlich können die Daten auch aus anderen Quellen stammen. Diese Funktion ist für Fälle vorgesehen, in denen die Daten in mehreren Sets vorliegen und jedes Set ein einzelnes Zielelement generiert.

Die Instanz ist ein Datenelement, das ein einfacher Wert oder ein Array von Datenelementen sein kann. Beim Erstellen des Ziels wird jede Instanz zur Generierung einer Zielinstanz verwendet.

Informationen zur Verwendung eines Instanzdatenelements finden Sie im GetInstance Und ArgumentList Funktionen.

Diese Funktion sollte in den Zuordnungen des übergeordneten Knotens des gewünschten Ziels aufgerufen werden. Falls im übergeordneten Knoten kein Blattknoten verfügbar ist, können Sie einen Bedingungsknoten erstellen, der diese Funktion aufruft. Die Bedingung sollte mit enden true, damit es immer akzeptiert wird.

Die Funktion sollte nicht mehr als einmal mit demselben Zielknoten aufgerufen werden, da der letzte Aufruf die vorherigen überschreibt. Um ein Überschreiben zu vermeiden, können Sie mehrere Mapping-Ordner erstellen.

Diese Funktion gibt ein Null-Datenelement zurück und sollte ignoriert werden.

Beispiele

Angenommen:

  • Es gibt einen gemeinsamen übergeordneten Knoten für die Zielknoten „DETAILS“ und „UNTERNEHMEN“.
  • Beide Knoten sind Schleifenknoten.
  • Für den Zielknoten „DETAILS“ wurde ein Mehrfachzuordnungsordner erstellt.
...
r1 = DBLookupAll("<TAG>endpoint:database/My Database</TAG>",
  "SELECT key_name, key_value FROM key_values");
SetInstances("DETAILS", r1);
SetInstances("DETAILS#1", r1);
// DETAILS#1 is the name of the
// 1st multiple-mapping-folder for DETAILS

r2 = {"MS", "HP", "Apple"};
SetInstances("COMPANIES", r2);

// Note: Renaming the display name of a
// multiple-mapping-folder doesn't change
// the folder's actual name, which can be
// found by control-clicking the node and using
// "Copy node name to clipboard"
...

SortInstances

Erklärung

null SortInstances(string nodeName, array sourceDataElements1[, bool sortOrder, ..., array sourceDataElementsN, bool sortOrderN])

Syntax

SortInstances(<nodeName>, <sourceDataElements1>[, <sortOrder>, ..., <sourceDataElementsN>, <sortOrderN>])

Erforderliche Parameter

  • nodeName: Name der zu sortierenden Zielschleifenelemente
  • sourceDataElements: Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.

Optionale Parameter

  • sourceDataElementsN: Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel
  • sortOrder: Eine optionale Sortierreihenfolge, standardmäßig true für aufsteigend. Das Argument ist nicht optional, wenn mehrere sourceDataElements Argumente werden bereitgestellt.

Beschreibung

Sortiert die Generierung von Zielschleifen-Datenelementen basierend auf einem oder mehreren Datenelementen in der Quelle oder dem Ziel.

Alle Sortierinstanzen müssen die gleiche Anzahl an Instanzen wie die Zielinstanzen haben.

Die Sortierreihenfolge wird als aufsteigend angenommen. Optional kann neben jedem Sortierdatenelement ein Skalarargument angegeben werden, um die Standardsortierreihenfolge zu überschreiben. Wenn die sortOrder falsch ist, erfolgt die Sortierreihenfolge absteigend.

Die Datenelemente der Zielschleife werden zuerst nach den Instanzen der ersten Quelldatenelemente sortiert, dann nach den Instanzen der zweiten Datenelemente und so weiter.

Diese Funktion muss in den Zuordnungen des übergeordneten Knotens aufgerufen werden. Wenn im übergeordneten Knoten kein zuzuordnendes Feld vorhanden ist, kann entweder ein Script mit dieser Funktion aufgerufen oder eine entsprechende Bedingung hinzugefügt werden.

Von dieser Funktion wird ein Nullwert zurückgegeben, der ignoriert werden sollte.

Beispiele

// The target node "detail" will be ordered
// by "price" from high to low and,
// if the prices are the same for two items,
// the node will be ordered by "quantity" from low to high
SortInstances("detail", Invoice$Item#.price, false, Invoice$Item#.quantity);

Das folgende Beispiel könnte in einer Mapping-Bedingung verwendet werden, um alle Verkäufe für jeden Kunden nach Datum zu sortieren. Die Bedingung würde auf der Ebene von platziert customer Knoten. Beachten Sie die Einbeziehung der Anweisung true am Ende des Codeblocks, damit die Bedingung immer akzeptiert wird:

<trans>
SortInstances("SalesOrders", _Root$customer.sales#.SalesDate);
true
</trans>

Sum

Erklärung

type Sum(type de)

type Sum(array arr)

Syntax

Sum(<de>)

Sum(<arr>)

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Ermittelt den Wert jeder Instanz eines Datenelements auf einer bestimmten Hierarchieebene und gibt die Summe zurück. Der Datentyp beider de Und arr Muss ein Integer, Long, Float, Double oder String sein. Die Datentypen aller Instanzen oder aller Elemente müssen identisch sein.

Ist das Array leer, wird 0 (Null) zurückgegeben. Obwohl Nullwerte in Arrays mit einem anderen Datentyp ignoriert werden, gibt ein Array mit ausschließlich Nullen einen Fehler zurück.

Beispiele

Angenommen, eine Datenbank enthält das Feld „Menge“ in der Tabelle „Artikel“, die ein untergeordnetes Element von „POHeader“ ist (ein POHeader enthält mehrere Artikel).

// Returns the sum of the field "Quantity" for
// all items for a particular "POHeader"
Sum(POHeader.Items#.Quantity);

SumCSV

Erklärung

string SumCSV(type de)

string SumCSV(array arr)

Syntax

SumCSV(<de>)

SumCSV(<arr>)

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Beschreibung

Verkettet jede Instanz eines Felds eines Datenelements oder jedes Elements eines Arrays mit einem Komma als Trennzeichen zwischen den einzelnen Instanzen bzw. Elementen.

Enthält das Feld- oder Array-Element Sonderzeichen wie Zeilenumbrüche oder Kommas, wird es in doppelte Anführungszeichen gesetzt. Nach der letzten Instanz bzw. dem letzten Element wird kein Trennzeichen hinzugefügt.

Siehe auch die SumString Funktion für eine ähnliche Funktion, jedoch mit zusätzlichen Optionen.

Beispiele

// Concatenates all instances of a field of email addresses
// with a comma between each address
SumCSV(_Root$customer.contact#.Email);

SumString

Erklärung

string SumString(type de[, string delimiter, bool omitLast])

string SumString(array arr[, string delimiter, bool omitLast])

Syntax

SumString(<de>[, <delimiter>, <omitLast>])

SumString(<arr>[, <delimiter>, <omitLast>])

Erforderliche Parameter

  • de: (Erste Form) Ein Entitätspfad zu Instanzen eines Datenelements in einer Quelle oder einem Ziel.
  • arr: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein.

Optionale Parameter

  • delimiter: Eine Zeichenfolge zur Abgrenzung der Elemente; Standardwert ist ein Semikolon.
  • omitLast: Ein Flag, das angibt, ob das Trennzeichen nach dem letzten Element eingefügt werden soll; Standardwert ist „false“.

Beschreibung

Verkettet jede Instanz der angegebenen Datenelemente oder jedes Element eines Arrays. An das Ende jeder verknüpften Zeichenfolge wird automatisch ein Trennzeichen angehängt.

Wenn der Parameter omitlast Wenn „true“ ist, wird das Trennzeichen nach der letzten Zeichenfolge weggelassen.

Siehe auch die SumCSV Funktion.

Beispiele

// Concatenates all instances of a field of email addresses
// with a comma between each address,
// but does not place a delimiter after the last address
SumString(_Root$customer.contact#.Email, ",", true);