QueryDatabaseTableRecord 2025.5.31.15¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Beschreibung¶
Erzeugt eine SQL-Select-Abfrage oder verwendet eine bereitgestellte Anweisung und führt sie aus, um alle Zeilen abzurufen, deren Werte in der/den angegebenen Maximalwert-Spalte(n) größer sind als die zuvor angezeigten Maximalwerte. Das Abfrageergebnis wird in das vom Record Writer angegebene Format konvertiert. Expression Language wird für mehrere Eigenschaften unterstützt, aber es sind keine eingehenden Verbindungen erlaubt. Die Eigenschaften Environment/System können verwendet werden, um Werte für jede Eigenschaft zu liefern, die Expression Language enthält. Wenn Sie diese Abfragen mithilfe von FlowFile-Attributen durchführen möchten, können Sie dazu die Prozessoren GenerateTableFetch und/oder ExecuteSQL verwenden. Streaming wird verwendet, sodass beliebig große Resultsets unterstützt werden. Dieser Prozessor kann über einen Timer oder einen Cron-Ausdruck mit den Standardmethoden für die Zeitplanung gestartet werden. Dieser Prozessor sollte nur auf dem primären Knoten ausgeführt werden. Das FlowFile-Attribut „querydbtable.row.count“ gibt an, wie viele Zeilen ausgewählt wurden.
Eingabeanforderung¶
FORBIDDEN
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. |
Fetch Size |
Die Anzahl der Ergebniszeilen, die auf einmal aus dem Resultset abgerufen werden sollen. Dies ist ein Hinweis für den Datenbanktreiber und wird möglicherweise nicht beachtet und/oder ist nicht exakt. Wenn der angegebene Wert Null ist, wird der Hinweis ignoriert. Wenn Sie PostgreSQL verwenden, dann muss „Set Auto Commit“ gleich „false“ sein, damit „Fetch Size“ wirksam wird. |
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. |
Set Auto Commit |
Ermöglicht das Aktivieren oder Deaktivieren der Auto-Commit-Funktion der DB-Verbindung. Der Standardwert ist „No value set“. Bei „No value set“ bleibt der Auto-Commit-Modus der Datenbankverbindung unverändert. Bei einigen JDBC-Treibern, wie z. B. dem PostgreSQL-Treiber, ist es erforderlich, die Autocommit-Funktion zu deaktivieren, damit die Einstellung „Fetch Size“ wirksam wird. Wenn Auto-Commit aktiviert ist, ignoriert der PostgreSQL-Treiber die Einstellung „Fetch Size“ und lädt alle Zeilen des Resultset auf einmal in den Speicher. Dies kann zu einem hohen Speicherverbrauch bei der Ausführung von Abfragen führen, die große Datenmengen abrufen. Weitere Informationen zu diesem Verhalten im PostgreSQL-Treiber finden Sie unter https://jdbc.postgresql.org//documentation/head/query.html. |
Tabellenname |
Der Name der Datenbanktabelle, die abgefragt werden soll. Wenn eine benutzerdefinierte Abfrage verwendet wird, wird diese Eigenschaft als Alias für die Abfrage verwendet und erscheint als Attribut im FlowFile. |
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-sql-query |
Eine benutzerdefinierte SQL-Abfrage, die zum Abrufen von Daten verwendet wird. Anstatt eine SQL-Abfrage aus anderen Eigenschaften zu erstellen, wird diese Abfrage als Unterabfrage verpackt. Die Abfrage darf keine ORDER BY-Anweisung enthalten. |
db-fetch-where-clause |
Eine benutzerdefinierte Klausel, die bei der Erstellung von SQL-Abfragen in der WHERE-Bedingung hinzugefügt werden kann. |
dbf-default-precision |
Wenn ein DECIMAL-/NUMBER- Wert als Avro-Logik-Typ „decimal“ geschrieben wird, ist eine bestimmte „precision“ (Genauigkeit) erforderlich, die die Anzahl der verfügbaren Ziffern angibt. Im Allgemeinen wird die Genauigkeit durch die Datentypdefinition der Spalte oder die Standardeinstellung der Datenbank-Engine festgelegt. Allerdings kann von einigen Datenbank-Engines eine undefinierte Genauigkeit (0) zurückgegeben werden. „Default Decimal Precision“ wird beim Schreiben dieser Zahlen mit undefinierter Genauigkeit verwendet. |
dbf-default-scale |
Wenn ein DECIMAL-/NUMBER-Wert als Avro-Logik-Typ „decimal“ geschrieben wird, ist eine bestimmte „scale“ (Skalierung) erforderlich, die die Anzahl der verfügbaren Dezimalstellen angibt. Im Allgemeinen wird die Skalierung durch die Datentypdefinition der Spalte oder die Standardeinstellung der Datenbank-Engine festgelegt. Wenn jedoch eine undefinierte Genauigkeit (0) zurückgegeben wird, kann die Skalierung bei einigen Datenbank-Engines ebenfalls ungewiss sein. „Default Decimal Scale“ wird beim Schreiben dieser undefinierten Zahlen verwendet. Wenn ein Wert mehr Dezimalstellen hat als in der angegebenen Skalierung, wird der Wert gerundet, z. B. wird 1,53 bei einer Skalierung von 0 zu 2 und bei einer Skalierung von 1 zu 1,5. |
dbf-user-logical-types |
Ob Avro Logical Types für die Spalten DECIMAL/NUMBER, DATE, TIME und TIMESTAMP verwendet werden sollen. Wenn deaktiviert, als Zeichenfolge geschrieben. Wenn aktiviert, werden logische Typen verwendet und als ihr zugrunde liegender Typ geschrieben, insbesondere DECIMAL/NUMBER als logisches „Dezimal“: geschrieben als Bytes mit zusätzlichen Metadaten zu Genauigkeit und und Skalierung, DATE Als logisches „date-millis“: geschrieben als Integer, der die Anzahl der Tage seit der Unix-Epoche (1970-01-01) angibt, TIME als logisches „time-millis“: geschrieben als Integer, der die Millisekunden seit der Unix-Epoche angibt, und TIMESTAMP als logischer Typ „timestamp-millis“: gespeichert als Long-Wert, der Millisekunden seit der Unix-Epoche angibt. Wenn ein Reader von geschriebenen Avro-Datensätzen diese logischen Typen ebenfalls kennt, können diese Werte je nach Implementierung des Readers mit mehr Kontext deserialisiert werden. |
initial-load-strategy |
Wie werden vorhandene Zeilen in der Datenbanktabelle behandelt, wenn der Prozessor zum ersten Mal gestartet wird (oder sein Status gelöscht wurde). Die Eigenschaft wird ignoriert, wenn eine dynamische Eigenschaft „initial.maxvalue.*“ ebenfalls konfiguriert wurde. |
qdbt-max-frags |
Die maximale Anzahl von Fragmenten. Wenn der angegebene Wert Null ist, werden alle Fragmente zurückgegeben. Dies verhindert einen OutOfMemoryError, wenn dieser Prozessor eine große Tabelle aufnimmt. NOTE: Die Einstellung dieser Eigenschaft kann zu Datenverlusten führen, da die eingehenden Ergebnisse nicht geordnet sind und Fragmente an beliebigen Grenzen enden können, an denen Zeilen nicht in das Resultset aufgenommen werden. |
qdbt-max-rows |
Die maximale Anzahl von Ergebniszeilen, die in einem einzigen FlowFile enthalten sind. Damit können Sie sehr große Resultsets in mehrere FlowFiles aufteilen. Wenn der angegebene Wert Null ist, werden alle Zeilen in einem einzigen FlowFile zurückgegeben. |
qdbt-output-batch-size |
Die Anzahl der Ausgabe-FlowFiles, die in die Warteschlange gestellt werden, bevor die Prozesssitzung beendet wird. Wenn dieser Wert auf Null gesetzt ist, wird die Sitzung abgeschlossen, wenn alle Resultset-Zeilen verarbeitet wurden und die Ausgabe-FlowFiles zur Übertragung an die nachgelagerte Beziehung bereit sind. Bei großen Resultsets kann dies dazu führen, dass am Ende der Prozessorausführung eine große Menge an FlowFiles übertragen werden muss. Wenn diese Eigenschaft gesetzt ist, wird die Sitzung übertragen, wenn die angegebene Anzahl von FlowFiles zur Übertragung bereit ist. Damit werden die FlowFiles für die nachgelagerte Beziehung freigegeben. NOTE: Die Attribute maxvalue.* und fragment.count werden nicht für FlowFiles verwendet, wenn diese Eigenschaft festgelegt ist. |
qdbtr-normalize |
Ob bei der Erstellung des Ausgabeschemas Zeichen in Spaltennamen geändert werden sollen. Zum Beispiel werden Doppelpunkte und Punkte in Unterstriche umgewandelt. |
qdbtr-record-writer |
Gibt den Controller Service an, der für das Schreiben von Ergebnissen in ein FlowFile verwendet werden soll. Der Record Writer kann das „Inherit Schema“ verwenden, um die Verhaltensweise des abgeleiteten Schemas zu emulieren, d. h. ein explizites Schema muss nicht im Writer definiert sein, sondern wird von der gleichen Logik geliefert, die für die Ableitung des Schemas aus den Spaltentypen verwendet wird. |
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 |
---|---|
success |
FlowFile aus dem SQL-Abfrage Resultset erfolgreich erstellt. |
Schreibt Attribute¶
Name |
Beschreibung |
---|---|
tablename |
Name der abgefragten Tabelle |
querydbtable.row.count |
Die Anzahl der von der Abfrage ausgewählten Zeilen |
fragment.identifier |
Wenn „Max Rows Per Flow File“ eingestellt ist, haben alle FlowFiles aus dem gleichen Resultset der Abfrage den gleichen Wert für das Attribut „fragment.identifier“. Das kann dann verwendet werden, um die Ergebnisse zu korrelieren. |
fragment.count |
Wenn „Max Rows Per Flow File“ eingestellt ist, ist dies die Gesamtzahl der FlowFiles, die von einem einzigen ResultSet erzeugt werden. Dies kann in Verbindung mit dem Attribut „fragment.identifier“ verwendet werden, um zu erfahren, wie viele FlowFiles zum selben eingehenden ResultSet gehören. Wenn „Output Batch Size“ festgelegt ist, wird dieses Attribut nicht gefüllt. |
fragment.index |
Wenn „Max Rows Per Flow File“ eingestellt ist, dann ist die Position dieses FlowFile in der Liste der ausgehenden FlowFiles, die alle aus demselben Resultset-FlowFile stammen. Dies kann in Verbindung mit dem „Attribut fragment.identifier“ verwendet werden, um zu erfahren, welche FlowFiles aus demselben Resultset stammen und in welcher Reihenfolge FlowFiles erstellt wurden |
maxvalue.* |
Jedes Attribut enthält den beobachteten Maximalwert einer bestimmten „Maximum-value Column“. Das Suffix des Attributs ist der Name der Spalte. Wenn „Output Batch Size“ festgelegt ist, wird dieses Attribut nicht gefüllt. |
mime.type |
Setzt das Attribut „mime.type“ auf den vom Record Writer angegebenen MIME-Typ. |
record.count |
Die Anzahl der vom Record Writer ausgegebenen Datensätze. |
Anwendungsfälle¶
Ruft alle Zeilen aus einer Datenbanktabelle ab. |
Führen Sie ein inkrementelles Laden einer einzelnen Datenbanktabelle durch, indem Sie nur neue Zeilen abrufen, wenn sie der Tabelle hinzugefügt werden. |
Anwendungsfälle mit anderen Komponenten¶
Führen Sie eine inkrementelle Ladung mehrerer Datenbanktabellen durch, wobei nur neue Zeilen abgerufen werden, die zu den Tabellen hinzugefügt wurden. |