Zapier → Airtable → PostgreSQL → Superset

Zapier → Airtable → PostgreSQL → Superset

Минималистичный «ноу-код»-конвейер для SMB-команд (обновлено 19 июня 2025 г.)


1. Почему именно эта связка

Маркетологи правят миром… и таблицами. В небольших отделах performance-маркетинга данные о кампаниях, лидах и бюджетах чаще всего живут в Airtable: красиво, удобно, можно перетягивать поля мышкой и писать «TODO» прямо в ячейке. Но как только нужны исторические срезы и воронки за полгода, база превращается в «живое желе»: никакой версионности, лимит API в 5 запросов / сек, а автоматическая выгрузка — платная. Связка Zapier → PostgreSQL → Superset решает обе боли: Zapier без кода ловит каждое изменение в Airtable и складывает версионную копию в Postgres, а Superset 5.0 показывает дашборды прямо в браузере менеджера без тяжёлых клиентов (github.com).

Стоимость на уровне «кофе-брейка».

  • Airtable — бесплатный план до 1 000 записей на таблицу.
  • Zapier — 2 000 tasks/мес. в Starter-тарифе (хватает на \~65 изменений в день).
  • PostgreSQL 16 — open-source-«танк».
  • Superset — Apache License 2.0, деплоится за 10 минут в Docker. Когда придёт пора строить корпоративную BI-матрицу, в эту же трубу можно докинуть Power BI или Looker Studio — архитектура не ломается.

Типовые сценарии

  • Рекламное агентство хранит медиапланы и накладные в Airtable, а Superset собирает P\&L-панель за месяц.
  • Отдел продаж ведёт лида в Bitrix24, но ревью pipeline идёт в Airtable — Zapier пушит всё в Postgres, где считают ROI по источникам.
  • E-commerce-бренд: контент-менеджер переименовал 200 SKU в Airtable, Zapier за минуту обновил витрину отчётов.

2. Компоненты и роли

Компонент Роль Ответственный
Airtable «UX-CRM» для не-SQL людей Маркетолог / контент-менеджер
Zapier Без-кода ETL-движок Ops-специалист
PostgreSQL Версионное хранилище, источник «правды» Data Engineer
Apache Superset 5.0 Self-service-аналитика в браузере BI-аналитик
(опция) Power BI Если нужен офлайн-.pbix или отчёт в Teams BI-аналитик

3. Подготовка окружения

3.1 Что установить / создать

Что Где взять
Airtable Workspace + Personal Access Token Airtable API (airtable.com)
Zapier Starter Zapier Airtable→PostgreSQL (zapier.com)
PostgreSQL 16 Postgres Downloads
Superset 5.0 Docker image Release Notes (github.com)

3.2 Мини-Docker-композ

version: "3.9"
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: etl
      POSTGRES_PASSWORD: etl_pwd
      POSTGRES_DB: datamart
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    ports: ["5432:5432"]

  superset:
    image: apache/superset:5.0
    environment:
      SUPERSET_LOAD_EXAMPLES: "no"
      SUPERSET_SECRET_KEY: "change_me"
      POSTGRES_DB_HOST: db
      POSTGRES_DB_PORT: 5432
      POSTGRES_DB_USER: etl
      POSTGRES_DB_PASSWORD: etl_pwd
    depends_on: [db]
    ports: ["8088:8088"]

docker compose up -d — и через пару минут Superset доступен на http://localhost:8088.

3.3 Права и токены

  • Airtable PAT с scope data.records:read и data.records:write.
  • Zapier PostgreSQL — роль etl с INSERT, UPDATE, SELECT на схему stage.
  • SSL между Zapier-Cloud и сервером: откройте порт 5432 только по IP-листу Zapier (служба поддержки даст список).
Читай также:  Albato → PostgreSQL → Superset

4. Настройка потоков данных

4.1 Airtable: готовим базу

  1. Создаём Base “Marketing Spend 2025”.
  2. Таблица Transactions с полями: Date, Channel, Campaign, Spend (currency), Notes.
  3. Включаем Revision History: Airtable хранит 1-годовой лог изменений — пригодится для отладки.

4.2 Zapier: строим «Зап»

  1. TriggerUpdated Record in Airtable.

    • Выбираем Base и таблицу Transactions.
  2. ActionFind Record in PostgreSQL.

    • Ключ (Date,Channel,Campaign).
  3. Filter — если запись существует → Update Row, иначе → Insert Row.
  4. Paths:

    • Path A → Insert Row.
    • Path B → Update Row.
  5. Включаем Zap: каждое изменение в таблице тратит 1 task.

Экономия tasks: если изменений много, переключитесь на Zapier Transfer или Webhook-bulk, который за раз отправляет пачку JSON в Postgres (zapier.com).

4.3 PostgreSQL: схема stage

