Você pode entrar na lista de espera da Private Preview aqui.
Pré-requisito
Criando seu primeiro ClickPipe
- Acesse o SQL Console do seu serviço ClickHouse Cloud.
- Selecione o botão
Data Sourcesno menu à esquerda e clique em “Configurar um ClickPipe”
- Selecione GCP Pub/Sub como sua fonte de dados.
- Preencha o formulário informando um nome para o ClickPipe, o ID do projeto GCP e o arquivo JSON da conta de serviço da conta de serviço que recebeu acesso ao Pub/Sub. O ID do projeto deve ter de 6 a 30 caracteres, pode conter letras minúsculas, dígitos e hífens, deve começar com uma letra e não pode terminar com hífen.
-
Selecione o tópico do Pub/Sub do qual será feita a ingestão. A lista suspensa é preenchida automaticamente com os tópicos do seu projeto GCP (em ordem alfabética) assim que suas credenciais forem validadas.
- Formato dos dados. O ClickPipes consulta o registro de esquemas do Pub/Sub quando você seleciona um tópico. Se o tópico tiver um esquema nativo Avro ou Protobuf anexado, o formato dos dados e o esquema serão detectados automaticamente, e os seletores ficarão bloqueados no esquema mais recente do tópico. Tópicos sem esquema nativo usam JSONEachRow por padrão.
- Offset inicial. Escolha onde começar o consumo. As opções disponíveis são Latest (apenas mensagens novas), Earliest (mensagens retidas mais antigas) e Seek to Timestamp (com um seletor de data e hora em UTC).
- Expressão de filtro (opcional). Um filtro de assinatura do Pub/Sub nos atributos da mensagem — por exemplo,
attributes.type = "telemetry". Os filtros se aplicam apenas aos atributos da mensagem, não ao payload, e não podem ser alterados depois que o pipe é criado (alterar o filtro exige recriar o pipe). - A UI mostrará uma mensagem de exemplo do tópico selecionado, com a opção Flatten object, que permite visualizar como um JSON aninhado seria achatado no lado de destino.
- Na próxima etapa, você poderá escolher se deseja fazer a ingestão dos dados em uma nova tabela do ClickHouse ou reutilizar uma já existente. Siga as instruções na tela para modificar o nome da tabela, o esquema e as configurações. Você pode ver uma prévia em tempo real das alterações na tabela de exemplo na parte superior.
- Como alternativa, você pode optar por fazer a ingestão dos dados em uma tabela existente do ClickHouse. Nesse caso, a UI permitirá mapear campos da origem para os campos do ClickHouse na tabela de destino selecionada.
- Por fim, você pode configurar as permissões do usuário interno do ClickPipes.
Full access: com acesso total ao cluster. Isso pode ser útil se você usar uma visão materializada ou um Dicionário com a tabela de destino.Only destination table: com permissõesINSERTapenas na tabela de destino.
- Ao clicar em “Concluir a configuração”, o sistema registrará seu ClickPipe, e você poderá vê-lo listado na tabela de resumo.
- Parabéns! Você configurou com sucesso seu primeiro ClickPipe do Pub/Sub. Ele ficará em execução contínua, fazendo ingestão de dados em tempo real do seu tópico do Pub/Sub para seu serviço no ClickHouse Cloud.
Assinaturas gerenciadas
- A assinatura gerenciada se chama
clickpipes-{pipeID}e é criada no tópico quando o pipe é iniciado. - Ela é configurada com ack deadline de 60 segundos, retenção de mensagens por 7 dias e ordenação de mensagens ativada.
- A criação da assinatura é idempotente — reinicializações do pipe e reagendamentos da réplica reutilizam uma assinatura existente, caso já haja uma apontando para o tópico configurado.
- Durante a descoberta de tópicos e a amostragem de mensagens, o ClickPipes também cria assinaturas efêmeras de curta duração (
clickpipes-discovery-{uuid}), que são excluídas imediatamente após a conclusão da amostragem. - Quando o pipe é excluído, o ClickPipes exclui a assinatura gerenciada como parte do processo de remoção.
Formatos de dados compatíveis
- JSON
- Avro — via esquemas nativos do Pub/Sub (codificação BINARY)
- Protobuf — via esquemas nativos do Pub/Sub (codificação BINARY)
Compressão
- gzip
- zstd
- lz4
- snappy (formato framed)
A detecção automática é segura para formatos baseados em texto, como JSON, pois caracteres ASCII imprimíveis nunca entram em conflito com bytes mágicos de compressão. O payload descomprimido é limitado a 64 MB.
Tipos de dados suportados
Suporte a tipos padrão
- Tipos numéricos básicos - [U]Int8/16/32/64, Float32/64 e BFloat16
- Tipos inteiros grandes - [U]Int128/256
- Tipos decimais
- Boolean
- String
- FixedString
- Date, Date32
- DateTime, DateTime64 (apenas timezones UTC)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- todos os tipos LowCardinality do ClickHouse
- Map com chaves e valores usando qualquer um dos tipos acima (incluindo Nullable)
- Tuple e Array com elementos usando qualquer um dos tipos acima (incluindo Nullable, com apenas um nível de profundidade)
- tipos SimpleAggregateFunction (para destinos AggregatingMergeTree ou SummingMergeTree)
Suporte ao tipo Variant
Variant(String, Int64, DateTime)) para qualquer campo JSON
no fluxo de dados de origem. Devido à forma como o ClickPipes determina qual subtipo de Variant usar, apenas um tipo inteiro ou datetime
pode ser usado na definição de Variant — por exemplo, Variant(Int64, UInt32) não é compatível.
Suporte ao tipo JSON
Colunas virtuais do Pub/Sub
Add Column.
| Name | Description | Recommended Data Type |
|---|---|---|
| _message_id | ID da mensagem do Pub/Sub atribuído pelo broker | String |
| _publish_time | timestamp de publicação do Pub/Sub (precisão de milissegundos, UTC) | DateTime64(3) |
| _ordering_key | chave de ordenação do Pub/Sub (string vazia quando nenhuma chave é definida na mensagem) | String |
| _attributes | atributos da mensagem do Pub/Sub definidos pelo usuário | Map(String, String) |
| _raw_message | payload completo da mensagem do Pub/Sub (desabilitado por padrão) | String |
_raw_message pode ser usado nos casos em que apenas o payload completo da mensagem do Pub/Sub é necessário (como ao usar as funções JsonExtract* do ClickHouse para preencher uma visão materializada). Para esses pipes, remover todas as colunas “não virtuais” pode melhorar o desempenho do ClickPipes.
Limitações
- DEFAULT não tem suporte.
- Por padrão, as mensagens individuais têm limite de 8 MB (sem compressão) ao usar o menor tamanho de réplica (XS) e de 16 MB (sem compressão) com réplicas maiores. Mensagens que excederem esse limite serão rejeitadas com erro. Se você precisar de mensagens maiores, entre em contato com o suporte.
- Os filtros de assinatura do Pub/Sub são imutáveis — alterar a expressão de filtro exige recriar o pipe.
- Os filtros se aplicam apenas aos atributos da mensagem, não ao payload da mensagem.
Desempenho
Processamento em lotes
- O tamanho do lote atingiu o limite máximo (100.000 linhas ou 32MB por 1GB de memória da réplica)
- O lote permaneceu aberto pelo tempo máximo permitido (5 segundos)
Latência
Chaves de ordenação
Escalonamento
Semântica de entrega
_message_id (cada ID de mensagem do Pub/Sub é exclusivo dentro de um tópico).