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 Wertde
: (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 wiev
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; oderarr
: (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 Wertde1
: 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 Zielsde
: 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 ZielschleifenelementesourceDataElements
: 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 ZielsortOrder
: Eine optionale Sortierreihenfolge, standardmäßig true für aufsteigend. Das Argument ist nicht optional, wenn mehreresourceDataElements
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);