GenerateTableFetch 2025.5.31.15

Bundle

org.apache.nifi | nifi-standard-nar

Beschreibung

Erzeugt SQL-Select-Abfragen, die „Seiten“ von Zeilen aus einer Tabelle abrufen. Die Eigenschaft Partitionsgröße bestimmt zusammen mit der Zeilenzahl der Tabelle die Größe und Anzahl der Seiten und der erzeugten FlowFiles. Darüber hinaus kann ein schrittweises Abrufen durch Festlegen von Spalten mit Maximalwerten erreicht werden, wodurch der Prozessor die Maximalwerte der Spalten verfolgt und somit nur Zeilen abruft, deren Spaltenwerte die beobachteten Maximalwerte überschreiten. Dieser Prozessor ist nur für die Ausführung auf dem primären Knoten vorgesehen. Dieser Prozessor kann eingehende Verbindungen akzeptieren. Die Verhaltensweise des Prozessors unterscheidet sich je nachdem, ob eingehende Verbindungen bereitgestellt werden: - Wenn keine eingehenden Verbindungen angegeben sind, generiert der Prozessor SQL-Abfragen gemäß dem angegebenen Prozessorzeitplan. Ausdruckssprach wird für viele Felder unterstützt, aber es sind keine FlowFile-Attribute verfügbar. Die Eigenschaften werden jedoch anhand der Umgebungs-/Systemeigenschaften ausgewertet. – Wenn eingehende Konnektivität(en) angegeben wird/werden und kein FlowFile für eine Prozessoraufgabe verfügbar ist, wird keine Arbeit ausgeführt. – Wenn eingehende Verbindungen angegeben sind und ein FlowFile für eine Prozessoraufgabe verfügbar ist, können die Attribute des FlowFilein der Expression Language für Felder wie Tabellenname und andere verwendet werden. Die Felder „Max-Value Columns“ und „Columns to Return“ müssen jedoch leer sein oder sich auf Spalten beziehen, die in jeder angegebenen Tabelle verfügbar sind.

Tags

database, fetch, generate, jdbc, query, select, sql

Eingabeanforderung

ALLOWED

Unterstützt sensible dynamische Eigenschaften

false

Eigenschaften

Eigenschaft

Beschreibung

Columns to Return

Eine durch Kommas getrennte Liste von Spaltennamen, die in der Abfrage verwendet werden sollen. Wenn Ihre Datenbank eine spezielle Behandlung der Namen erfordert (z. B. Anführungszeichen), sollte jeder Name entsprechend behandelt werden. Wenn keine Spaltennamen angegeben werden, werden alle Spalten der angegebenen Tabelle zurückgegeben. NOTE: Es ist wichtig, konsistente Spaltennamen für eine bestimmte Tabelle zu verwenden, damit die inkrementelle Abfrage richtig funktioniert.

Database Connection Pooling Service

Der Controller Service, der verwendet wird, um eine Verbindung zur Datenbank herzustellen.

Database Dialect Service

Database Dialect Service zur Generierung von Anweisungen, die auf einen bestimmten Dienst oder Anbieter zugeschnitten sind.

Max Wait Time

Die maximal zulässige Zeit für eine laufende SQL-Select-Abfrage. Null bedeutet, dass es kein Limit gibt. Eine maximale Zeit von weniger als 1 Sekunde entspricht Null.

Maximum-value Columns

Eine durch Kommas getrennte Liste von Spaltennamen. Der Prozessor merkt sich für jede Spalte den Maximalwert, der seit dem Start des Prozessors zurückgegeben wurde. Die Verwendung mehrerer Spalten impliziert eine Reihenfolge in der Spaltenliste, und die Werte jeder Spalte sollten langsamer ansteigen als die Werte der vorherigen Spalten. Die Verwendung mehrerer Spalten impliziert also eine hierarchische Struktur der Spalten, die in der Regel für die Partitionierung von Tabellen verwendet wird. Dieser Prozessor kann verwendet werden, um nur die Zeilen abzurufen, die seit dem letzten Abruf hinzugefügt/aktualisiert wurden. Beachten Sie, dass einige JDBC-Typen wie Bit/Boolesch nicht für die Beibehaltung des Maximalwerts geeignet sind. Spalten dieser Typen sollten daher nicht in dieser Eigenschaft aufgeführt werden, da dies zu Fehlern bei der Verarbeitung führt. Wenn keine Spalten angegeben werden, werden alle Zeilen der Tabelle berücksichtigt, was sich auf die Leistung auswirken kann. NOTE: Es ist wichtig, konsistente Maximalwert-Spaltennamen für eine bestimmte Tabelle zu verwenden, damit die inkrementelle Abfrage richtig funktioniert.

Tabellenname

Der Name der Datenbanktabelle, die abgefragt werden soll.

db-fetch-db-type

Datenbanktyp zum Generieren von Anweisungen, die für einen bestimmten Dienst oder Anbieter spezifisch sind. Der generische Typ unterstützt die meisten Fälle, aber die Auswahl eines bestimmten Typs ermöglicht eine optimale Verarbeitung oder zusätzliche Features.

db-fetch-where-clause

Eine benutzerdefinierte Klausel, die bei der Erstellung von SQL-Abfragen in der WHERE-Bedingung hinzugefügt werden kann.

gen-table-column-for-val-partitioning

Der Name einer Spalte, deren Werte für die Partitionierung verwendet werden sollen. Das Standardverhalten ist die Verwendung von Zeilennummern im Resultset für die Partitionierung in „Seiten“, die aus der Datenbank abgerufen werden sollen, unter Verwendung einer Offset-/Limit-Strategie. Bei bestimmten Datenbanken kann es jedoch unter bestimmten Umständen effizienter sein, die Spaltenwerte selbst zur Definition der „Seiten“ zu verwenden. Diese Eigenschaft sollte nur verwendet werden, wenn die Standardabfragen keine gute Leistung erbringen, wenn es keine Spalte mit Maximalwert oder nur eine einzige Spalte mit Maximalwert gibt, deren Typ in eine lange Ganzzahl umgewandelt werden kann (d. h. kein Datum oder Zeitstempel), und wenn die Spaltenwerte gleichmäßig verteilt und nicht spärlich sind, um eine optimale Leistung zu erzielen.

gen-table-custom-orderby-column

Der Name einer Spalte, die für die Sortierung der Ergebnisse verwendet werden soll, wenn keine Max-Value-Spalten angegeben sind und die Partitionierung aktiviert ist. Diese Eigenschaft wird ignoriert, wenn entweder „Max-Value Columns“ oder „Partition Size“ = 0 eingestellt ist. NOTE: Wenn weder „Max-Value Columns“ noch „Custom ORDER BY Column“ eingestellt ist, kann der Prozessor je nach Datenbank/Treiber einen Fehler melden und/oder das generierte SQL kann zu fehlenden und/oder doppelten Zeilen führen. Der Grund dafür ist, dass ohne eine explizite Reihenfolge das Abrufen der einzelnen Partitionen in einer beliebigen Reihenfolge erfolgt.

gen-table-fetch-partition-size

Die Anzahl der Ergebniszeilen, die von jeder generierten SQL-Anweisung abgerufen werden sollen. Die Gesamtzahl der Zeilen in der Tabelle geteilt durch die Partitionsgröße ergibt die Anzahl der erzeugten SQL-Anweisungen (d. h. FlowFiles). Ein Wert von Null bedeutet, dass ein einzelnes FlowFile generiert werden soll, dessen SQL-Anweisung alle Zeilen der Tabelle abruft.

gen-table-output-flowfile-on-zero-results

Je nach den angegebenen Eigenschaften werden bei der Ausführung dieses Prozessors möglicherweise keine SQL-Anweisungen erzeugt. Wenn diese Eigenschaft „true“ ist, wird ein leeres FlowFile generiert (mit dem übergeordneten Objekt des eingehenden FlowFile, falls vorhanden) und an die Beziehung „success“ übertragen. Wenn diese Eigenschaft „false“ ist, werden keine Ausgabe-FlowFiles erzeugt.

Statusmanagement

Bereiche

Beschreibung

CLUSTER

Nach der Durchführung einer Abfrage in der angegebenen Tabelle werden die Maximalwerte für die angegebene(n) Spalte(n) für die Verwendung in zukünftigen Ausführungen der Abfrage beibehalten. Dadurch kann der Prozessor nur die Datensätze abrufen, deren Maximalwerte größer als die beibehaltenen Werte sind. Dies kann für inkrementelle Abrufe, Abrufe von neu hinzugefügten Zeilen usw. verwendet werden. Um die Maximalwerte zu löschen, löschen Sie den Status des Prozessors gemäß der Dokumentation zum Statusmanagement.

Beziehungen

Name

Beschreibung

failure

Diese Beziehung wird nur verwendet, wenn die Ausführung der SQL-Abfrage (über ein eingehendes FlowFile) fehlgeschlagen ist. Das eingehende FlowFile wird zurückgestellt und an diese Beziehung weitergeleitet. Wenn keine eingehende(n) Verbindung(en) angegeben ist/sind, wird diese Beziehung nicht verwendet.

success

FlowFile aus dem SQL-Abfrage Resultset erfolgreich erstellt.

Schreibt Attribute

Name

Beschreibung

generatetablefetch.sql.error

Wenn der Prozessor über eingehende Verbindungen verfügt und die Verarbeitung eines eingehenden FlowFile eine SQL-Ausnahme verursacht, wird das FlowFile als Fehler weitergeleitet und dieses Attribut wird auf die Ausnahmemeldung gesetzt.

generatetablefetch.tableName

Der Name der Datenbanktabelle, die abgefragt werden soll.

generatetablefetch.columnNames

Die durch Kommas getrennte Liste der in der Abfrage verwendeten Spaltennamen.

generatetablefetch.whereClause

In der Abfrage verwendete Where-Klause, um die erwarteten Zeilen zu erhalten.

generatetablefetch.maxColumnNames

Die durch Kommas getrennte Liste der Spaltennamen, die verwendet wird, um die Daten zu verfolgen, die seit dem Start des Prozessors zurückgegeben wurden.

generatetablefetch.limit

Die Anzahl der Ergebniszeilen, die von der SQL-Anweisung abgerufen werden sollen.

generatetablefetch.offset

Offset, der zum Abrufen der entsprechenden Partition verwendet werden soll.

fragment.identifier

Alle FlowFiles, die aus demselben Resultset einer Abfrage erzeugt wurden, haben denselben Wert für das Attribut „fragment.identifier“. Das kann dann verwendet werden, um die Ergebnisse zu korrelieren.

fragment.count

Dies ist die Gesamtzahl der FlowFiles, die von einem einzigen ResultSet produziert werden. Dies kann in Verbindung mit dem Attribut „fragment.identifier“ verwendet werden, um zu erfahren, wie viele FlowFiles zum selben eingehenden ResultSet gehören.

fragment.index

Dies ist die Position dieses FlowFile in der Liste der ausgehenden FlowFiles, die alle aus der gleichen Ausführung stammen. Dies kann in Verbindung mit dem Attribut fragment.identifier verwendet werden, um zu erfahren, welche FlowFiles aus derselben Ausführung stammen und in welcher Reihenfolge FlowFiles erstellt wurden.

Siehe auch: