GenerateTableFetch 2025.5.31.15¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Description¶
Génère des requêtes SQL SELECT qui récupèrent des « pages » de lignes d’une table. La propriété de taille de la 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, il est possible de procéder à une récupération incrémentielle en spécifiant la propriété Maximum-value Columns, ce qui amène le processeur à suivre les valeurs maximales des colonnes, et donc à ne récupérer que les lignes dont les valeurs des colonnes dépassent les valeurs maximales observées. Ce processeur est destiné à être exécuté sur le nœud principal uniquement. Ce processeur peut accepter des connexions entrantes, et son comportement est différent si des connexions entrantes sont fournies : - Si aucune connexion entrante n’est spécifiée, le processeur génère des requêtes SQL selon la planification spécifiée. Expression Language est pris en charge pour de nombreux champs, mais aucun attribut FlowFile n’est disponible. Toutefois, les propriétés seront évaluées à l’aide des propriétés de l’environnement et/ou du système. - Si une ou plusieurs connexions entrantes sont spécifiées et qu’aucun FlowFile n’est disponible pour une tâche de processeur, aucun travail ne sera effectué. - Si une ou plusieurs connexions entrantes sont spécifiées et qu’une tâche de processeur dispose d’un FlowFile, les attributs de ce FlowFilepeuvent être utilisés dans une formule Expression Langage pour des champs tels que « Table Name » et d’autres champs. Toutefois, les champs Maximum-value Columns et Columns to Return doivent être vides ou faire référence à des 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 garde trace de la valeur maximale qui a été renvoyée pour chaque colonne depuis le début de son exécution. L’utilisation de plusieurs colonnes implique un ordre dans la liste des colonnes, et les valeurs de chaque colonne sont censés augmenter plus lentement que celles 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 la partition des 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/boolean ne sont pas propices au maintien de la valeur maximale, de sorte que les colonnes de ces types ne doivent pas être annoncées dans cette propriété, car cela entraînerait une ou plusieurs erreurs lors du 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. Remarque : il est important d’utiliser des noms de colonne à valeur maximale cohérents pour une table donnée afin 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 d’optimiser le traitement ou d’offrir des fonctions 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 |