GenerateTableFetch 2025.5.31.15¶
Pacote¶
org.apache.nifi | nifi-standard-nar
Descrição¶
Gera consultas de seleção SQL que buscam “páginas” de linhas de uma tabela. A propriedade de tamanho da partição, juntamente com a contagem de linhas da tabela, determina o tamanho e o número de páginas e FlowFiles gerados. Além disso, a busca incremental pode ser obtida com a configuração das colunas de valor máximo (Maximum-Value Columns), que faz com que o processador rastreie os valores máximos das colunas e, assim, busque apenas as linhas cujos valores das colunas excedam os máximos observados. Esse processador deve ser executado somente no nó primário. Esse processador pode aceitar conexões de entrada; o comportamento do processador é diferente se forem fornecidas conexões de entrada: – Se nenhuma conexão de entrada for especificada, o processador gerará consultas SQL no cronograma do processador especificado. A linguagem de expressão é compatível com muitos campos, mas não há atributos de FlowFile disponíveis. No entanto, as propriedades serão avaliadas usando as propriedades de ambiente/sistema. – Se a(s) conexão(ões) de entrada for(em) especificada(s) e nenhum FlowFile estiver disponível para uma tarefa de processador, nenhum trabalho será realizado. – Se a(s) conexão(ões) de entrada for(em) especificada(s) e um FlowFile estiver disponível para uma tarefa de processamento, os atributos do FlowFilepoderão ser usados na linguagem de expressão para campos como Nome da tabela e outros. No entanto, os campos de coluna de valor máximo e de colunas a retornar (Columns to Return) devem estar vazios ou se referir a colunas disponíveis em cada tabela especificada.
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 |
Uma lista de nomes de coluna separados por vírgulas. O processador manterá o controle do valor máximo de cada coluna que foi retornada desde que o processador começou a funcionar. O uso de várias colunas implica uma ordem para a lista de colunas, e espera-se que os valores de cada coluna aumentem mais lentamente do que os valores das colunas anteriores. Portanto, o uso de várias colunas implica uma estrutura hierárquica de colunas, que geralmente é usada para particionar tabelas. Esse processador pode ser usado para recuperar apenas as linhas que foram adicionadas/atualizadas desde a última recuperação. Observe que alguns tipos de JDBC, como bit/booliano, não são propícios à manutenção do valor máximo, portanto, as colunas desses tipos não devem ser listadas nessa propriedade e resultarão em erro(s) durante o processamento. Se nenhuma coluna for fornecida, todas as linhas da tabela serão consideradas, o que pode ter um impacto no desempenho. NOTE: é importante usar nomes de coluna de valor máximo consistentes para uma determinada tabela para que a busca incremental funcione corretamente. |
Nome da tabela |
O nome da tabela do banco de dados a ser consultada. |
db-fetch-db-type |
O tipo de banco de dados para gerar instruções específicas de um determinado serviço ou fornecedor. O tipo genérico oferece suporte à maioria dos casos, mas selecionar um tipo específico permite um processamento otimizado ou recursos adicionais. |
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 |