Altova MapForce 2025 Enterprise Edition

Um Datenbankdaten zu filtern und zu sortieren, verwenden Sie eine SQL/NoSQL-WHERE/ORDER-Komponente. Auf diese Art können Sie manuell eine SQL WHERE-Klausel eingeben, die die Daten filtert. Optional dazu können Sie auch eine ORDER BY-Klausel definieren, wenn Sie die Datensätze nach einem bestimmten Datenbankfeld in auf- oder absteigender Ordnung sortieren möchten.

 

Die SQL/NoSQL-WHERE/ORDER-Komponente muss mit einer Tabelle oder einem Feld einer Datenbank-Mapping-Komponente verbunden werden. Sie können eine SQL/NoSQL-WHERE/ORDER-Komponente auch mit einer Join-Komponente verbinden, wenn die verknüpfte Gruppe bzw. die verknüpften Datensätze gefiltert werden sollen (siehe Verknüpfen von Datenbankdaten mittels Join).

 

Hinzufügen einer SQL/NoSQL-WHERE ORDER-Komponente

Um eine SQL/NoSQL-WHERE/ORDER-Komponente zum Mapping hinzuzufügen, gehen Sie folgendermaßen vor:

 

1.Gehen Sie zum Menü Einfügen und klicken Sie auf SQL/NoSQL-WHERE/ORDER. Standardmäßig hat diese Komponente die folgende Struktur:

mf_sql-where

2.Verbinden Sie eine Tabelle oder ein Feld der Quelldatenbank mit dem Datenelement table/field der SQL/NoSQL-WHERE/ORDER-Komponente. Das Beispielmapping FilterDatabaseRecords.mfd (siehe Abbildung unten) dazu finden Sie im folgenden Ordner: <Dokumente>\Altova\MapForce2025\MapForceExamples\. In diesem Mapping nimmt die SQL/NoSQL-WHERE/ORDER-Komponente die Daten aus der Quelltabelle users, filtert alle Datensätze und wählt nur diejenigen aus, deren Nachname mit dem Buchstaben "M" beginnt (siehe Erläuterung im Unterabschnitt weiter unten).

mf-sql-where-01

3.Doppelklicken Sie auf die Überschrift der SQL/NoSQL-WHERE/ORDER-Komponente. Klicken Sie alternativ dazu mit der rechten Maustaste darauf und wählen Sie im Kontextmenü den Befehl Eigenschaften. Daraufhin wird das Dialogfeld SQL/NoSQL-WHERE/ORDER-Eigenschaften geöffnet.

mf-sql-where-02_zoom70

4.Geben Sie eine SQL WHERE-Klausel in das Textfeld oben ein. In unserem Beispiel lautet die SQL Where-Klausel folgendermaßen: last_name LIKE :sqlparam. Geben Sie optional eine ORDER BY-Klausel ein. In der Abbildung oben sehen Sie die im Mapping FilterDatabaseRecords.mfd definierte WHERE- und ORDER BY-Klausel (dieses Einstellungen werden weiter unten beschrieben). Weitere Beispiele finden Sie unter Erstellen von WHERE- und ORDER BY-Klauseln.

 

Parameter in SQL/NoSQL-WHERE/ORDER-Komponenten

In der SQL/NoSQL-WHERE/ORDER-Komponente aus dem Mapping FilterDatabaseRecords.mfd ist die folgende WHERE-Klausel definiert: last_name LIKE :sqlparam, wobei sich last_name auf den Namen des Datenbankfelds in der verbundenen Tabelle bezieht und LIKE ein SQL-Operator ist; :sqlparam erstellt im Mapping einen Parameter namens sqlparam.

 

Parameter in der SQL/NoSQL-WHERE/ORDER-Komponente sind optional. Sie sind nützlich, wenn Sie über das Mapping einen Wert an die WHERE-Klausel übergeben möchten. Ohne Parameter hätte die obige WHERE-Klausel folgendermaßen gelautet: Last LIKE "M%". Damit würden alle Personen, deren Nachname mit dem Buchstaben "M" beginnt, abgerufen. Um diese Abfrage noch flexibler zu gestalten, haben wir anstelle von "M%" einen Parameter hinzugefügt. Dadurch kann auch jeder andere Buchstabe aus dem Mapping bereitgestellt werden, z.B. "D", um durch Änderung einer Konstante oder eines Mapping-Input-Parameters Personen, deren Nachname mit "D" beginnt, abzurufen. Der Input-Buchstabe im obigen Mapping stammt aus einer Input-Komponente namens input. Wenn Sie auf die Titelleiste dieser Komponente doppelklicken und ihre Eigenschaften öffnen, sehen Sie, dass m zum Zeitpunkt des Designs als Ausführungswert angegeben wird (siehe Abbildung unten).

mf-sql-where-06

Das SQL-Platzhalterzeichen % wird im Mapping von einer Konstante bereitgestellt und anschließend mit Hilfe der concat-Funktion mit dem Parameterwert verkettet. Dies hat den Vorteil, dass man keine SQL-Platzhalterzeichen in die Befehlszeile eingeben muss, wenn dieses Mapping in einer andere Umgebung (z.B. MapForce Server) ausgeführt wird.

 

Aussehen von SQL/NoSQL-WHERE/ORDER-Komponenten

Das Aussehen von SQL/NoSQL-WHERE/ORDER-Komponenten ändert sich, je nachdem welche Einstellungen darin definiert sind. Auf diese Art sehen Sie gleich direkt im Mapping, was die SQL/NoSQL-WHERE/ORDER-Komponente tut (siehe Tabelle unten).

 

mf-sql-where-03

Es wurde eine WHERE-Klausel definiert.

mf-sql-where-04

Es wurde eine WHERE-Klausel mit einem Parameter definiert. Der Parametername ist unterhalb des Datenelements table/field zu sehen.

mf-sql-where-05

Es wurde eine WHERE-Klausel mit einem Parameter definiert. Zusätzlich dazu wurde eine ORDER BY-Klausel definiert. Die Sortierreihenfolge wird durch das Sortiersymbol A-Z angezeigt.

 

Wenn Sie den Mauszeiger über die Titelleiste von SQL/NoSQL-WHERE/ORDER platzieren, wird ein Tooltip mit den verschiedenen definierten Klauseln angezeigt.

 

Filtern von Daten in Azure CosmosDB (Enterprise Edition)

Wenn der Name eines Containers in Ihrer CosmosDB Sonderzeichen enthält (z.B. +, -, @, usw.) oder ein Schlüsselwort ist, kann dieser Name in Abfragen nicht verwendet werden und Sie erhalten von der Datenbank einen Syntaxfehler. Zur Vermeidung potenzieller Probleme verwendet MapForce für CosmosDB-Abfragen die folgende Syntax:

 

SELECT * FROM ROOT AS c WHERE c.<field> ORDER BY c.<field>

 

Das Schlüsselwort ROOT in der FROM-Klausel referenziert den aktuell abgefragten Container. Da das Schlüsselwort ROOT nicht zum Adressieren von Feldern in WHERE- und ORDER BY-Klauseln verwendet werden kann, erhält der Container den Aliasnamen c, der dem Container über das Schlüsselwort AS zugewiesen wird. Durch Zuweisung eines Aliasnamens kann der Container-Inhalt gefiltert und sortiert werden.

 

Beachten Sie, dass allen Feldreferenzen im Dialogfeld WHERE/ORDER der Container-Aliasname c vorangestellt werden muss (siehe Beispiel unten).

 

SELECT * FROM ROOT AS c WHERE c.age > 20 ORDER BY c.name

 

© 2018-2024 Altova GmbH