QueryRecord 2025.5.31.15¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Beschreibung¶
Wertet eine oder mehrere SQL-Abfragen anhand des Inhalts eines FlowFile aus. Das Ergebnis der SQL-Abfrage wird dann der Inhalt des Ausgabe-FlowFile. Dies kann beispielsweise für feldspezifische Filterung, Transformation und Filterung auf Zeilenebene verwendet werden. Spalten können umbenannt, einfache Berechnungen und Aggregationen durchgeführt werden usw. Der Prozessor ist mit einem Record Reader Controller Service und einem Record Writer Service konfiguriert, um Flexibilität bei eingehenden und ausgehenden Datenformaten zu ermöglichen. Der Prozessor muss mit mindestens einer benutzerdefinierten Eigenschaft konfiguriert werden. Der Name der Eigenschaft ist die Beziehung, zu der die Daten weitergeleitet werden sollen, und der Wert der Eigenschaft ist eine SQL SELECT-Anweisung, mit der angegeben wird, wie die Eingabedaten umgewandelt/gefiltert werden sollen. Die SQL-Anweisung muss gültiges ANSI SQL sein und wird von Apache Calcite unterstützt. Wenn die Transformation fehlschlägt, wird das Original-FlowFile an die Beziehung „failure“ weitergeleitet. Andernfalls werden die ausgewählten Daten an die entsprechende Beziehung weitergeleitet. Wenn der Record Writer sich dafür entscheidet, das Schema vom Datensatz zu erben, ist es wichtig zu beachten, dass das geerbte Schema aus dem ResultSet stammt und nicht aus dem Eingabedatensatz. Dadurch kann eine einzelne Instanz des QueryRecord-Prozessors mehrere Abfragen ausführen, von denen jede einen anderen Satz von Spalten und Aggregationen zurückgibt. Dadurch hat das abgeleitete Schema jedoch keinen Schemanamen. Daher ist es wichtig, dass der konfigurierte Record Writer nicht versucht, den Schemanamen als Attribut zu schreiben, wenn er das Schema vom Datensatz erbt. Weitere Informationen finden Sie in der Dokumentation zur Prozessornutzung.
Eingabeanforderung¶
REQUIRED
Unterstützt sensible dynamische Eigenschaften¶
false
Eigenschaften¶
Eigenschaft |
Beschreibung |
---|---|
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. |
include-zero-record-flowfiles |
Wenn Sie die SQL-Anweisung für ein eingehendes FlowFile ausführen und das Ergebnis keine Daten enthält, gibt diese Eigenschaft an, ob ein FlowFile an die entsprechende Beziehung gesendet wird oder nicht. |
record-reader |
Gibt den Controller Service an, der für das Parsen eingehender Daten und die Bestimmung des Datenschemas verwendet werden soll |
record-writer |
Gibt den Controller Service an, der für das Schreiben von Ergebnissen in ein FlowFile verwendet werden soll. |
Beziehungen¶
Name |
Beschreibung |
---|---|
failure |
Wenn die Verarbeitung eines FlowFile aus irgendeinem Grund fehlschlägt (z. B. wenn die SQL-Anweisung Spalten enthält, die in den Eingabedaten nicht vorhanden sind), wird das ursprüngliche FlowFile an diese Beziehung weitergeleitet. |
original |
Das Original-FlowFile wird an diese Beziehung weitergeleitet. |
Schreibt Attribute¶
Name |
Beschreibung |
---|---|
mime.type |
Setzt das Attribut „mime.type“ auf den vom Record Writer angegebenen MIME-Typ |
record.count |
Die Anzahl der von der Abfrage ausgewählten Datensätze |
QueryRecord.Route |
Die Beziehung, an die das FlowFile weitergeleitet wurde |
Anwendungsfälle¶
Datensätze auf der Grundlage der Werte der Datensatzfelder filtern |
Nur ausgewählte Datensätze beibehalten |
Nur bestimmte Felder in einem Datensatz behalten, wobei die Namen der zu behaltenden Felder bekannt sind. |
Datensatzorientierte Daten zur Verarbeitung basierend auf ihrem Inhalt weiterleiten |