Skip to content
OpenSmartRoute
Skillv1.0.0

clickhouse-data-handling

Handle data lifecycle in ClickHouse — TTL expiration, data deletion (GDPR), column-level encryption, and audit logging with real ClickHouse SQL. Use when implementing data retention, fulfilling GDPR/C

by jeremylongshore(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from jeremylongshore/tons-of-skills-marketplace (skills/.curated/clickhouse-data-handling/SKILL.md). Install upstream with npx skills add jeremylongshore/tons-of-skills-marketplace --skill clickhouse-data-handling. Copyright stays with the author (MIT).

ClickHouse Data Handling

Overview

Manage the full data lifecycle in ClickHouse: TTL-based expiration, GDPR/CCPA deletion, data masking, partition management, and audit trails. This skill produces migration SQL and TypeScript client code you write into your project, then verifies the results against ClickHouse system.* tables.

The workflow below is the high-level path — each step links to the full, copy-ready SQL/TypeScript in references/implementation.md, with end-to-end scenarios in references/examples.md.

Prerequisites

Before starting, confirm you have:

  • Populated ClickHouse tables to operate on (schema comes from the companion skill clickhouse-core-workflow-a).
  • A written data-retention policy: how long each data class is kept, and which columns hold PII. The Data Classification table maps each class to its ClickHouse handling.
  • ClickHouse 23.3+ if you plan to use lightweight DELETE FROM; older versions must use mutation-based ALTER TABLE ... DELETE.
  • Access to system.mutations and system.parts to verify deletions.

Instructions

Work the six steps in order for a new table, or jump to the one you need. Use Write/Edit to place the generated SQL into a migration file (or the TypeScript into your data-access layer), then run it against ClickHouse and verify via the system.* queries. Full code for each step lives in references/implementation.md.

  1. TTL-based expiration — attach a TTL clause so data self-deletes, or use tiered TO VOLUME storage (hot → cold → delete) and column-level TTL to null out PII while keeping the row. Skeleton:

    ALTER TABLE analytics.events
        MODIFY TTL created_at + INTERVAL 90 DAY;
  2. GDPR/CCPA deletion — choose lightweight DELETE FROM (23.3+), verifiable ALTER TABLE ... DELETE (the compliant path), or DROP PARTITION for bulk. Always confirm completion in system.mutations.

  3. Masking & anonymization — expose a CREATE VIEW that sipHash64-hashes identifiers and shows only email domains, gated by a dictionary allowlist.

  4. DSAR export & delete — the TypeScript exportUserData / deleteUserData helpers loop every table for one user_id and log each deletion.

  5. Audit trail — an immutable, TTL-free audit_log table partitioned by month so retention actions are provable.

  6. Retention monitoring — a system.tables/system.parts join that reports size, age span, and any MergeTree table missing a TTL.

Data Classification

Category Examples Handling in ClickHouse
PII Email, name, IP Column-level TTL, masking views, deletion support
Sensitive API keys, tokens Never store in ClickHouse — use secret managers
Business Event counts, metrics Standard TTL, aggregate for long-term retention
Audit Access logs No TTL, immutable, partitioned by month

Output

Applying this skill produces:

  • Migration SQLCREATE TABLE/ALTER TABLE statements adding TTL clauses, masking views, and the immutable audit_log table, ready to commit as a migration file.
  • TypeScript client codeexportUserData and deleteUserData functions for DSAR and erasure requests against @clickhouse/client.
  • Verification queriessystem.mutations / system.parts / system.tables SELECTs that prove a deletion finished and flag tables missing retention.
  • An audit record — one immutable audit_log row per compliance action.

Error Handling

Issue Cause Solution
Mutation stuck Large table rewrite Check system.mutations, cancel if needed
TTL not expiring No merges running OPTIMIZE TABLE ... FINAL to force
DELETE not working Old ClickHouse version Use ALTER TABLE DELETE (mutation)
Export timeout Too much user data Add LIMIT or export in batches

Examples

A minimal TTL attach — the smallest useful action:

ALTER TABLE analytics.events
    MODIFY TTL created_at + INTERVAL 90 DAY;
OPTIMIZE TABLE analytics.events FINAL;   -- force the cleanup now

Full worked scenarios — a complete GDPR erasure (export → verifiable delete → audit log), standing up a retention-safe table with tiered storage, and auditing for tables missing a retention policy — are in references/examples.md. The step-by-step SQL and TypeScript each example composes lives in references/implementation.md.

Resources

Next Steps

For role-based access control that restricts who can run these deletion and export operations, see the companion skill clickhouse-enterprise-rbac. For the table schemas these lifecycle rules attach to, see clickhouse-core-workflow-a.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jeremylongshore-tons-of-skills-marketplace-clickhouse-da-916f5c/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jeremylongshore-tons-of-skills-marketplace-clickhouse-da-916f5c.ocm.jsonjson
{
  "ocm": "1",
  "id": "jeremylongshore-tons-of-skills-marketplace-clickhouse-da-916f5c",
  "kind": "skill",
  "name": "clickhouse-data-handling",
  "description": "Handle data lifecycle in ClickHouse — TTL expiration, data deletion (GDPR), column-level encryption, and audit logging with real ClickHouse SQL. Use when implementing data retention, fulfilling GDPR/CCPA deletion requests, or managing sensitive data in ClickHouse. Trigger with \"clickhouse data retention\", \"clickhouse TTL\", \"clickhouse GDPR\", \"delete data clickhouse\", \"clickhouse data lifecycle\", \"clickhouse PII\".",
  "publisher": "jeremylongshore",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "legal",
      "coding"
    ],
    "tags": [
      "skill-md",
      "saas",
      "database",
      "analytics",
      "clickhouse",
      "olap",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Handle data lifecycle in ClickHouse — TTL expiration, data deletion (GDPR), column-level encryption, and audit logging with real ClickHouse SQL. Use when implementing data retention, fulfilling GDPR/CCPA deletion requests, or managing sensitive data in ClickHouse. Trigger with \"clickhouse data retention\", \"clickhouse TTL\", \"clickhouse GDPR\", \"delete data clickhouse\", \"clickhouse data lifecycle\", \"clickhouse PII\"."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/jeremylongshore/tons-of-skills-marketplace",
      "path": "skills/.curated/clickhouse-data-handling/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/jeremylongshore/tons-of-skills-marketplace/blob/HEAD/skills/.curated/clickhouse-data-handling/SKILL.md",
      "key": "jeremylongshore/tons-of-skills-marketplace/skills/.curated/clickhouse-data-handling/SKILL.md"
    },
    "compatibility": "Designed for Claude Code",
    "allowed_tools": [
      "Read,",
      "Write,",
      "Edit"
    ],
    "license": "MIT"
  },
  "instructions": "# ClickHouse Data Handling\n\n## Overview\n\nManage the full data lifecycle in ClickHouse: TTL-based expiration, GDPR/CCPA\ndeletion, data masking, partition management, and audit trails. This skill\nproduces migration SQL and TypeScript client code you write into your project,\nthen verifies the results against ClickHouse `system.*` tables.\n\nThe workflow below is the high-level path — each step links to the full,\ncopy-ready SQL/TypeScript in [references/implementation.md](references/implementation.md),\nwith end-to-end scenarios in [references/examples.md](references/examples.md).\n\n## Prerequisites\n\n",
  "cost": {
    "context_tokens": 1350
  }
}

Fetch it by URL: GET /api/v1/registry/jeremylongshore-tons-of-skills-marketplace-clickhouse-da-916f5c/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.