GenerateTableFetch 2025.10.2.19¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Description¶
Génère certaines requêtes SQL qui extraient des « pages » de lignes d’une table. La propriété de taille de partition, ainsi que le nombre de lignes de la table, déterminent la taille et le nombre de pages et de FlowFiles générés. En outre, la récupération incrémentielle peut être obtenue en définissant des colonnes de valeurs maximales, ce qui oblige le processeur à suivre les valeurs maximales des colonnes, et à ne récupérer que les lignes dont les valeurs des colonnes dépassent les maximums observés. Ce processeur est destiné à être exécuté sur le nœud principal uniquement. Ce processeur peut accepter des connexions entrantes. le comportement du processeur est différent selon que les connexions entrantes sont fournies : - Si aucune connexion entrante n’est spécifiée, le processeur générera des requêtes SQL sur la planification de processeur spécifiée. Le langage d’expression est pris en charge pour de nombreux champs, mais aucun attribut de FlowFile, n’est disponible. Toutefois, les propriétés seront évaluées en utilisant les propriétés Environnement/Système. - Si des connexions entrantes sont spécifiées et si aucun FlowFile n’est disponible pour une tâche de processeur, aucune action ne sera effectuée. - Si des connexions entrantes sont spécifiées et si un FlowFile est disponible pour une tâche de processeur, les attributs du FlowFile peuvent être utilisés dans le langage d’expression pour des champs tels que Nom de table et autres. Toutefois, les champs Colonnes de valeur maximale et Colonnes à renvoyer doivent être vides ou faire référence aux colonnes disponibles dans chaque table spécifiée.
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 |
Une liste de noms de colonnes séparés par des virgules. Le processeur gardera une trace de la valeur maximale de chaque colonne qui a été renvoyée depuis le début de l’exécution du processeur. L’utilisation de plusieurs colonnes implique un ordre dans la liste des colonnes, et les valeurs de chaque colonne sont censées augmenter plus lentement que les valeurs des colonnes précédentes. Ainsi, l’utilisation de plusieurs colonnes implique une structure hiérarchique des colonnes, qui est généralement utilisée pour partitionner les tables. Ce processeur peut être utilisé pour récupérer uniquement les lignes qui ont été ajoutées/mises à jour depuis la dernière récupération. Notez que certains types JDBC tels que bit/booléen ne contribuent pas à maintenir la valeur maximale, donc les colonnes de ces types ne doivent pas être listées dans cette propriété, car cela entraînera des erreurs pendant le traitement. Si aucune colonne n’est fournie, toutes les lignes de la table seront prises en compte, ce qui peut avoir un impact sur les performances. NOTE : Il est important d’utiliser des noms de colonne de valeur maximale cohérents pour une table donnée pour que la récupération incrémentielle fonctionne correctement. |
Nom de la table |
Nom de la table de base de données à interroger. |
db-fetch-db-type |
Type de base de données pour générer des instructions spécifiques à un service ou à un fournisseur particulier. Le type générique prend en charge la plupart des cas, mais la sélection d’un type spécifique permet un traitement optimal ou propose des fonctionnalités supplémentaires. |
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 |