Pré-requisitos
- Uma chave de API com as permissões adequadas
- Uma Role de Admin no Console
Permissões mínimasPara consultar um endpoint de API, a chave de API precisa ter a role de organização
Member com acesso ao serviço Query Endpoints. A role do banco de dados é configurada quando você cria o endpoint.1
Criar uma consulta salva
Se você já tiver uma consulta salva, pode pular esta etapa.Abra uma nova aba de consulta. Para fins de demonstração, usaremos o conjunto de dados do YouTube, que contém aproximadamente 4,5 bilhões de registros. Siga as etapas da seção “Create table” para criar a tabela no seu serviço Cloud e inserir dados nela.Como exemplo de consulta, vamos retornar os 10 uploaders com a maior média de visualizações por vídeo com base em um parâmetroyear informado pelo usuário.year), destacado no trecho acima.
Você pode especificar parâmetros de consulta usando { } junto com o tipo do parâmetro.
O editor de consultas do console SQL detecta automaticamente expressões de parâmetros de consulta do ClickHouse e exibe um campo para cada parâmetro.Vamos executar essa consulta rapidamente para garantir que ela funcione, informando o ano 2010 no campo de variáveis da consulta, no lado direito do editor SQL:Em seguida, salve a consulta:Mais informações sobre consultas salvas podem ser encontradas na seção “Saving a query”.2
Configurar o endpoint da Query API
Os endpoints da Query API podem ser configurados diretamente na tela da consulta clicando no botão Share e selecionandoAPI Endpoint.
Será solicitado que você especifique quais chaves de API poderão acessar o endpoint:Após selecionar uma chave de API, será solicitado que você:- Selecione a role do banco de dados que será usada para executar a consulta (
Full access,Read onlyouCreate a custom role) - Especifique os domínios permitidos para compartilhamento de recursos entre origens (CORS)
curl de exemplo será exibido para que você possa enviar uma solicitação de teste:O comando curl exibido na interface é fornecido abaixo para sua conveniência:3
Parâmetros da API de consulta
Os parâmetros de consulta podem ser especificados com a sintaxe{parameter_name: type}. Esses parâmetros serão detectados automaticamente, e o payload da solicitação de exemplo conterá um objeto queryVariables por meio do qual você poderá passá-los.4
Testes e monitoramento
Depois que um endpoint da Query API for criado, você poderá testá-lo usandocurl ou qualquer outro cliente HTTP:Depois de enviar sua primeira solicitação, um novo botão deverá aparecer imediatamente à direita do botão Share. Ao clicar nele, será aberto um flyout contendo dados de monitoramento sobre a consulta:Detalhes de implementação
Métodos HTTP
Quando usar GET:
- Consultas simples sem dados aninhados complexos
- Os parâmetros podem ser codificados facilmente na URL
- A semântica do HTTP GET favorece o cache
- Variáveis de consulta complexas (arrays, objetos, strings longas)
- Quando o corpo da requisição for preferível por motivos de segurança/privacidade
- Upload de arquivos em streaming ou grandes volumes de dados
Autenticação
Configuração da requisição
Parâmetros da URL
Parâmetros da consulta
Cabeçalhos
Corpo da requisição
Parâmetros
Formatos compatíveis
Respostas
Sucesso
200 OK
A consulta foi executada com êxito.
Códigos de erro
Boas práticas para tratamento de erros
- Certifique-se de incluir credenciais de autenticação válidas na solicitação
- Valide o
queryEndpointIde asqueryVariablesantes de enviar - Implemente um tratamento de erros adequado, com mensagens de erro apropriadas
Atualizando versões de endpoint
- Inclua o header
x-clickhouse-endpoint-upgradecom o valor1 - Inclua o header
x-clickhouse-endpoint-versioncom o valor2
- Suporte a todos os formatos do ClickHouse
- Capacidade de transmitir respostas em streaming
- Desempenho e funcionalidade aprimorados
Exemplos
Requisição básica
Versão 1
- cURL
- JavaScript
Versão 2
- GET (cURL)
- POST (cURL)
- JavaScript
Resposta
Requisição com variáveis de consulta, versão 2 e formato JSONCompactEachRow
- GET (cURL)
- POST (cURL)
- JavaScript
Resposta
Requisição com array nas variáveis da consulta que insere dados em uma tabela
- cURL
- JavaScript
Requisição com a configuração max_threads do ClickHouse definida como 8
- GET (cURL)
- POST (cURL)
- JavaScript
Solicite a resposta e faça o parse como fluxo
- TypeScript
Saída
Inserir um fluxo de dados de um arquivo em uma tabela
./samples/my_first_table_2024-07-11.csv com o seguinte conteúdo: