QueryDatabaseTableRecord 2025.10.2.19¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Description¶
Génère une requête SQL select, ou utilise une instruction fournie et l’exécute pour récupérer toutes les lignes dont les valeurs dans la (les) colonne(s) Valeur maximale spécifiée(s) sont plus grandes que les maxima précédemment observées. Le résultat de la requête sera converti au format spécifié par le Record Writer. L’Expression Language est prise en charge pour plusieurs propriétés, mais aucune connexion entrante n’est autorisée. Les propriétés de l’environnement et/ou du système peuvent être utilisées pour fournir des valeurs à toute propriété contenant l’Expression Language. Si l’on souhaite exploiter les attributs des fichiers de flux pour effectuer ces requêtes, les processeurs GenerateTableFetch et/ou ExecuteSQL peuvent être utilisés à cette fin. Le flux est utilisé pour prendre en charge des jeux de résultats de taille arbitraire. Ce processeur peut être planifié pour s’exécuter sur un temporisateur ou une expression cron, à l’aide des méthodes de planification standard. Ce processeur est destiné à être exécuté sur le nœud principal uniquement. L’attribut FlowFile “querydbtable.row.count” indique le nombre de lignes sélectionnées.
Exigences en matière d’entrées¶
FORBIDDEN
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. |
Fetch Size |
Nombre de lignes de résultats à extraire du jeu de résultats à la fois. Il s’agit d’une indication au pilote de la base de données qui peut ne pas être respectée et/ou ne pas être exacte. Si la valeur spécifiée est zéro, l’indication est ignorée. Si vous utilisez PostgreSQL, le paramètre “Set Auto Commit” doit être égal à “false” pour que le paramètre “Fetch Size” soit pris en compte. |
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. |
Set Auto Commit |
Allows enabling or disabling the auto commit functionality of the DB connection. Default value is “No value set”. “No value set” will leave the db connection “s auto commit mode unchanged. For some JDBC drivers such as PostgreSQL driver, it is required to disable the auto commit functionality to get the’Fetch Size “setting to take effect. When auto commit is enabled, PostgreSQL driver ignores’Fetch Size’setting and loads all rows of the result set to memory at once. This could lead for a large amount of memory usage when executing queries which fetch large data sets. More Details of this behaviour in PostgreSQL driver can be found in https://jdbc.postgresql.org//documentation/head/query.html. |
Nom de la table |
Nom de la table de base de données à interroger. Lorsqu’une requête personnalisée est utilisée, cette propriété est utilisée pour aliaser la requête et apparaît comme un attribut sur le FlowFile. |
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-sql-query |
Une requête personnalisée SQL utilisée pour récupérer les données. Au lieu de construire une requête SQL à partir d’autres propriétés, cette requête sera enveloppée en tant que sous-requête. La requête ne doit pas comporter d’instruction ORDER BY. |
db-fetch-where-clause |
Une clause personnalisée à ajouter dans la condition WHERE lors de l’élaboration des requêtes SQL. |
dbf-default-precision |
Lorsqu’une valeur DECIMAL/NUMBER est écrite sous la forme d’un type logique Avro décimal, une précision spécifique indiquant le nombre de chiffres disponibles est exigée. En général, la précision est définie par la définition du type de données de la colonne ou par les moteurs de base de données par défaut. Toutefois, certains moteurs de base de données peuvent renvoyer une précision non définie (0). La précision décimale par défaut est utilisée pour écrire des nombres dont la précision n’est pas définie. |
dbf-default-scale |
Lorsqu’une valeur DECIMAL/NUMBER est écrite sous la forme d’un type logique Avro décimal, une échelle spécifique indiquant le nombre de chiffres décimaux disponibles est exigée. En général, l’échelle est définie par la définition du type de données de la colonne ou par les moteurs de base de données par défaut. Toutefois, lorsque la précision renvoyée est indéfinie (0), l’échelle peut également être incertaine avec certains moteurs de base de données. L’échelle décimale par défaut est utilisée lors de l’écriture de ces nombres non définis. Si une valeur comporte plus de décimales que l’échelle spécifiée, la valeur sera arrondie à l’unité supérieure, par exemple 1,53 devient 2 avec l’échelle 0, et 1,5 avec l’échelle 1. |
dbf-user-logical-types |
Utiliser ou non les types logiques Avro pour les colonnes DECIMAL/NUMBER, DATE, TIME et TIMESTAMP. Si cette option est désactivée, les données sont écrites sous forme de chaîne. Si elle est activée, les types logiques sont utilisés et écrits comme leur type sous-jacent, à savoir DECIMAL/NUMBER en tant que « décimal » logique, écrit sous forme d’octets avec une précision supplémentaire et des métadonnées d’échelle, DATE en tant que « date-millis » logique, écrit sous forme d’entier indiquant les jours depuis l’époque Unix (1970-01-01), TIME en tant que « time-millis » logique, écrit sous forme d’entier indiquant les millisecondes depuis l’époque Unix, et TIMESTAMP en tant que « timestamp-millis » logique, écrit sous forme d’entier long indiquant les millisecondes depuis l’époque Unix. Si un lecteur d’enregistrements Avro écrits connaît également ces types logiques, ces valeurs peuvent être désérialisées avec plus de contexte en fonction de l’implémentation du lecteur. |
stratégie de charge initiale |
Comment traiter les lignes existantes dans la table de base de données lorsque le processeur est démarré pour la première fois (ou que son état a été effacé). La propriété sera ignorée si une propriété dynamique “initial.maxvalue.*” a également été configurée. |
qdbt-max-frags |
Le nombre maximum de fragments. Si la valeur de retour spécifiée est zéro, tous les fragments sont renvoyés. Cela permet d’éviter l’erreur OutOfMemoryError lorsque ce processeur ingère une table volumineuse. NOTE : Le paramétrage de cette propriété peut entraîner une perte de données, car les résultats entrants ne sont pas ordonnés et les fragments peuvent se terminer à des limites arbitraires où les lignes ne sont pas incluses dans le jeu de résultats. |
qdbt-max-rows |
Le nombre maximum de lignes de résultats qui seront incluses dans un seul FlowFile. Cela vous permettra de diviser de très grands jeux de résultats en plusieurs FlowFiles. Si la valeur de retour spécifiée est zéro, toutes les lignes sont renvoyées dans un seul FlowFile. |
qdbt-output-batch-size |
Le nombre de sorties FlowFiles à mettre en file d’attente avant de valider la session de processus. Si cette valeur est fixée à zéro, la session sera validée lorsque toutes les lignes du jeu de résultats auront été traitées et que les sorties FlowFiles seront prêtes à être transférées vers la relation en aval. Pour les jeux de résultats volumineux, cela peut entraîner le transfert d’une grande quantité de FlowFiles à la fin de l’exécution du processeur. Si cette propriété est définie, lorsque le nombre spécifié de FlowFiles est prêt à être transféré, la session est engagée, ce qui libère les FlowFiles pour la relation en aval. NOTE : les attributs maxvalue.* et fragment.count ne seront pas paramétrés sur FlowFiles lorsque cette propriété est définie. |
qdbtr-normalize |
Modifier ou non les caractères des noms de colonnes lors de la création du schéma de sortie. Par exemple, les deux-points et les points seront remplacés par des traits de soulignement. |
qdbtr-record-writer |
Spécifie le Controller Service à utiliser pour écrire les résultats dans un FlowFile. Le Record Writer peut utiliser Inherit Schema pour émuler le comportement du schéma déduit, c’est-à-dire qu’un schéma explicite n’a pas besoin d’être défini dans le rédacteur, et sera fourni par la même logique que celle utilisée pour déduire le schéma à partir des types de colonnes. |
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 |
|---|---|
success |
Création réussie du FlowFile à partir du jeu de résultats de la requête SQL. |
Écrit les attributs¶
Nom |
Description |
|---|---|
tablename |
Nom de la table faisant l’objet de la requête |
querydbtable.row.count |
Le nombre de lignes sélectionnées par la requête |
fragment.identifier |
Si l’option « Max Rows Per Flow File » est activée, tous les FlowFiles d’un 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 |
Si l’option « Max Rows Per Flow File » est paramétrée, il s’agit du nombre total de lignes FlowFiles produites 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. Si la taille du lot de sortie est paramétrée, cet attribut ne sera pas renseigné. |
fragment.index |
Si l’option « Max Rows Per Flow File » est activée, il s’agit de la position de ce FlowFile dans la liste des FlowFiles sortants qui ont tous été dérivés du même FlowFile de jeu de résultats. Cet attribut peut être utilisé en conjonction avec l’attribut fragment.identifier pour savoir quels FlowFiles proviennent du même jeu de résultats de requête et dans quel ordre les FlowFiles ont été produits |
maxvalue.* |
Chaque attribut contient la valeur maximale observée d’une “Maximum-value Column” spécifiée. Le suffixe de l’attribut est le nom de la colonne. Si la taille du lot de sortie est paramétrée, cet attribut ne sera pas renseigné. |
mime.type |
L’ensemble de l’attribut mime.type est défini sur le type MIME spécifié par le Record Writer. |
record.count |
Le nombre d’enregistrements générés en sortie par le Record Writer. |
Cas d’utilisation¶
Récupération de toutes les lignes d’une table de base de données. |
Chargement incrémentiel d’une seule table de base de données, en récupérant uniquement les nouvelles lignes au fur et à mesure qu’elles sont ajoutées à la table. |
Cas d’utilisation impliquant d’autres composants¶
Chargement incrémentiel de plusieurs tables de base de données, en récupérant uniquement les nouvelles lignes au fur et à mesure qu’elles sont ajoutées aux tables. |