CREATE TABLE IF NOT EXISTS stage.at_marketing (
    record_id      text PRIMARY KEY,
    updated_at     timestamptz,
    payload        jsonb
);

Upsert-SQL в Zapier Action:

INSERT INTO stage.at_marketing (record_id, updated_at, payload)
VALUES ({{ID}}, {{UpdatedAt}}, {{Payload}})
ON CONFLICT (record_id)
DO UPDATE SET
    updated_at = EXCLUDED.updated_at,
    payload    = EXCLUDED.payload;

4.4 Логирование и ретраи

  • В Zapier включите Enable Auto-Replay — 5 попыток с экспоненциальной задержкой.
  • В Postgres включите log_min_error_statement = error, чтобы ловить дубли с неправильным PK.

5. Трансформации и моделирование

Зона Схема Содержит
Stage stage raw JSON из Airtable
ODS ods расшифрованные поля, типизированы
Mart mart агрегаты для Superset

5.1 Распаковка JSON

CREATE MATERIALIZED VIEW ods.marketing_tx AS
SELECT
    (payload->>'Date')::date                         AS txn_date,
    payload->>'Channel'                              AS channel,
    payload->>'Campaign'                             AS campaign,
    (payload->>'Spend (currency)')::numeric(14,2)    AS spend,
    payload->>'Notes'                                AS notes,
    updated_at
FROM stage.at_marketing;

В идеале используйте dbt-модели, но для пилота хватит REFRESH MATERIALIZED VIEW ods.marketing_tx.

5.2 Бизнес-витрина

CREATE MATERIALIZED VIEW mart.spend_monthly AS
SELECT
    date_trunc('month', txn_date)::date AS month,
    channel,
    SUM(spend)                          AS total_spend
FROM ods.marketing_tx
GROUP BY 1,2;

6. Визуализация в Superset (и Power BI — по желанию)

6.1 Superset

  1. Settings → Database Connections → +

    • URI: postgresql://etl:etl_pwd@db:5432/datamart.
  2. Data → Datasets → + → выберите mart.spend_monthly.
  3. Explore → Chart “Time Series Bar”

    • Time → month, Metrics → total_spend, Series → channel.
  4. Dashboard “Media Finance 2025”.
  5. В Alerts & Reports поставьте правило «total_spend > 500 000 ₽» → письмо директору.
Читай также:  NiFi → ClickHouse ↔ PostgreSQL → Superset

6.2 Power BI (если нужен .pbix)

  1. Get Data → PostgreSQLDirectQuery.
  2. Заберите те же поля, постройте Column Chart.
  3. Publish в Power BI Service, шедулер обновлений < 8 раз/день — в бесплатном слое.

7. Мониторинг и автоматизация

Объект Чем следить Порог
Zapier Tasks Usage-дешборд > 85 % лимита
Airtable Rate Limit 429 в логе Zapier > 10 ошибок/час
Postgres size pg_total_relation_size > 70 % диска
Superset health /health endpoint + Prometheus latency > 500 мс
Backups pg_dump nightly → S3 retention = 14 дней

8. Типичные ошибки и лайфхаки

  1. «100 records per request» — это лимит Airtable API. Используйте пагинацию в Zapier Webhook или разбейте таблицу по месяцам (zuplo.com).
  2. «Column count mismatch» при Insert — кто-то добавил поле в Airtable, а Zapier Mapper остался старым. Решение: включите Dynamic Field Mapping.
  3. Зап жрёт слишком много tasks — переходите с Trigger Updated Record на New & Updated Records in View: создайте в Airtable View «Last 24 h».
  4. Superset не видит новые колонки — в Datasource нажмите Sync Columns from Source после миграции.
  5. PK конфликтует — используйте Airtable record_id, а не натуральный ключ: люди могут переименовать кампанию.

9. Заключение

Связка Zapier → Airtable → PostgreSQL → Superset идеальна, когда команда любит «клацать мышкой», а аналитики требуют репликацию и SQL. Плюсы:

  • Hyper-UX для маркетологов — ничего кроме Airtable не меняется.
  • Версионность и audit-log в Postgres.
  • Superset 5.0 даёт интерактивные дашборды без лицензий.

Минусы:

  • Zapier tasks стоят денег; при 10 000 записей/день счёт растёт.
  • Лаг минимум 1 мин (Plan Starter).
  • Airtable API лимит 5 req/s — плохо для bulk-миграций.

Когда апгрейдить?

  • 1 млн записей → Airbyte или Singer.

  • Realtime-аналитика → Kafka Connect + Debezium.
  • Нужна федерация с Bitrix24 и Sheets → n8n + dbt вместо Zapier.

Полезные ссылки

Теперь ваши маркетологи могут перекрашивать кампании в Airtable, а цифры-версии тихо складываются в Postgres и сияют в Superset. Вы отдыхаете, данные работают.