QueryDatabaseTableRecord 2025.5.31.15

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.

Balises

database, jdbc, query, record, select, sql

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

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.

Set Auto Commit

Permet d’activer ou de désactiver la fonctionnalité de validation automatique de la connexion DB. La valeur par défaut est “No value set”. L’option “No value set” ne modifie pas le mode de validation automatique de la connexion à la base de données. Pour certains pilotes JDBC tels que le pilote PostgreSQL, il est exigé de désactiver la fonctionnalité de validation automatique pour que le paramètre “Fetch Size” prenne effet. Lorsque la validation automatique est activée, le pilote PostgreSQL ignore le paramètre “Fetch Size” et charge toutes les lignes du jeu de résultats dans la mémoire en une seule fois. Cela peut entraîner une utilisation importante de la mémoire lors de l’exécution de requêtes qui récupèrent des ensembles de données volumineux. Vous trouverez plus de détails sur ce comportement du pilote PostgreSQL à l’adresse suivante : 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

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-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.

Voir aussi :