Skip to main content
Glama

cwprep — движок Text-to-PrepFlow

cwprep — это Python-движок, который позволяет генерировать потоки данных с помощью технологии Text-to-PrepFlow.

Благодаря обратному проектированию структуры JSON файлов .tfl и встроенному серверу MCP (Model Context Protocol), cwprep выступает в роли моста между LLM (такими как Claude, Gemini) и Tableau Prep. Теперь вы можете создавать, изменять и строить потоки очистки данных просто с помощью общения на естественном языке или Python-скриптов, не открывая графический интерфейс!

Автор: Cooper Wenhua imgwho@gmail.com

Установка

pip install cwprep

Related MCP server: cwtwb

Быстрый старт

from cwprep import TFLBuilder, TFLPackager

# Create builder
builder = TFLBuilder(flow_name="My Flow")

# Add database connection
conn_id = builder.add_connection(
    host="localhost",
    username="root",
    dbname="mydb"
)

# Add input tables
orders = builder.add_input_table("orders", "orders", conn_id)
customers = builder.add_input_table("customers", "customers", conn_id)

# Join tables
joined = builder.add_join(
    name="Orders + Customers",
    left_id=orders,
    right_id=customers,
    left_col="customer_id",
    right_col="customer_id",
    join_type="left"
)

# Add output
builder.add_output_server("Output", joined, "My_Datasource")

# Build and save
flow, display, meta = builder.build()
TFLPackager.save_tfl("./my_flow.tfl", flow, display, meta)

По умолчанию как SDK, так и MCP выводят только итоговый архив .tfl/.tflx. Используйте save_to_folder(), только если вам явно нужна распакованная папка для проверки.

Функции

Функция

Метод

Описание

Подключение к БД

add_connection()

Подключение к MySQL/PostgreSQL/SQL Server

Подключение файла

add_file_connection()

Подключение к файлам Excel (.xlsx/.xls) или CSV

SQL-ввод

add_input_sql()

Ввод через пользовательский SQL-запрос

Ввод таблицы

add_input_table()

Прямое подключение к таблице

Ввод Excel

add_input_excel()

Чтение из листа Excel

Ввод CSV

add_input_csv()

Чтение из CSV-файла

Объединение CSV

add_input_csv_union()

Объединение нескольких CSV-файлов

Соединение (Join)

add_join()

Левое/правое/внутреннее/полное соединение (по одному или нескольким столбцам)

Объединение (Union)

add_union()

Объединение нескольких таблиц

Фильтр

add_filter()

Фильтр на основе выражений

Фильтр значений

add_value_filter()

Оставить/исключить по значениям

Оставить только

add_keep_only()

Выбор столбцов

Удаление столбцов

add_remove_columns()

Удаление столбцов

Переименование

add_rename()

Переименование столбцов

Вычисление

add_calculation()

Поля с формулами Tableau

Быстрый расчет

add_quick_calc()

Быстрая очистка (нижний/верхний регистр/обрезка/удаление)

Изменение типа

add_change_type()

Изменение типов данных столбцов

Дублирование столбца

add_duplicate_column()

Дублирование (копирование) столбца

Агрегация

add_aggregate()

GROUP BY с SUM/AVG/COUNT

Сводная таблица (Pivot)

add_pivot()

Строки в столбцы

Отмена сводной таблицы

add_unpivot()

Столбцы в строки

Вывод

add_output_server()

Публикация на Tableau Server

Упаковка TFLX

build(is_packaged=True)

Генерация .tflx со встроенными файлами данных

SQL-трансляция

SQLTranslator

Перевод потоков TFL в эквивалентный ANSI SQL

Примеры

Смотрите каталог examples/ для получения полных демо-версий:

  • demo_basic.py — Ввод, Соединение, Вывод

  • demo_cleaning.py — Фильтр, Вычисление, Переименование

  • demo_field_operations.py — Быстрый расчет, Изменение типа, Дублирование столбца

  • demo_aggregation.py — Объединение, Агрегация, Сводная таблица

  • demo_comprehensive.py — Все функции вместе

  • prompts.md — 8 готовых шаблонов промптов MCP для генерации потоков с помощью ИИ

MCP-сервер

cwprep включает встроенный сервер Model Context Protocol, позволяющий ИИ-клиентам (Claude Desktop, Cursor, Gemini CLI и др.) генерировать файлы TFL напрямую.

Предварительные требования

Метод

Требование

uvx (рекомендуется)

Установите uv — он автоматически загружает cwprep в изолированной среде

pip install

Python ≥ 3.8 + pip install cwprep

Быстрый старт

# Local (stdio)
cwprep-mcp

# Remote (Streamable HTTP)
cwprep-mcp --transport streamable-http --port 8000

[!TIP] Обновляетесь? Если вы ранее использовали uvx со старой версией, очистите кэш, чтобы получить последний релиз:

uv cache clean cwprep

Конфигурация клиента

Все клиенты ниже используют метод uvx (рекомендуется). Замените uvx на cwprep-mcp, если предпочитаете локальную установку через pip.

Отредактируйте файл конфигурации:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Настройки → MCP → Добавить новый MCP-сервер или отредактируйте ~/.cursor/mcp.json:

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Создайте .vscode/mcp.json в корне проекта:

{
  "servers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Отредактируйте ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}
claude mcp add cwprep -- uvx --from "cwprep" cwprep-mcp

Отредактируйте ~/.gemini/settings.json:

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Отредактируйте ~/.continue/config.yaml:

mcpServers:
  - name: cwprep
    command: uvx
    args:
      - --from
      - cwprep
      - cwprep-mcp

Запустите сервер:

cwprep-mcp --transport streamable-http --port 8000

Затем настройте свой клиент с конечной точкой: http://your-server-ip:8000/mcp

Доступные возможности MCP

Тип

Имя

Описание

🔧 Инструмент

generate_tfl

Генерация файла .tfl/.tflx из определения потока

🔧 Инструмент

translate_to_sql

Перевод определения потока или файла .tfl в ANSI SQL

🔧 Инструмент

list_supported_operations

Список всех поддерживаемых типов узлов

🔧 Инструмент

validate_flow_definition

Проверка определения потока перед генерацией

📖 Ресурс

cwprep://docs/api-reference

Справочник API SDK

📖 Ресурс

cwprep://docs/calculation-syntax

Синтаксис вычислений Tableau Prep

📖 Ресурс

cwprep://docs/best-practices

Распространенные ошибки и правила проектирования потоков

💬 Промпт

design_data_flow

Интерактивный помощник по проектированию потоков

💬 Промпт

explain_tfl_structure

Объяснение структуры файла TFL

Поддержка навыков ИИ

Этот проект включает специализированный навык ИИ для помощников, таких как Claude или Gemini, чтобы помочь вам создавать потоки.

  • Расположение: .agents/skills/tfl-generator/

  • Функции: Индекс MCP-сервера с руководством по использованию резервного SDK. Подробные справочники по API и синтаксису предоставляются через ресурсы MCP из src/cwprep/references/.

Структура каталогов

cwprep/
├── .agents/skills/      # AI Agent skills (MCP index)
├── src/cwprep/          # SDK source code
│   ├── builder.py       # TFLBuilder class
│   ├── packager.py      # TFLPackager class
│   ├── translator.py    # SQLTranslator class
│   ├── expression_translator.py  # ExpressionTranslator class
│   ├── config.py        # Configuration utilities
│   ├── mcp_server.py    # MCP Server (Tools, Resources, Prompts)
│   └── references/      # MCP Resource documents (.md)
├── examples/            # Demo scripts
├── docs/                # Documentation
└── tests/               # Unit tests

Конфигурация

Создайте config.yaml для настроек по умолчанию:

# MySQL (default)
database:
  host: localhost
  port: 3306
  dbname: mydb
  type: mysql

# SQL Server (Windows Authentication)
# database:
#   host: localhost
#   type: sqlserver
#   authentication: sspi
#   schema: dbo

# PostgreSQL
# database:
#   host: localhost
#   port: 5432
#   dbname: mydb
#   type: postgres

tableau_server:
  url: http://your-server
  default_project: Default

Журнал изменений

Смотрите changelog.md для истории версий.

Лицензия

Лицензия AGPL-3.0

Related MCP Connectors

Related MCP Servers