GenerateTableFetch 2025.10.2.19

Bundle

org.apache.nifi | nifi-standard-nar

Beschreibung

Generates SQL select queries that fetch „pages“ of rows from a table. The partition size property, along with the table ‚s row count, determine the size and number of pages and generated FlowFiles. In addition, incremental fetching can be achieved by setting Maximum-Value Columns, which causes the processor to track the columns‘ maximum values, thus only fetching rows whose columns ‚values exceed the observed maximums. This processor is intended to be run on the Primary Node only. This processor can accept incoming connections; the behavior of the processor is different whether incoming connections are provided: - If no incoming connection(s) are specified, the processor will generate SQL queries on the specified processor schedule. Expression Language is supported for many fields, but no FlowFile attributes are available. However the properties will be evaluated using the Environment/System properties. - If incoming connection(s) are specified and no FlowFile is available to a processor task, no work will be performed. - If incoming connection(s) are specified and a FlowFile is available to a processor task, the FlowFile’s attributes may be used in Expression Language for such fields as Table Name and others. However, the Max-Value Columns and Columns to Return fields must be empty or refer to columns that are available in each specified table.

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

A comma-separated list of column names. The processor will keep track of the maximum value for each column that has been returned since the processor started running. Using multiple columns implies an order to the column list, and each column ‚s values are expected to increase more slowly than the previous columns‘ values. Thus, using multiple columns implies a hierarchical structure of columns, which is usually used for partitioning tables. This processor can be used to retrieve only those rows that have been added/updated since the last retrieval. Note that some JDBC types such as bit/boolean are not conducive to maintaining maximum value, so columns of these types should not be listed in this property, and will result in error(s) during processing. If no columns are provided, all rows from the table will be considered, which could have a performance impact. NOTE: It is important to use consistent max-value column names for a given table for incremental fetch to work properly.

Tabellenname

Der Name der Datenbanktabelle, die abgefragt werden soll.

db-fetch-db-type

Database Type for generating statements specific to a particular service or vendor. The Generic Type supports most cases but selecting a specific type enables optimal processing or additional 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: