Instanzfunktionen im Jitterbit Design 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 HASH zur Rückgabe eines Arrays
In Fällen, in denen ein erforderlicher Eingabeparameter für eine Instanzfunktion ein Array ist, ein Hash-Symbol (#
) wird automatisch in den Referenzpfad eines Datenelements eingefügt, um ein Datenarray statt 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 ein Array von Email Adressen zurückgegeben wird (.Email
) innerhalb eines Arrays von Kontakten (.contact
). Der #
wird vor dem Array von Email Adressen eingefügt (#.Email
), um anzugeben, dass es für jeden Kontakt ein Array von Email-Adressen geben könnte. Dies führt zu einer Zuordnung, die das Array der Kontaktdatensätze durchläuft, das Array der Emails jedoch nicht durchläuft.
Weitere Erläuterungen zur Syntax für Datenelementpfade finden Sie unter Erläuterung der hierarchischen Entity-Pfadnotation.
Erweiterte Nutzung
Die Instanzfunktionen können im Allgemeinen ineinander verschachtelt werden. Durch die Verschachtelung rücken die Ergebnisse in der Hierarchie nach oben und umfassen mehr Ergebnisse. Diese Funktionen können je nach Kontext, in dem sie verwendet werden, entweder einen einzelnen Wert oder ein Array von Werten zurückgeben.
Beispiel: Sum
Funktion mit einer 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein
Beschreibung
Zählt alle Instanzen eines Datenelements auf einer bestimmten hierarchischen Ebene in einer Quelle oder einem Ziel, wobei dieses Datenelement einen gültigen Wert enthält (und nicht null ist).
Die Funktion gibt entweder eine Ganzzahl oder ein Array von Instanzen zurück, je nach dem Kontext, in dem sie aufgerufen wird.
Beispiele
Angenommen, eine Datenbank enthält ein Feld „Menge“ in einer Tabelle „Artikel“, die ein untergeordnetes Element von „POHeader“ (einer Bestellung) ist, und dass sich innerhalb eines POHeader viele Artikel befinden. Dann gibt diese Anweisung die Anzahl der Artikelzeilen für einen bestimmten POHeader zurück, die Werte in der Spalte Menge aufweisen, die nicht null sind:
Count(POHeader.Items#.Quantity);
In diesem Fall nehmen wir eine Datendatei mit mehreren Instanzen an, mit Kunden, die Verkäufe haben, die Artikel haben; und jeder Artikel hat ein ID-Feld. Diese Anweisung zählt, wie viele verschiedene Artikel in jedem Verkauf enthalten sind, und verwendet die Sum()
Funktion zum Zusammenzählen aller für jeden Verkauf zurückgegebenen Artikel; dies ergibt die Gesamtzahl der gekauften unterschiedlichen 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 der Zielknoten auf ein übergeordnetes Element eines Zuordnungsfelds verweist.
Wenn der Zielknoten kein Schleifenknoten ist, gibt die Funktion 1 zurück. Siehe auch die 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 Kunden-Datensätzen an, die Instanzen von Verkäufen mit Instanzen von Artikeln mit einem 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein und vom gleichen Typ wiev
Beschreibung
Überprü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 entweder einen Boolean-Wert oder ein Array von Instanzen zurück, je nachdem, in welchem Kontext sie aufgerufen wird.
Beispiele
Nehmen wir eine Quelle mit Kunden-Datensätzen an, die Instanzen von Verkäufen mit Instanzen von Artikeln mit einem 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 abzurufende
: (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 Instanz zurück, die mehrfach vorkommt. Es kann auch verwendet werden, um ein Element eines Arrays auf 1-Basis zurückzugeben.
Wenn für das Vorkommen oder Array eine negative Zahl angegeben wird, beginnt die Zählung bei der letzten Zeile oder 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 sollde2
: 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 angegebenen Wert in v
Wenn die Funktion den Wert findet, gibt sie den Wert im im dritten Parameter angegebenen Feld zurück (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 derselben Instanz:
FindValue("ID", A.B#.field1, A.B#.field2);
Diese Anweisungen zeigen, wie ein Test eines Arrays auf die Aufnahme eines Werts implementiert wird. Es durchsucht ein Array nach einem Wert und gibt „true“ zurück, wenn er gefunden wurde, und „false“, wenn nicht. Es ist 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. Als Alternative zu dieser Funktion finden Sie im ArgumentList
Funktion.
Beispiele
Angenommen, eine der übergeordneten Zuordnungen einer Transformation enthält diese Anweisungen:
...
r1=DBLookupAll("<TAG>Sources/DB...</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 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein
Beschreibung
Gibt den Maximalwert von Instanzen eines Datenelements auf einer bestimmten Ebene in der Hierarchie einer Datenstruktur zurück. Es prüft alle Instanzen auf dieser Ebene und gibt die größte zurück. Es kann auch verwendet werden, um den Maximalwert eines Arrays zurückzugeben.
Beispiele
Nehmen wir an, eine Datenbank enthält ein Feld "Quantity"
in einer Tabelle "Items"
das ist ein Kind von "POHeader"
(eine Bestellung) und dass sich viele Artikel in einem POHeader befinden. Dann gibt diese Anweisung den maximalen Wert von Quantity für jeden Artikel für einen 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein
Beschreibung
Gibt den Mindestwert von Instanzen eines Datenelements auf einer bestimmten Ebene in der Hierarchie einer Datenstruktur zurück. Es prüft alle Instanzen auf dieser Ebene und gibt die kleinste zurück. Es kann auch verwendet werden, um den Mindestwert eines Arrays zurückzugeben.
Beispiele
Nehmen wir an, eine Datenbank enthält ein Feld "Quantity"
in einer Tabelle "Items"
das ist ein Kind von "POHeader"
(eine Bestellung) und dass sich viele Artikel in einem POHeader befinden. Dann gibt diese Anweisung den Mindestwert von Quantity für jeden Artikel für einen bestimmten POHeader 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein
Beschreibung
Gibt den ersten Wert ungleich null aus Instanzen eines Datenelements zurück. Diese Funktion wird im Allgemeinen zum Abrufen des Werts eines „One-of“-Quelldatenelements verwendet. Sie kann auch mit Arrays verwendet werden und gibt das erste Element ungleich null zurück.
SetInstances
Erklärung
null SetInstances(string nodeName, array de)
Syntax
SetInstances(<nodeName>, <de>)
Erforderliche Parameter
nodeName
: Der 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. Manchmal können die Daten aus anderen Quellen stammen. Diese Funktion ist für Fälle vorgesehen, in denen die Daten in mehreren Sätzen vorliegen und jeder Satz 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 zum Generieren 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 beabsichtigten Ziels aufgerufen werden. Wenn 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.
Von dieser Funktion wird ein Null-Datenelement zurückgegeben, das ignoriert werden sollte.
Beispiele
Nehmen wir an, dass:
- es einen gemeinsamen übergeordneten Knoten für die Zielknoten „DETAILS“ und „COMPANIES“ gibt;
- beide Knoten Schleifenknoten sind; und
- für den Zielknoten „DETAILS“ ein Mehrfachzuordnungsordner erstellt wurde.
...
r1 = DBLookupAll("<TAG>Sources/DB...</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 von Instanzen wie die Anzahl der Zielinstanzen haben.
Die Sortierreihenfolge wird als aufsteigend angenommen, und neben jedem Sortierdatenelement kann ein optionales Skalarargument eingefügt werden, um die Standardsortierreihenfolge zu überschreiben. Wenn das sortOrder
falsch ist, erfolgt die Sortierreihenfolge absteigend.
Die Datenelemente der Zielschleife werden zuerst nach den Instanzen der ersten Quelldatenelemente und dann nach den Instanzen der zweiten Datenelemente sortiert und so weiter.
Diese Funktion muss in den Mappings des übergeordneten Knotens aufgerufen werden. Wenn im übergeordneten Knoten kein zuzuordnendes Feld vorhanden ist, kann entweder ein Script mit dieser Funktion aufgerufen oder eine zu diesem Zweck hinzugefügte 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 nächste Beispiel könnte in einer Bedingung in einer Zuordnung verwendet werden, um alle Verkäufe für jeden Kunden nach Datum zu sortieren. Es würde auf der Ebene der customer
Knoten. Beachten Sie die Einbeziehung der Aussage 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein
Beschreibung
Nimmt den Wert jeder Instanz eines Datenelements auf einer bestimmten hierarchischen Ebene 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 gleich sein.
Wenn das Array leer ist, wird 0 (Null) zurückgegeben. Obwohl Nullwerte in Arrays mit einem anderen Datentyp ignoriert werden, gibt ein Array mit nur Nullen einen Fehler zurück.
Beispiele
Nehmen wir an, dass eine Datenbank ein Feld „Menge“ in einer Tabelle „Artikel“ enthält, die ein untergeordnetes Element von POHeader ist (es gibt viele Artikel innerhalb eines POHeaders).
// 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 Zielarr
: (Zweite Form) Ein Array; alle Elemente des Arrays müssen vom gleichen Typ sein
Beschreibung
Verkettet jede Instanz eines Felds eines Datenelements oder jedes Element eines Arrays, wobei zwischen jeder Instanz oder jedem Element ein Komma als Trennzeichen steht.
Wenn das Feld oder Array-Element Sonderzeichen wie Zeilenvorschübe oder Kommas enthält, wird das Feld oder Array-Element in doppelte Anführungszeichen eingeschlossen. Nach der Verkettung der letzten Instanz oder des letzten Elements 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 Zielarr
: (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 SemikolonomitLast
: 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, wobei am Ende jeder verketteten Zeichenfolge automatisch ein Trennzeichen angehängt wird.
Wenn der Parameter omitlast
ist wahr, das Trennzeichen nach der letzten Zeichenfolge wird 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);