executable cria uma tabela com base na saída de uma função definida pelo usuário (UDF) que você define em um script que grava linhas em stdout. O script executável é armazenado no diretório users_scripts e pode ler dados de qualquer origem. Certifique-se de que seu servidor ClickHouse tenha todos os pacotes necessários para executar o script. Por exemplo, se for um script em Python, verifique se o servidor tem os pacotes Python necessários instalados.
Opcionalmente, você pode incluir uma ou mais consultas de entrada que enviam seus resultados para stdin, para que o script possa lê-los.
Uma vantagem importante da função de tabela
executable e do motor de tabela Executable em relação às funções UDF comuns é que funções UDF comuns não podem alterar a quantidade de linhas. Por exemplo, se a entrada tiver 100 linhas, o resultado deverá retornar 100 linhas. Ao usar a função de tabela executable ou o motor de tabela Executable, seu script pode realizar quaisquer transformações de dados que você quiser, incluindo agregações complexas.Sintaxe
executable requer três parâmetros e aceita uma lista opcional de consultas de entrada:
script_name: o nome do arquivo do script, salvo na pastauser_scripts(a pasta padrão da configuraçãouser_scripts_path)format: o formato da tabela geradastructure: o esquema da tabela geradainput_query: uma consulta opcional (ou coleção ou consultas) cujos resultados são passados ao script via stdin
Se você for invocar o mesmo script repetidamente com as mesmas consultas de entrada, considere usar o motor de tabela
Executable.generate_random.py e é salvo na pasta user_scripts. Ele lê um número i e imprime i strings aleatórias, cada uma precedida por um número separado por uma tabulação:
Configurações
send_chunk_header- controla se a contagem de linhas deve ser enviada antes do envio de um fragmento de dados para processamento. O valor padrão éfalse.pool_size— Tamanho do pool. Se 0 for especificado comopool_size, não haverá restrições para o tamanho do pool. O valor padrão é16.max_command_execution_time— Tempo máximo de execução do comando do script executável para processar um bloco de dados. Especificado em segundos. O valor padrão é 10.command_termination_timeout— o script executável deve conter o loop principal de leitura e escrita. Depois que a função de tabela for destruída, o pipe será fechado, e o executável terácommand_termination_timeoutsegundos para encerrar antes que o ClickHouse envie o sinal SIGTERM ao processo filho. Especificado em segundos. O valor padrão é 10.command_read_timeout- timeout para leitura de dados da stdout do comando, em milissegundos. O valor padrão é 10000.command_write_timeout- timeout para gravação de dados na stdin do comando, em milissegundos. O valor padrão é 10000.
Passando resultados de consultas para um script
Executable sobre como passar resultados de consultas para um script. Veja como executar o mesmo script desse exemplo usando a função de tabela executable: