GenerateTableFetch 2025.10.2.19¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Beschreibung¶
Generiert SQL-Select-Abfragen, die „Seiten“ von Zeilen aus einer Tabelle abrufen. Die Eigenschaft der Partitionsgröße bestimmt zusammen mit der Zeilenzahl der Tabelle die Größe und Anzahl der Seiten und der generierten FlowFiles. Darüber hinaus kann das inkrementelle Abrufen durch die Einstellung von Maximalwert-Spalten erreicht werden, wodurch der Prozessor die Maximalwerte der Spalten verfolgt und nur Zeilen abruft, deren Spaltenwerte das beobachtete Maximum überschreiten. Dieser Prozessor ist nur für die Ausführung auf dem Primärknoten vorgesehen. Dieser Prozessor kann eingehende Verbindungen akzeptieren. Das Verhalten des Prozessors ist unterschiedlich, abhängig davon, ob eingehende Verbindungen bereitgestellt werden: - Wenn keine eingehenden Verbindungen angegeben sind, generiert der Prozessor SQL-Abfragen gemäß dem angegebenen Prozessorzeitplan. Die Ausdruckssprache wird für viele Felder unterstützt, aber es sind keine FlowFile-Attribute verfügbar. Die Eigenschaften werden jedoch anhand der Eigenschaften von Umgebung/System ausgewertet. - Wenn eingehende Verbindungen angegeben sind und einer Prozessoraufgabe kein FlowFile zur Verfügung steht, wird kein Vorgang ausgeführt. - Wenn eingehende Verbindungen angegeben sind und einer Prozessoraufgabe ein FlowFile zur Verfügung steht, können die FlowFile-Attribute in der Ausdruckssprache für Felder wie Tabellennamen und anderes verwendet werden. Die Felder für Maximalwertspalten und zurückzugebende Spalten müssen jedoch leer sein oder sich auf Spalten beziehen, die in jeder angegebenen Tabelle verfügbar sind.
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 |
Kommagetrennte Liste von Spaltennamen. Der Prozessor zeichnet den Maximalwert für jede Spalte auf, die seit dem Start des Prozessors zurückgegeben wurde. Die Verwendung mehrerer Spalten impliziert eine Rangfolge in der Spaltenliste, und es wird erwartet, dass die Werte einer einzelnen Spalte langsamer ansteigen als die Werte der vorherigen Spalten. Die Verwendung mehrerer Spalten impliziert daher eine hierarchische Struktur von Spalten, die normalerweise zur 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/Boolean nicht hilfreich sind bei der Aufrechterhaltung des Maximalwerts. Daher sollten Spalten dieser Typen nicht in dieser Eigenschaft aufgeführt werden und führen bei der Verarbeitung zu Fehlern. Wenn keine Spalten angegeben sind, 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 das inkrementelle Abrufen ordnungsgemäß 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 Funktionen. |
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. |