GenerateTableFetch 2025.10.2.19¶
Pacote¶
org.apache.nifi | nifi-standard-nar
Descrição¶
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.
Requisito de entrada¶
ALLOWED
Oferece suporte a propriedades dinâmicas confidenciais¶
falso
Propriedades¶
Propriedade |
Descrição |
|---|---|
Colunas a retornar |
Uma lista de nomes de colunas separada por vírgulas a ser usada na consulta. Se o seu banco de dados exigir um tratamento especial dos nomes (citação, por exemplo), cada nome deverá incluir esse tratamento. Se nenhum nome de coluna for fornecido, todas as colunas da tabela especificada serão retornadas. NOTE: é importante usar nomes de coluna consistentes para uma determinada tabela para que a busca incremental funcione corretamente. |
Serviço de pool de conexões de banco de dados |
O Controller Service usado para obter uma conexão com o banco de dados. |
Serviço de dialeto de banco de dados |
Serviço de dialeto de banco de dados para gerar instruções específicas para um determinado serviço ou fornecedor. |
Tempo máximo de espera |
A quantidade máxima de tempo permitida para uma consulta de seleção SQL em execução; zero significa que não há limite. O tempo máximo inferior a 1 segundo será igual a 0. |
Colunas de valor máximo |
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. |
Nome da tabela |
O nome da tabela do banco de dados a ser consultada. |
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 |
Uma cláusula personalizada a ser adicionada na condição WHERE ao criar consultas SQL. |
gen-table-column-for-val-partitioning |
O nome de uma coluna cujos valores serão usados para o particionamento. O comportamento padrão é usar números de linha no conjunto de resultados para o particionamento em “páginas” a serem buscadas no banco de dados, usando uma estratégia de deslocamento/limite. No entanto, para determinados bancos de dados, pode ser mais eficiente, nas circunstâncias certas, usar os próprios valores das colunas para definir as “páginas”. Essa propriedade só deve ser usada quando as consultas padrão não estiverem funcionando bem, quando não houver uma coluna de valor máximo ou uma única coluna de valor máximo cujo tipo possa ser convertido em um número inteiro longo (ou seja, não é uma data ou um carimbo de data/hora) e os valores da coluna estiverem distribuídos uniformemente e não forem esparsos, para obter o melhor desempenho. |
gen-table-custom-orderby-column |
O nome de uma coluna a ser usada para ordenar os resultados se Colunas de valor máximo (Max-Value Columns) não forem fornecidas e o particionamento estiver ativado. Essa propriedade é ignorada se Max-Value Columns estiver definida ou Partition Size = 0. NOTE: se nem Max-Value Columns nem Custom ORDER BY Column forem definidos, dependendo do banco de dados/driver, o processador poderá informar um erro e/ou o SQL gerado poderá resultar em linhas ausentes e/ou duplicadas. Isso ocorre porque, sem uma ordenação explícita, a busca de cada partição é feita usando uma ordenação arbitrária. |
gen-table-fetch-partition-size |
O número de linhas de resultado a serem obtidas por cada instrução SQL gerada. O número total de linhas na tabela dividido pelo tamanho da partição fornece o número de instruções SQL (ou seja, FlowFiles) geradas. Um valor de zero indica que um único FlowFile deve ser gerado, cuja instrução SQL buscará todas as linhas da tabela. |
gen-table-output-flowfile-on-zero-results |
Dependendo das propriedades especificadas, a execução desse processador pode não resultar na geração de nenhuma instrução SQL. Quando essa propriedade for verdadeira, um FlowFile vazio será gerado (tendo o pai do FlowFile de entrada, se presente) e transferido para a relação “success”. Quando essa propriedade for falsa, FlowFiles de saída não serão gerados. |
Gerenciamento do estado¶
Escopos |
Descrição |
|---|---|
CLUSTER |
Depois de realizar uma consulta na tabela especificada, os valores máximos da(s) coluna(s) especificada(s) serão mantidos para uso em futuras execuções da consulta. Isso permite que o processador busque apenas os registros que têm valores máximos maiores que os valores retidos. Isso pode ser usado para busca incremental, busca de linhas recém-adicionadas etc. Para limpar os valores máximos, limpe o estado do processador de acordo com a documentação do gerenciamento de estado |
Relações¶
Nome |
Descrição |
|---|---|
failure |
Essa relação é usada somente quando a execução da consulta SQL (usando um FlowFile de entrada) tiver falhado. O FlowFile de entrada será penalizado e encaminhado para essa relação. Se nenhuma conexão de entrada for especificada, essa relação não será usada. |
success |
Criou com sucesso o FlowFile a partir do conjunto de resultados de consulta SQL. |
Grava atributos¶
Nome |
Descrição |
|---|---|
generatetablefetch.sql.error |
Se o processador tiver conexões de entrada e o processamento de um FlowFile de entrada causar uma exceção SQL, o FlowFile será encaminhado para falha e esse atributo será definido como a mensagem de exceção. |
generatetablefetch.tableName |
O nome da tabela do banco de dados a ser consultada. |
generatetablefetch.columnNames |
A lista de nomes de colunas separados por vírgulas usada na consulta. |
generatetablefetch.whereClause |
Cláusula Where usada na consulta para obter as linhas esperadas. |
generatetablefetch.maxColumnNames |
A lista de nomes de colunas separados por vírgulas usada para manter o controle dos dados que foram retornados desde que o processador começou a funcionar. |
generatetablefetch.limit |
O número de linhas de resultado a serem obtidas pela instrução SQL. |
generatetablefetch.offset |
Deslocamento a ser usado para recuperar a partição correspondente. |
fragment.identifier |
Todos os FlowFiles gerados a partir do mesmo conjunto de resultados de consulta terão o mesmo valor para o atributo fragment.identifier. Isso pode ser usado para correlacionar os resultados. |
fragment.count |
Esse é o número total de FlowFiles produzido por um único ResultSet. Isso pode ser usado em conjunto com o atributo fragment.identifier para saber quantos FlowFiles pertencem ao mesmo ResultSet de entrada. |
fragment.index |
Esta é a posição deste FlowFile na lista de FlowFiles de saída que foram todos gerados a partir da mesma execução. Isso pode ser usado em conjunto com o atributo fragment.identifier para saber quais FlowFiles se originaram da mesma execução e em que ordem os FlowFiles foram produzidos |