Zum Inhalt springen

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 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 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 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

Ü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 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 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 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 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 Ziel
  • arr: (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 Ziel
  • arr: (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 Ziel
  • arr: (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 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. 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 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 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 Ziel
  • arr: (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 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 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 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, 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);