QueryDatabaseTable 2025.5.31.15¶
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.
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 |
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. |
Definir commit automático |
Permite ativar ou desativar a funcionalidade de commit automático da conexão de DB. O valor padrão é “Nenhum valor definido”. “Nenhum valor definido” deixará o modo de commit automático da conexão de banco de dados inalterado. Para alguns drivers JDBC, como o driver PostgreSQL, é necessário desativar a funcionalidade de commit automático para que a configuração “Tamanho da busca” tenha efeito. Quando o commit automático está ativado, o driver PostgreSQL ignora a configuração “Tamanho da busca” e carrega todas as linhas do conjunto de resultados na memória de uma só vez. Isso pode levar a uma grande quantidade de uso de memória ao executar consultas que buscam grandes conjuntos de dados. Mais detalhes sobre esse comportamento no driver PostgreSQL podem ser encontrados em 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 |
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-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. |