QueryDatabaseTable 2025.10.2.19

Pacote

org.apache.nifi | nifi-standard-nar

Descrição

Gera uma consulta SQL SELECT, ou usa uma instrução fornecida, e a executa para buscar todas as linhas cujos valores na(s) coluna(s) especificada(s) como Valor máximo (Maximum Value) sejam maiores que os máximos registrados anteriormente. O resultado de consulta será convertido para o formato Avro. A linguagem de expressão é compatível com várias propriedades, mas não são permitidas conexões de entrada. As propriedades de ambiente/sistema podem ser usadas para fornecer valores para qualquer propriedade que contenha a linguagem de expressão. Se você quiser aproveitar os atributos do FlowFile para realizar essas consultas, os processadores GenerateTableFetch e/ou ExecuteSQL podem ser usados para essa finalidade. O streaming é usado para oferecer suporte a conjuntos de resultados arbitrariamente grandes. Esse processador pode ser programado para ser executado em uma expressão de cronômetro ou cron, usando os métodos de programação padrão. Esse processador deve ser executado somente no nó primário. O atributo FlowFile “querydbtable.row.count” indica quantas linhas foram selecionadas.

Tags

database, jdbc, query, select, sql

Requisito de entrada

FORBIDDEN

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.

Tamanho da busca

O número de linhas de resultados a serem obtidas do conjunto de resultados por vez. Essa é uma dica para o driver do banco de dados e pode não ser respeitada e/ou exata. Se o valor especificado for zero, a dica será ignorada. Se estiver usando PostgreSQL, então “Set Auto Commit” (Definir commit automático) deve ser igual a “false” para que “Fetch Size” (Tamanho da busca) tenha efeito.

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.

Definir commit automático

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.

Nome da tabela

O nome da tabela do banco de dados a ser consultada. Quando uma consulta personalizada é usada, essa propriedade é usada para fazer o alias da consulta e aparece como um atributo no 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

Uma consulta SQL personalizada usada para recuperar dados. Em vez de criar uma consulta SQL a partir de outras propriedades, essa consulta será agrupada como uma subconsulta. A consulta não deve ter a instrução ORDER BY.

db-fetch-where-clause

Uma cláusula personalizada a ser adicionada na condição WHERE ao criar consultas SQL.

dbf-default-precision

Quando um valor DECIMAL/NUMBER é escrito como um tipo lógico Avro “decimal”, é necessária uma “precisão” específica que indique o número de dígitos disponíveis. Em geral, a precisão é definida pela definição do tipo de dados da coluna ou pelo padrão dos mecanismos do banco de dados. Entretanto, a precisão indefinida (0) pode ser retornada por alguns mecanismos de banco de dados. A “precisão decimal padrão” é usada ao escrever esses números de precisão indefinida.

dbf-default-scale

Quando um valor DECIMAL/NUMBER é escrito como um tipo lógico Avro “decimal”, é necessária uma “escala” específica que indique o número de dígitos decimais disponíveis. Em geral, a escala é determinada pela definição do tipo de dados da coluna ou pelo padrão dos mecanismos do banco de dados. No entanto, quando a precisão indefinida (0) é retornada, a escala também pode ser incerta com alguns mecanismos de banco de dados. A “escala decimal padrão” é usada ao escrever esses números indefinidos. Se um valor tiver mais casas decimais do que a escala especificada, o valor será arredondado para cima, por exemplo, 1,53 se torna 2 com escala 0 e 1,5 com escala 1.

dbf-normalize

Se você deve alterar os caracteres não compatíveis com o Avro nos nomes das colunas para caracteres compatíveis com o Avro. Por exemplo, os dois pontos e pontos finais serão alterados para sublinhados para criar um registro Avro válido.

dbf-user-logical-types

Se você deve usar os tipos lógicos Avro para as colunas DECIMAL/NUMBER, DATE, TIME e TIMESTAMP. Se estiver desativado, será escrito como cadeia de caracteres. Se ativado, os tipos lógicos são usados e escritos como seu tipo subjacente, especificamente, DECIMAL/NUMBER como “decimal” lógico: escrito como bytes com precisão adicional e metadados de escala, DATE como “date-millis” lógico: escrito como int denotando dias desde a época do Unix (1970-01-01), TIME como “time-millis” lógico: escrito como int denotando milissegundos desde a época do Unix e TIMESTAMP como “timestamp-millis” lógico: escrito como um long denotando milissegundos desde a época do Unix. Se um leitor dos registros Avro gravados também reconhecer esses tipos lógicos, esses valores poderão ser desserializados com mais contexto, dependendo da implementação do leitor.

initial-load-strategy

Como lidar com as linhas existentes na tabela do banco de dados quando o processador for iniciado pela primeira vez (ou quando seu estado tiver sido limpo). A propriedade será ignorada se alguma propriedade dinâmica “initial.maxvalue.*” também tiver sido configurada.

qdbt-max-frags

O número máximo de fragmentos. Se o valor especificado for zero, todos os fragmentos serão retornados. Isso evita o OutOfMemoryError quando esse processador ingere uma tabela enorme. Observação: a configuração dessa propriedade pode resultar em perda de dados, pois os resultados de entrada não são ordenados e os fragmentos podem terminar em limites arbitrários, onde as linhas não são incluídas no conjunto de resultados.

qdbt-max-rows

O número máximo de linhas de resultados que serão incluídas em um único FlowFile. Isso permitirá que você divida conjuntos de resultados muito grandes em vários FlowFiles. Se o valor especificado for zero, todas as linhas serão retornadas em um único FlowFile.

qdbt-output-batch-size

O número de saídas FlowFiles a serem enfileiradas antes de encerrar a sessão do processo. Quando definida como zero, a sessão será confirmada quando todas as linhas do conjunto de resultados tiverem sido processadas e a saída FlowFiles estiver pronta para ser transferida para a relação downstream. Para conjuntos de resultados grandes, isso pode causar um grande pico de FlowFiles a ser transferido no final da execução do processador. Se essa propriedade for definida, quando o número especificado de FlowFiles estiver pronto para transferência, a sessão será confirmada, liberando assim os FlowFiles para a relação downstream. Observação: os atributos maxvalue.* e fragment.count não serão definidos nos FlowFiles quando essa propriedade for definida.

transaction-isolation-level

Essa configuração definirá o nível de isolamento da transação para a conexão com o banco de dados para os drivers que oferecem suporte a essa configuração

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

success

Criou com sucesso o FlowFile a partir do conjunto de resultados de consulta SQL.

Grava atributos

Nome

Descrição

tablename

Nome da tabela que está sendo consultada

querydbtable.row.count

O número de linhas selecionadas pela consulta

fragment.identifier

Se a opção “Máximo de linhas por FlowFile” for definida, todos os FlowFiles 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

Se a opção “Máximo de linhas por FlowFile” for definida, esse será 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. Se o tamanho do lote de saída estiver definido, esse atributo não será preenchido.

fragment.index

Se “Máximo de linhas por FlowFile” estiver definido, então esta propriedade indica a posição do FlowFile na lista de FlowFiles de saída em que todos foram derivados do mesmo FlowFile do conjunto de resultados. Isso pode ser usado em conjunto com o atributo fragment.identifier para saber quais FlowFiles se originaram do mesmo conjunto de resultados de consulta e em que ordem os FlowFiles foram produzidos

maxvalue.*

Cada atributo contém o valor máximo observado de uma “Coluna de valor máximo” especificada. O sufixo do atributo é o nome da coluna. Se o tamanho do lote de saída estiver definido, esse atributo não será preenchido.

Consulte também