Skip to Content
Elido is in closed beta — APIs are stable but rate-limits and quotas may change before GA. Request access →
ПосібникиЕкспорт у ClickHouse

Експорт ClickHouse

Події кліків зберігаються в ClickHouse. Робочі області тарифу Business та вище отримують DSN тільки для читання, який можна використовувати в будь-якому SQL-клієнті; всі інші можуть налаштувати експорт Parquet до S3 та підключити його як зовнішню таблицю (external table) у BigQuery, Snowflake або Redshift.

На жодному тарифі немає семплювання. Ви робите запити до тих самих рядків даних, на основі яких будується панель керування.

1. Прямий DSN (Business+)

Створіть DSN через панель керування або API:

curl -X POST \ https://api.elido.app/v1/workspaces/1/clickhouse-dsn \ -H "Authorization: Bearer $ELIDO_TOKEN" \ -d '{ "label": "BI read-only" }'

Ви отримаєте DSN та пароль (відображаються один раз):

clickhouse://ws_8a2f:6c7d…@ch-eu-central-1.elido.app:9440/events

Цей DSN призначений тільки для читання, обмежений кліками вашої робочої області за допомогою безпеки на рівні рядків (row-level security) та має ліміт 50 одночасних запитів на робочу область. Підключайтеся за допомогою будь-якого сумісного клієнта:

clickhouse-client \ --secure \ --host ch-eu-central-1.elido.app --port 9440 \ --user ws_8a2f --password '…' \ --database events

DBeaver, DataGrip, Metabase, Grafana та ClickHouse JDBC драйвер працюють одразу «з коробки».

2. Схема

Основна таблиця, яка вам потрібна - clicks:

СтовпецьТипПримітки
click_idStringвідповідає X-Elido-Click-Id, що повертається під час редиректу
link_idStringзовнішній ключ до рядків посилань у вашій панелі керування
workspace_idUInt64фільтр на рівні рядків прив’язує це до вашої робочої області
created_atDateTime64(3)UTC, точність до мілісекунд
countryLowCardinality(String)ISO-3166-1 alpha-2
deviceLowCardinality(String)mobile / tablet / desktop
osLowCardinality(String)-
browserLowCardinality(String)-
referrer_hostStringвитягнуто з Referer, може бути порожнім
utm_source / medium / campaign / content / termStringUTM-мітки, визначені в момент кліку
ip_truncatedStringостанній октет занулений перед збереженням (GDPR)
user_agent_hashStringSHA-256 від UA, збережено перші 16 символів префікса

Рядки конверсій зберігаються в conversions:

СтовпецьТипПримітки
event_idStringваш ключ ідемпотентності
click_idStringключ для об’єднання (join) з таблицею clicks
event_nameLowCardinality(String)purchase, refund, власні
value, currencyDecimal64(2), String-
forwarded_meta / _ga4 / _mixpanelBoolпрапорець доставки для кожного призначення

3. Приклади запитів

Топ країн за обсягом кліків за останні 7 днів:

SELECT country, count() AS clicks FROM clicks WHERE created_at >= now() - INTERVAL 7 DAY GROUP BY country ORDER BY clicks DESC LIMIT 10;

Воронка Клік → Конверсія для конкретної кампанії:

SELECT c.utm_campaign AS campaign, count(distinct c.click_id) AS clicks, count(distinct cv.click_id) AS conversions, sum(cv.value) AS revenue, count(distinct cv.click_id) / count(distinct c.click_id) AS cvr FROM clicks c LEFT JOIN conversions cv USING (click_id) WHERE c.utm_campaign IN ('spring_2026_dach', 'spring_2026_uk') AND c.created_at >= '2026-04-01' GROUP BY campaign;

4. Запланований експорт в S3 / Parquet

Доступно на кожному платному тарифі. Експорт записує файли Parquet за вказаним вами префіксом, які подальші сховища даних можуть імпортувати як зовнішні таблиці.

curl -X POST \ https://api.elido.app/v1/workspaces/1/exports \ -H "Authorization: Bearer $ELIDO_TOKEN" \ -d '{ "destination": { "type": "s3", "bucket": "acme-bi-warehouse", "prefix": "elido/clicks/", "role_arn": "arn:aws:iam::1234:role/elido-export" }, "schedule": "hourly", "table": "clicks", "partition": "toYYYYMMDD(created_at)" }'

Роль для експорту, яку ви надаєте, повинна мати права s3:PutObject та s3:GetBucketLocation для цього префікса. Файли розділені (partitioned) за днями (created_at=20260508/…), щоб зовнішні таблиці могли ефективно відсікати зайві дані (pruning).

5. Зовнішня таблиця BigQuery

Після того як дані Parquet почнуть надходити в S3 (або аналог у GCS - встановіть destination.type на gcs), спрямуйте BigQuery на них:

CREATE EXTERNAL TABLE `acme_bi.elido_clicks` WITH PARTITION COLUMNS OPTIONS ( format = 'PARQUET', uris = ['gs://acme-bi-warehouse/elido/clicks/*'], hive_partition_uri_prefix = 'gs://acme-bi-warehouse/elido/clicks', require_hive_partition_filter = true );

Snowflake та Redshift використовують свій власний синтаксис зовнішніх таблиць для того самого префікса S3.

6. Особливості

  • Затримка (Latency) - прямий DSN бачить рядки протягом ~5 секунд після кліку. Заплановані експорти мають затримку відповідно до інтервалу розкладу (щогодини = відставання до 60 хв).
  • Зберігання (Retention) - кліки зберігаються за замовчуванням 90 днів на тарифі Pro та 24 місяці на Business; експортовані файли Parquet залишаються у вас назавжди після запису.
  • Прив’язка до регіону - DSN обмежені регіоном. Робоча область, прив’язана до ap-southeast-1, отримує ch-ap-southeast-1.elido.app; хост відповідає вибраному регіону (див. Прив’язка до регіону у посібнику з доказів SOC 2).
  • Еволюція схеми - тільки додавання. Нові стовпці додаються зі значеннями за замовчуванням; старі стовпці ніколи не перейменовуються. Ваші зовнішні таблиці не зламаються під час релізу.

Дивіться також