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