cc-skill-clickhouse-io
掌握 ClickHouse 分析与查询优化
在大型数据集上使用缓慢的分析查询让您困扰?学习 ClickHouse 专有的列式存储模式、查询优化和实时聚合技术,实现高性能分析。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“cc-skill-clickhouse-io”。 创建一个用于每小时市场统计的表
预期结果:
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)
正在使用“cc-skill-clickhouse-io”。 查询过去 30 天的每日活跃用户
预期结果:
SELECT toDate(timestamp) AS date, uniq(user_id) AS daily_active_users FROM events WHERE timestamp >= today() - INTERVAL 30 DAY GROUP BY date ORDER BY date
正在使用“cc-skill-clickhouse-io”。 计算交易规模百分位数(中位数、p95、p99)
预期结果:
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
安全审计
安全This skill is documentation-only containing SQL queries and TypeScript code examples for ClickHouse database operations. All 87 static analyzer findings are false positives: backticks are markdown code fences not shell execution, SQL aggregation functions (uniq, sum, countMerge) are not cryptographic algorithms, and system table queries are legitimate ClickHouse monitoring features. No executable code or security risks detected.
质量评分
你能构建什么
构建分析平台的数据工程师
设计和优化 ClickHouse 表以支持高容量事件跟踪和用户分析,使用物化视图实现实时仪表板。
执行队列分析的分析师
使用 ClickHouse 专有聚合函数在大型数据集上执行留存分析、漏斗转化跟踪和时间序列查询。
集成实时指标的开发人员
实现流式数据摄入和自动化 ETL 管道,将事务数据从 PostgreSQL 同步到 ClickHouse 以支持分析工作负载。
试试这些提示
帮我创建一个 ClickHouse 表用于存储每日市场分析数据,包含日期、market_id、volume 和 trade count 列。使用适合时间查询的适当引擎和分区策略。
我在一个有 1 亿行的表上按 market_name 和 volume 过滤的 ClickHouse 查询很慢。该表按 (date, market_id) 排序。建议优化方案并解释如何重构表或查询以获得更好的性能。
设计一个带有物化视图的 ClickHouse 模式,为实时交易仪表板提供动力,显示每个市场的每小时 volume、trade count 和唯一交易者。包括基础表、物化视图定义和仪表板的示例查询。
创建一个 ClickHouse 查询来计算按注册月份划分的用户留存队列,显示注册后第 0 天、第 1 天、第 7 天和第 30 天的活跃用户。使用包含 user_id 和 timestamp 列的事件表。
最佳实践
- 使用 DATE 或 DateTime 列按时间(月或日)分区表,以优化时间范围查询
- 按最频繁过滤的列排序键,基数最高的列放在前面,以最大化索引使用率
- 使用批量插入而不是单行插入,以显著提高摄入性能
避免
- 使用 SELECT * 而不是指定列 - 不必要地增加 I/O 和内存使用
- 执行小规模频繁插入而不是批量插入 - 导致过多的合并操作并降低性能
- 在查询中依赖 FINAL 子句 - 强制在查询执行前合并数据,显著降低读取速度