clickhouse-io
Ajuda seu agente a otimizar consultas e esquemas no banco de dados ClickHouse. Ele aplica as melhores práticas para cargas de trabalho analíticas de alta performance. Use quando consultas analíticas demoram muito.
O que ela faz
Ajuda a criar e otimizar consultas no banco de dados ClickHouse. Ele oferece exemplos de como organizar seus dados, escrever consultas eficientes e melhorar a velocidade de análise.
Quando usar
- ✓Ao criar tabelas no ClickHouse.
- ✓Quando uma consulta está demorando muito para retornar.
- ✓Ao analisar grandes volumes de dados.
Exemplo do que pedir para a IA
“Como posso otimizar esta consulta ClickHouse para que ela rode mais rápido: SELECT * FROM tabela WHERE coluna_data BETWEEN '2023-01-01' AND '2023-12-31' AND valor > 100?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele usa padrões e exemplos de código específicos do ClickHouse. Você pode ver como estruturar tabelas, escrever consultas que usam os recursos do ClickHouse e aplicar técnicas para acelerar a análise de dados.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill clickhouse-ioOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/clickhouse-io/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões de Análise do ClickHouse
Padrões específicos do ClickHouse para análise de alto desempenho e engenharia de dados.
Quando Ativar
- Projetando esquemas de tabelas do ClickHouse (seleção do motor MergeTree)
- Escrevendo consultas analíticas (agregações, funções de janela, junções)
- Otimizando o desempenho de consultas (poda de partições, projeções, visualizações materializadas)
- Ingerindo grandes volumes de dados (inserções em lote, integração com Kafka)
- Migrando de PostgreSQL/MySQL para ClickHouse para análise
- Implementando dashboards em tempo real ou análises de séries temporais
Visão Geral
ClickHouse é um sistema de gerenciamento de banco de dados (SGBD) orientado a colunas para processamento analítico online (OLAP). Ele é otimizado para consultas analíticas rápidas em grandes conjuntos de dados.
Principais Recursos:
- Armazenamento orientado a colunas
- Compressão de dados
- Execução paralela de consultas
- Consultas distribuídas
- Análises em tempo real
Padrões de Design de Tabelas
Motor MergeTree (Mais Comum)
CREATE TABLE markets_analytics (
date Date,
market_id String,
market_name String,
volume UInt64,
trades UInt32,
unique_traders UInt32,
avg_trade_size Float64,
created_at DateTime
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (date, market_id)
SETTINGS index_granularity = 8192;
ReplacingMergeTree (Deduplicação)
-- For data that may have duplicates (e.g., from multiple sources)
CREATE TABLE user_events (
event_id String,
user_id String,
event_type String,
timestamp DateTime,
properties String
) ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(timestamp)
ORDER BY (user_id, event_id, timestamp)
PRIMARY KEY (user_id, event_id);
AggregatingMergeTree (Pré-agregação)
-- For maintaining aggregated metrics
CREATE TABLE market_stats_hourly (
hour DateTime,
market_id String,
total_volume AggregateFunction(sum, UInt64),
total_trades AggregateFunction(count, UInt32),
unique_users AggregateFunction(uniq, String)
) ENGINE = AggregatingMergeTree()
PARTITION BY toYYYYMM(hour)
ORDER BY (hour, market_id);
-- Query aggregated data
SELECT
hour,
market_id,
sumMerge(total_volume) AS volume,
countMerge(total_trades) AS trades,
uniqMerge(unique_users) AS users
FROM market_stats_hourly
WHERE hour >= toStartOfHour(now() - INTERVAL 24 HOUR)
GROUP BY hour, market_id
ORDER BY hour DESC;
Padrões de Otimização de Consultas
Filtragem Eficiente
-- PASS: GOOD: Use indexed columns first
SELECT *
FROM markets_analytics
WHERE date >= '2025-01-01'
AND market_id = 'market-123'
AND volume > 1000
ORDER BY date DESC
LIMIT 100;
-- FAIL: BAD: Filter on non-indexed columns first
SELECT *
FROM markets_analytics
WHERE volume > 1000
AND market_name LIKE '%election%'
AND date >= '2025-01-01';
Agregações
-- PASS: GOOD: Use ClickHouse-specific aggregation functions
SELECT
toStartOfDay(created_at) AS day,
market_id,
sum(volume) AS total_volume,
count() AS total_trades,
uniq(trader_id) AS unique_traders,
avg(trade_size) AS avg_size
FROM trades
WHERE created_at >= today() - INTERVAL 7 DAY
GROUP BY day, market_id
ORDER BY day DESC, total_volume DESC;
-- PASS: Use quantile for percentiles (more efficient than percentile)
SELECT
quantile(0.50)(trade_size) AS median,
quantile(0.95)(trade_size) AS p95,
quantile(0.99)(trade_size) AS p99
FROM trades
WHERE created_at >= now() - INTERVAL 1 HOUR;
Funções de Janela
-- Calculate running totals
SELECT
date,
market_id,
volume,
sum(volume) OVER (
PARTITION BY market_id
ORDER BY date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS cumulative_volume
FROM markets_analytics
WHERE date >= today() - INTERVAL 30 DAY
ORDER BY market_id, date;
Padrões de Inserção de Dados
Inserção em Massa (Recomendado)
import { createClient } from '@clickhouse/client'
const clickhouse = createClient({
url: process.env.CLICKHOUSE_URL ?? 'http://localhost:8123',
username: process.env.CLICKHOUSE_USER,
password: process.env.CLICKHOUSE_PASSWORD
})
// PASS: Inserção em lote (eficiente)
async function bulkInsertTrades(trades: Trade[]) {
await clickhouse.insert({
table: 'trades',
values: trades.map(trade => ({
id: trade.id,
market_id: trade.market_id,
user_id: trade.user_id,
amount: trade.amount,
timestamp: trade.timestamp.toISOString()
})),
format: 'JSONEachRow'
})
}
…
Perguntas frequentes
O que é ClickHouse?
É um banco de dados otimizado para análises rápidas de grandes quantidades de dados.
O que são 'padrões' neste contexto?
São exemplos de como fazer as coisas de forma eficiente e correta no ClickHouse, como organizar dados ou escrever consultas.
Por que 'MergeTree' é importante?
MergeTree é um tipo de tabela no ClickHouse que ajuda a organizar e processar dados de forma muito eficiente para análises.
Detalhes
Descrição original do autor
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads. Use when writing ClickHouse schemas or queries, or when an analytical query is too slow.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #23
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
Coinbase Automation
Ajuda seu agente a gerenciar criptomoedas na Coinbase. Ele pode listar carteiras, contas e dados do seu portfólio.
ComposioHQ/awesome-claude-skills
bids
Ajuda seu agente a organizar e validar dados de neuroimagem. Permite gerenciar dados de exames como ressonância magnética e eletroencefalograma de forma padronizada.
K-Dense-AI/scientific-agent-skills
database-lookup
Faz seu agente buscar informações específicas em bancos de dados públicos. Ele garante que os dados sejam recuperados de forma confiável e rastreável. Útil para obter fatos precisos e verificáveis.
K-Dense-AI/scientific-agent-skills