GenerateTableFetch 2025.10.2.19

Bundle

org.apache.nifi | nifi-standard-nar

Description

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.

Balises

database, fetch, generate, jdbc, query, select, sql

Exigences en matière d’entrées

ALLOWED

Prend en charge les propriétés dynamiques sensibles

false

Propriétés

Propriété

Description

Columns to Return

Une liste de noms de colonnes séparés par des virgules à utiliser dans la requête. Si votre base de données exige un traitement spécial des noms (citations, par exemple), chaque nom doit inclure ce traitement. Si aucun nom de colonne n’est fourni, toutes les colonnes de la table spécifiée seront renvoyées. Remarque : il est important d’utiliser des noms de colonne cohérents pour une table donnée afin que la récupération incrémentielle fonctionne correctement.

Service de pooling de connexions de bases de données

Le composant Controller Service qui est utilisé pour obtenir une connexion à la base de données.

Database Dialect Service

Le composant Database Dialect Service permettant de générer des instructions spécifiques pour un service ou un fournisseur particulier.

Temps d’attente maximum

Temps maximum autorisé pour une requête SQL SELECT en cours d’exécution, zéro signifiant qu’il n’y a pas de limite. Le temps maximum inférieur à 1 seconde sera égal à zéro.

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.

Nom de la table

Nom de la table de base de données à interroger.

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

Une clause personnalisée à ajouter dans la condition WHERE lors de l’élaboration des requêtes SQL.

gen-table-column-for-val-partitioning

Le nom d’une colonne dont les valeurs seront utilisées pour la partition. Le comportement par défaut consiste à utiliser les numéros de ligne du jeu de résultats pour le partitionnement en « pages » à extraire de la base de données, à l’aide d’une stratégie de décalage/limite. Toutefois, pour certaines bases de données, il peut être plus efficace, dans certaines circonstances, d’utiliser les valeurs des colonnes elles-mêmes pour définir les « pages ». Cette propriété ne doit être utilisée que lorsque les requêtes par défaut ne sont pas performantes, lorsqu’il n’y a pas de colonne à valeur maximale ou qu’il n’y a qu’une seule colonne à valeur maximale dont le type peut être converti en entier long (c’est-à-dire ni date ni horodatage), et que les valeurs de la colonne sont réparties uniformément et ne sont pas éparses, pour de meilleures performances.

gen-table-custom-orderby-column

Le nom d’une colonne à utiliser pour ordonner les résultats si les colonnes à valeur maximale ne sont pas fournies et que la partition est activée. Cette propriété est ignorée si la propriété Maximum-value Columns est spécifiée ou si la taille de la partition est égale à 0. Remarque : si aucune colonne à valeur maximale ou colonne ORDER BY personnalisée n’est définie, et selon la base de données/le pilote, le processeur peut signaler une erreur et/ou le SQL généré peut donner lieu à des lignes manquantes et/ou à des doublons. En effet, en l’absence d’ordre explicite, la recherche de chaque partition se fait selon un ordre arbitraire.

gen-table-fetch-partition-size

Le nombre de lignes de résultats à extraire par chaque instruction SQL générée. Le nombre total de lignes de la table divisé par la taille de la partition donne le nombre d’instructions SQL (c’est-à-dire FlowFiles) générées. La valeur zéro indique qu’un seul FlowFile doit être généré, à partir duquel l’instruction SQL récupérera toutes les lignes de la table.

gen-table-output-flowfile-on-zero-results

En fonction des propriétés spécifiées, l’exécution de ce processeur peut ne donner lieu à aucune instruction SQL. Lorsque cette propriété est définie sur true, un FlowFile vide est généré (avec le parent du FlowFile entrant, le cas échéant) et transféré à la relation « success ». Lorsque cette propriété est définie sur false, l’exécution ne génère pas de FlowFiles en sortie.

Gestion de l’État

Champs d’application

Description

CLUSTER

Après l’exécution d’une requête sur la table spécifiée, les valeurs maximales pour la ou les colonnes spécifiées seront conservées pour être utilisées lors des prochaines exécutions de la requête. Cela permet au processeur de ne récupérer que les enregistrements dont les valeurs maximales sont supérieures aux valeurs retenues. Cela peut être utilisé pour la récupération incrémentale, la récupération des lignes nouvellement ajoutées, etc. Pour effacer les valeurs maximales, effacez l’état du processeur conformément à la documentation sur la gestion des états

Relations

Nom

Description

failure

Cette relation n’est utilisée que lorsque l’exécution de la requête SQL (à l’aide d’un FlowFile entrant) a échoué. Le FlowFile entrant sera pénalisé et routé vers cette relation. Si aucune connexion entrante n’est spécifiée, cette relation n’est pas utilisée.

success

Création réussie du FlowFile à partir du jeu de résultats de la requête SQL.

Écrit les attributs

Nom

Description

generatetablefetch.sql.error

Si le processeur a des connexions entrantes et que le traitement d’un FlowFile entrant provoque une exception SQL, le FlowFile est routé vers l’échec et cet attribut est défini sur le message d’exception.

generatetablefetch.tableName

Nom de la table de base de données à interroger.

generatetablefetch.columnNames

La liste, séparée par des virgules, des noms de colonnes utilisés dans la requête.

generatetablefetch.whereClause

Clause WHERE utilisée dans la requête pour obtenir les lignes attendues.

generatetablefetch.maxColumnNames

Liste de noms de colonnes séparés par des virgules, utilisée pour garder une trace des données renvoyées depuis le début de l’exécution du processeur.

generatetablefetch.limit

Le nombre de lignes de résultats à extraire par l’instruction SQL.

generatetablefetch.décalage

Décalage à utiliser pour récupérer la partition correspondante.

fragment.identifier

Tous les FlowFiles générés à partir du même jeu de résultats de requête auront la même valeur pour l’attribut fragment.identifier. Ceci peut ensuite être utilisé pour corréler les résultats.

fragment.count

Il s’agit du nombre total de FlowFiles produits par un seul ResultSet. Cet attribut peut être utilisé en conjonction avec l’attribut fragment.identificateur afin de savoir combien de FlowFiles appartiennent au même ResultSet entrant.

fragment.index

Il s’agit de la position de ce FlowFile dans la liste des FlowFiles sortants qui ont tous été générés à partir de la même exécution. Cet attribut peut être utilisé conjointement avec l’attribut fragment.identifier pour savoir quels FlowFiles proviennent de la même exécution et dans quel ordre ces FlowFiles ont été produits

Voir aussi :