- Usando SQL
- Usando a UI e seu próprio código (beta pública)
Funções Definidas pelo Usuário em SQL
CREATE FUNCTION a partir de uma expressão lambda.
Neste exemplo, vamos criar uma função definida pelo usuário executável simples, isBusinessHours.
A função verificará se um determinado timestamp está dentro do horário comercial e retornará true se estiver; caso contrário, false.
- Faça login no Cloud Console e abra o SQL Console
- Escreva a seguinte consulta SQL para criar a função
isBusinessHours:
- Execute o comando abaixo para testar sua UDF recém-criada:
- Você pode usar o comando
DROP FUNCTIONpara remover a UDF que acabou de criar:
- As configurações no nível da sessão (definidas pela instrução
SET) não são propagadas para o contexto de execução das UDFs - As configurações de perfil do usuário não são herdadas pelas UDFs
- As configurações no nível da consulta não se aplicam durante a execução das UDFs
Funções Definidas pelo Usuário criadas via UI
isBusinessHours, que verifica se um determinado timestamp está dentro do horário comercial.
Anteriormente, nós a criamos usando SQL, mas desta vez vamos criá-la em Python e configurá-la pela UI.
Crie o arquivo Python
Crie localmente um novo arquivomain.py:requirements.txt, e o ClickHouse Cloud os instalará para você. Como alternativa, você pode empacotar as dependências diretamente no ZIP, mas, nesse caso, deverá incluir os pacotes em cache para ambas as arquiteturas de CPU, portanto o requirements.txt é mais simples. Por exemplo:O ClickHouse Cloud espera encontrar
main.py no arquivo zip que você fará upload pela UI na próxima etapa.
Se o arquivo tiver outro nome, ocorrerá um erro.Empacote as dependências e os arquivos locais
Para incluir pacotes de dependência e quaisquer arquivos locais adicionais (como arquivos wheel, arquivos de configuração ou arquivos de dados), coloque-os no mesmo diretório quemain.py e requirements.txt. Ao criar o arquivo ZIP, inclua todos os arquivos:os.path.dirname(os.path.abspath(__file__)). Isso retorna o caminho absoluto para o diretório em que o main.py está localizado dentro do arquivo ZIP, permitindo acessar outros arquivos incluídos no pacote:- Acessar arquivos de configuração incluídos na sua UDF
- Carregar pacotes wheel para dependências personalizadas
- Referenciar scripts adicionais ou arquivos de dados
Criar uma UDF pela UI
- Na página inicial do Cloud Console, clique no nome da sua organização no menu no canto inferior esquerdo.
- Selecione Funções Definidas pelo Usuário no menu.
- Na página de funções definidas pelo usuário, clique em Set up a UDF. Um painel de configuração é aberto no lado direito da tela.
- Digite um nome para a função. Para este exemplo, use
isBusinessHours. - Selecione um tipo de função: Executable pool ou Executable:
- Executable pool: Um pool de processos persistentes é mantido, e um processo é obtido desse pool para leituras.
- Executable: O script é executado em cada consulta.
- Para este exemplo, use as configurações padrão. Para ver a lista completa dos parâmetros de configuração, consulte Funções definidas pelo usuário executáveis.
- Clique em Browse File para fazer upload do arquivo
.zipcriado no início deste tutorial. - Adicione um novo argumento. Para este exemplo, adicione o argumento
timestampcom o tipoDateTime. - Selecione um tipo de retorno. Para este exemplo, selecione
Bool. - Clique em Create UDF. Uma caixa de diálogo exibe o status atual da compilação.
- Se houver algum problema, o status muda para error.
- Caso contrário, o status avança de building para provisioning. Seu serviço precisa estar ativo para concluir o provisioning. Se o serviço estiver ocioso, clique em Wake Up Service no painel UDF details, ao lado do nome do serviço.
- Quando a implantação for concluída, o status muda para deployed.
Teste sua UDF
- volte à página inicial do SQL Console clicando em Settings - voltar para a visão do seu serviço no canto superior esquerdo da página
- clique em SQL Console no menu à esquerda
- escreva a seguinte consulta:
Criar uma nova versão
Para alterar o código de uma UDF, crie uma nova versão. O painel Edit gerencia apenas a quais serviços uma UDF está atribuída; fazer upload de um arquivo ali não substituirá o código implantado.- Na página inicial do Cloud Console, clique no nome da sua organização no menu no canto inferior esquerdo.
- Selecione Funções Definidas pelo Usuário no menu.
- Clique nos três pontos em Ações da UDF
isBusinessHourse, em seguida, em Criar nova versão - Faça upload de um arquivo zip com o código modificado ou altere as configurações e clique em Criar nova versão