Clickhouse system queries
Skill FrankChen021/datastoria/resources/skills/clickhouse-system-queries
AI-native ClickHouse console for your cluster diagnostics and query generation, optimization and data visualization.
npx -y skills add FrankChen021/datastoria --skill clickhouse-system-queriesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Query ClickHouse system tables to inspect query logs, monitor cluster health, check replication status, and analyze slow queries. Use when the user mentions "system tables", "query_log", "ClickHouse monitoring", "cluster status", "slow queries", or asks to diagnose ClickHouse operational issues.
SKILL.md
2.9 KB, as published. Nobody here has run it
ClickHouse System Queries Skill
Use this skill when the user asks for operational inspection on ClickHouse system.* tables.
Current table coverage:
system.query_logviareferences/system-query-log.md
Relationship to sql-expert:
sql-experthandles general SQL generation and user/business tables.- This skill handles system-table operational patterns and routing to table-specific references.
System Metrics and ProfileEvents
- Confirm column shape from schema/reference before writing predicates.
- If the user named an exact metric, pass it in the
columnslist viaexplore_schemainstead of loading the full table schema. - If
ProfileEventsis aMap, access entries asProfileEvents['Name']. If flattened, useProfileEvent_Name.
Example — map vs flattened access:
-- Map access
SELECT ProfileEvents['DistributedConnectionFailTry'] AS fails
FROM system.query_log WHERE event_date = today();
-- Flattened column access
SELECT ProfileEvent_DistributedConnectionFailTry AS fails
FROM system.query_log WHERE event_date = today();
Workflow
-
Resolve target — identify system table and intent. Inherit the most recent time window from conversation, or default to last 60 minutes.
-
Load reference — for
system.query_log, callskill_resourceto loadreferences/system-query-log.mdbefore writing any SQL. For unsupported tables, fall back tosql-expert. -
Execute — choose the right tool:
search_query_logfor standard ranked searches and filtered lookupsexecute_sqlfor visualization, time-bucketed aggregation, trends, or histograms
-- search_query_log: standard lookup -- finds top 10 slowest queries in the last hour -- execute_sql: time-bucketed visualization SELECT toStartOfFiveMinutes(event_time) AS bucket, count() AS queries, avg(query_duration_ms) AS avg_ms FROM system.query_log WHERE event_date = today() AND event_time > now() - INTERVAL 1 HOUR GROUP BY bucket ORDER BY bucketDefault to
LIMIT 50unless the user specifies otherwise. -
Summarize with concise findings and next actions.
Guardrails
- Always apply time bounds for log-like system tables
- Always use the table-specific reference when available
- Never generate
system.query_logSQL untilreferences/system-query-log.mdis loaded in the current turn - Never use
search_query_logfor chart-oriented requests - Never omit
LIMITin exploratory queries