GoldenFlow について
GoldenFlowは、データエンジニア向けのデータ変換ツールです。PythonとTypeScriptから、ファイルやクラウドストレージ、データベースのデータを標準化・再構成でき、自動変換やストリーミング、スキーママッピング、業界別設定を備えています。
主な機能
- 01データの自動分析とクリーニング
- 02再利用可能な76種類の変換
- 03CSV、Excel、Parquetに対応
- 04S3とGCSのコネクター
- 05ストリーミングとディレクトリ監視
- 06スキーママッピングと業界別設定
活用シーン
- 01日付、電話番号、メール形式の統一
- 02到着したファイルの自動クリーニング
- 03メモリに収まらない大容量ファイルの処理
- 04システム間のデータ統合前の列マッピング
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://goldenflow-mcp-production.up.railway.app/mcp/claude mcp add --transport http benseverndev-oss-goldenflow https://goldenflow-mcp-production.up.railway.app/mcp/{"mcpServers":{"benseverndev-oss-goldenflow":{"type":"http","url":"https://goldenflow-mcp-production.up.railway.app/mcp/"}}}Cursor で開く{"servers":{"benseverndev-oss-goldenflow":{"type":"http","url":"https://goldenflow-mcp-production.up.railway.app/mcp/"}}}VS Code で開く{"mcpServers":{"benseverndev-oss-goldenflow":{"type":"http","url":"https://goldenflow-mcp-production.up.railway.app/mcp/"}}}{"mcpServers":{"benseverndev-oss-goldenflow":{"serverUrl":"https://goldenflow-mcp-production.up.railway.app/mcp/"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
移動しました。 このリポジトリは、
benzsevern/goldenmatchモノレポのpackages/python/goldenflow (and packages/typescript/goldenflow)/に移動しました。このリポジトリはアーカイブされており、新しい開発はモノレポで行われます。
GoldenFlow
データ変換ツールキット — データがパイプラインに入る前に、扱いにくいデータを標準化、再構成、正規化します。 Ben Severn が開発しました。
ファイル(CSV、Excel、Parquet)、クラウドストレージ(S3、GCS)、ライブデータベースに対応しています。ゼロ設定モードでは、修正が必要な箇所を自動検出します。GoldenCheck が見つけた問題をクリーンアップし、GoldenMatch が必要とする形式に整えるコマンドは 1 つだけです。Python と TypeScript で利用でき、すべての機能が同等に使えます。
# Python
pip install goldenflow
goldenflow transform data.csv
# TypeScript / Node.js
npm install goldenflow
npx goldenflow-js transform data.csv
課題
データには、予測可能な形で問題が発生します。
- 電話番号の形式が 15 種類もあります
- 日付の形式に MM/DD/YYYY と YYYY-MM-DD が混在しています
- 住所の略記が統一されていません
- システム間で列名が一致しません(「fname」と「first_name」と「given_name」)
- 値に先頭の空白、不要な Unicode 文字、スマートクォートが含まれています
- カテゴリ値にばらつきがあります(「USA」、「US」、「United States」)
データエンジニアは、こうした問題を修正するために使い捨てのスクリプトを毎回作成しています。どのスクリプトも少しずつ異なり、再利用できるものはありません。
GoldenFlow は、変換を再利用可能、合成可能、自動化可能にします。
クイックスタート
Python
pip install goldenflow
# Auto-transform (zero-config)
goldenflow transform messy_data.csv
# Try the demo first
goldenflow demo
goldenflow transform demo_data.csv -c demo_config.yaml
# With config
goldenflow learn messy_data.csv -o config.yaml
goldenflow transform messy_data.csv -c config.yaml
# Schema mapping
goldenflow map --source system_a.csv --target system_b.csv
# Full pipeline
goldencheck scan data.csv
goldenflow transform data.csv
goldenmatch dedupe data_transformed.csv
TypeScript / Node.js
npm install goldenflow
# Auto-transform (zero-config)
npx goldenflow-js transform messy_data.csv
# Try the demo first
npx goldenflow-js demo
npx goldenflow-js transform demo_data.csv -c demo_config.yaml
# With config
npx goldenflow-js learn messy_data.csv -o config.yaml
npx goldenflow-js transform messy_data.csv -c config.yaml
# Schema mapping
npx goldenflow-js map -s system_a.csv -t system_b.csv
プログラムから実行(TypeScript)
import { TransformEngine } from "goldenflow";
const result = new TransformEngine().transformDf([
{ name: " JOHN ", phone: "(555) 123-4567", email: "[email protected]" },
]);
console.log(result.rows[0]);
// { name: "JOHN", phone: "+15551234567", email: "[email protected]" }
ゼロ設定モード
goldenflow transform customers.csv
# or just:
goldenflow customers.csv
GoldenFlow は各列のプロファイルを作成し、安全な変換を自動的に適用します。
- 空白を削除し、Unicode を正規化します
- 電話番号を E.164 形式に標準化します
- メールアドレスの大文字・小文字を正規化します
- 日付形式を解析し、ISO 8601 に標準化します
- 郵便番号を正規化します(ゼロ埋め、+4 部分を削除)
- スマートクォート/カールクォートを通常のクォートに置き換えます
- ファジーマッチングによりカテゴリ値の誤記を自動修正します
出力:適用されたすべての変換を示すサイドカーマニフェストが付いた、クリーンな CSV です。
customers.csv -> customers_transformed.csv
-> customers_manifest.json
マニフェストは監査証跡です。何が、なぜ変更され、どの行に影響したかを確認できます。
CLI コマンド
GoldenFlow には 14 個のコマンドがあります。よく使われるものは次のとおりです。
# Core transforms
goldenflow transform data.csv # Zero-config: auto-detect and fix
goldenflow transform data.csv -c config.yaml # Apply saved config
goldenflow transform data.csv --domain healthcare # Use a domain pack
goldenflow transform data.csv --strict # Fail on any transform error
goldenflow transform data.csv --llm # Enable LLM-enhanced corrections
goldenflow data.csv # Shorthand: auto-routes to transform
# Schema & profiling
goldenflow map -s a.csv -t b.csv # Auto-map schemas between files
goldenflow profile data.csv # Show column profiles
goldenflow learn data.csv -o config.yaml # Generate config from data patterns
goldenflow validate data.csv # Dry-run: show what would change
goldenflow diff before.csv after.csv # Compare pre/post transform
# Continuous & scheduled
goldenflow watch ./data/ # Auto-transform new/changed files
goldenflow schedule data.csv --every 1h # Run on a schedule (5m, 1h, 30s...)
goldenflow stream large_file.csv --chunk-size 50000 # Stream-process in batches
# Discovery & history
goldenflow init data.csv # Interactive setup wizard
goldenflow demo # Generate sample data to try
goldenflow history # Show recent transform runs
goldenflow history -n 50 # Last 50 runs
# Integrations
goldenflow interactive data.csv # Launch TUI
goldenflow serve # REST API for real-time transforms
goldenflow mcp-serve # MCP server for Claude Desktop
デフォルトのルーティング
サブコマンドを指定せずに goldenflow <file> を実行すると、自動的に transform に振り分けられます。
goldenflow customers.csv # equivalent to: goldenflow transform customers.csv
goldenflow - # read from stdin, write to stdout
ストリーミング
メモリに読み込むには大きすぎるファイルには、StreamProcessor または stream コマンドを使用します。
goldenflow stream large_file.csv --chunk-size 50000
from goldenflow.streaming import StreamProcessor
processor = StreamProcessor(config=config)
# Process a single record
result = processor.transform_one({"name": " John ", "phone": "(555) 123-4567"})
# Process a batch
result = processor.transform_batch(df_batch)
# Stream a large file in chunks
for result in processor.stream_file("large_data.csv", chunk_size=10_000):
write_to_output(result.df)
print(f"Processed {processor.batches_processed} batches")
クラウドコネクター
GoldenFlow は S3 と Google Cloud Storage からの読み込みと書き込みに透過的に対応しています。
# S3
goldenflow transform s3://my-bucket/raw/customers.csv -o s3://my-bucket/clean/
# GCS
goldenflow transform gs://my-bucket/data/records.csv
from goldenflow.connectors.s3 import read_s3, write_s3
from goldenflow.connectors.gcs import read_gcs, write_gcs
df = read_s3("s3://my-bucket/raw/customers.csv")
df = read_gcs("gs://my-bucket/data/records.csv")
クラウドパスは自動的に検出されるため、追加のフラグは不要です。
監視モード
ディレクトリにファイルが届いたら、自動的に変換します。
goldenflow watch ./data/
goldenflow watch ./incoming/ -c config.yaml -o ./processed/
GoldenFlow はディレクトリを定期的に確認し、新規または変更されたファイルに変換を適用します。
スケジュール設定
繰り返しスケジュールで変換を実行します。
goldenflow schedule data.csv --every 1h
goldenflow schedule data.csv --every 30m -c config.yaml -o ./output/
対応している間隔:30s、5m、1h、2h など。
セットアップウィザード
対話形式で YAML 設定を生成します。
goldenflow init data.csv
ウィザードはデータのプロファイリングを行い、変換を提案して、すぐに使える goldenflow.yaml を保存します。
履歴
GoldenFlow は、すべての変換実行を ~/.goldenflow/history/ に記録します。
goldenflow history # Last 20 runs
goldenflow history -n 50 # Last 50 runs
各実行記録には、ソースファイル、行数、適用した変換、エラー、所要時間が含まれます。
スキーママッピング
異なるシステムのデータを統合する必要がある場合:
goldenflow map --source crm_export.csv --target warehouse_schema.csv
GoldenFlow は、名前の類似性とデータプロファイリングを使って、スキーマ間の列を自動でマッピングします。
crm_export.csv warehouse schema
----- -----
email_address -> email (rename)
phone_number -> phone (rename)
fname -> first_name (alias match)
st -> state (alias match)
曖昧なマッピングには、人による確認が必要であることを示すフラグが付けられます。確度の高いマッピングは自動的に適用されます。
ドメインパック
一般的な業界向けに、あらかじめ設定された変換セットです。5 種類すべてが実装済みです。
goldenflow transform patients.csv --domain healthcare
goldenflow transform employees.csv --domain people_hr
goldenflow transform transactions.csv --domain finance
goldenflow transform orders.csv --domain ecommerce
goldenflow transform listings.csv --domain real_estate
| ドメインパック | 対象範囲 |
|---|---|
| People/HR | 氏名の解析、SSN の書式設定、雇用日、性別/真偽値の標準化 |
| Healthcare | 患者 ID、診断コード、診療日、HIPAA の機微フィールドの処理 |
| Finance | 通貨の正規化、口座番号、取引日、金額の解析 |
| E-commerce | SKU の正規化、価格の解析、注文日、住所の標準化 |
| Real Estate | 物件住所、掲載日、価格の正規化、地理フィールド |
変換ライブラリ(76 種類の変換)
テキスト変換(18 種類)
| 変換 | 処理内容 |
|---|---|
strip | 空白を削除します |
lowercase / uppercase | 大文字・小文字を変換します |
title_case | 適切な大文字表記にします("john smith" -> "John Smith") |
normalize_unicode | NFKD 正規化を行い、アクセント記号を削除します |
normalize_quotes | スマート引用符/曲線引用符を通常の引用符に変換します |
collapse_whitespace | 連続する空白を単一の空白にします |
truncate:N | 文字数を N 文字に制限します |
remove_punctuation | 句読点を削除します |
remove_html_tags | スクレイピングしたデータから HTML マークアップを削除します |
remove_urls | 自由記述フィールドから URL を削除します |
remove_digits | テキストから数字を削除します |
remove_emojis | 絵文字を削除します |
fix_mojibake | UTF-8/Latin-1 の一般的な文字化けを修正します |
normalize_line_endings | \r\n および \r を \n に正規化します |
extract_numbers | 混在するテキストから数値を抽出します |
pad_left:N / pad_right:N | 固定幅になるように埋めます(口座番号、ID) |
電話番号変換(5 種類)
| 変換 | 処理内容 |
|---|---|
phone_e164 | 任意の形式 -> +15550123456 |
phone_national | 任意の形式 -> (555) 012-3456 |
phone_digits | 数字のみを残します |
phone_validate | 無効な番号にフラグを付けます |
phone_country_code | 国番号を抽出します |
氏名変換(8 種類)
| 変換 | 処理内容 |
|---|---|
split_name | "John Smith" -> first: "John", last: "Smith" |
split_name_reverse | "Smith, John" -> first: "John", last: "Smith" |
strip_titles / strip_suffixes | Mr.、Mrs.、Dr.、MD、PhD などを削除します |
name_proper | "mcdonald" -> "McDonald"、"o'brien" -> "O'Brien" |
initial_expand | イニシャルを含む氏名に確認用のフラグを付けます |
nickname_standardize | "Bob" -> "Robert"、"Bill" -> "William" |
merge_name | first_name と last_name を結合して full_name にします |
住所変換(8 種類)
| 変換 | 処理内容 |
|---|---|
address_standardize | "Street" -> "St"、"Avenue" -> "Ave" |
address_expand | "St" -> "Street"、"Ave" -> "Avenue" |
state_abbreviate / state_expand | "Pennsylvania" <-> "PA" |
zip_normalize | ゼロ埋めを行い、+4 を削除して、形式を検証します |
split_address | 1 行の住所を street、city、state、zip に分割します |
country_standardize | "United States" / "USA" -> "US"(ISO 3166) |
unit_normalize | "Apt" / "Apartment" / "#" -> "Unit" |
日付変換(13)
| 変換 | 説明 |
|---|---|
date_iso8601 | 任意の形式 -> 2024-03-15 |
datetime_iso8601 | 任意の形式 -> 2024-03-15T15:30:00 |
date_us / date_eu | 地域別形式で出力 |
date_parse | 自動検出し、ISO 8601 に正規化 |
age_from_dob | 生年月日 -> 年齢 |
extract_year / extract_month / extract_day | 日付を要素に分解 |
extract_quarter | 日付 -> Q1/Q2/Q3/Q4 |
extract_day_of_week | 日付 -> Monday、Tuesday など |
date_shift | 日数を加算/減算(匿名化) |
date_validate | 無効な日付をブール値で判定 |
カテゴリ変換(6)
| 変換 | 説明 |
|---|---|
category_auto_correct | あいまい検索でスペルミスを正規値に照合 |
category_standardize | バリエーションを正規値にマッピング |
category_from_file | CSV/YAML ファイルからマッピングを読み込み |
boolean_normalize | "Yes"/"Y"/"1"/"True" -> true |
gender_standardize | "Male"/"M"/"Female"/"F" -> M/F |
null_standardize | "N/A"/"NULL"/"none" -> null |
数値変換(9)
| 変換 | 説明 |
|---|---|
currency_strip | "$1,234.56" -> 1234.56 |
percentage_normalize | "85%" -> 0.85 |
round:N | 小数点以下 N 桁に丸める |
clamp | 値を最小/最大範囲内に制限 |
to_integer | 文字列を int に解析し、小数部を切り捨てる |
abs_value | 絶対値 |
fill_zero | null を 0 に置換 |
comma_decimal | 欧州形式 "1.234,56" -> 1234.56 |
scientific_to_decimal | "1.5e3" -> 1500.0 |
メール変換(4)
| 変換 | 説明 |
|---|---|
email_lowercase | 小文字に正規化 |
email_normalize | +タグを削除し、Gmail のドットを削除して小文字化 |
email_extract_domain | [email protected] -> example.com |
email_validate | 無効なメール形式を判定 |
識別子変換(3)
| 変換 | 説明 |
|---|---|
ssn_format | XXX-XX-XXXX に正規化 |
ssn_mask | ***-**-1234 にマスキング |
ein_format | XX-XXXXXXX に正規化 |
URL 変換(2)
| 変換 | 説明 |
|---|---|
url_normalize | ドメインを小文字にし、スキームを補完して、末尾のスラッシュを削除 |
url_extract_domain | URL からドメインを抽出 |
特別なモード
厳格モード
変換エラーが発生した場合、直ちに失敗します。CI や本番環境のパイプラインで便利です。
goldenflow transform data.csv --strict
変換が失敗した場合、コード 1 で終了し、最初の 5 件のエラーを出力します。
LLM モード
LLM を使用してカテゴリの修正を強化し、あいまい検索で見つからないエッジケースに対応します。
goldenflow transform data.csv --llm
環境に OPENAI_API_KEY または ANTHROPIC_API_KEY が必要です。標準の変換に適切にフォールバックします。
自動修正
category_auto_correct はあいまい検索を使用して、カテゴリ値のスペルミスを自動的に修正します。誤検出を避けるため、カーディナリティの高い列(ユニーク値が 10% を超える列)では抑制されます。
"actve" -> "active"
"Pennsylvnia" -> "Pennsylvania"
"Unted States" -> "United States"
YAML 設定
繰り返し実行するパイプライン向け:
# goldenflow.yaml
source: customers.csv
output: customers_clean.csv
transforms:
- column: name
ops: [strip, title_case]
- column: email
ops: [lowercase, strip]
- column: phone
ops: [phone_e164]
- column: state
ops: [state_abbreviate]
- column: signup_date
ops: [date_iso8601]
renames:
email_address: email
phone_number: phone
drop: [internal_id, temp_notes]
dedup:
columns: [email]
keep: first
goldenflow transform customers.csv -c goldenflow.yaml
データから設定を自動生成します:
goldenflow learn data.csv -o config.yaml
Python API
import goldenflow
# Zero-config
result = goldenflow.transform_file("messy_data.csv")
print(result.df) # Clean Polars DataFrame
print(result.manifest) # Audit trail
# With config
from goldenflow import GoldenFlowConfig, TransformSpec, TransformEngine
config = GoldenFlowConfig(
transforms=[
TransformSpec(column="phone", ops=["phone_e164"]),
TransformSpec(column="date", ops=["date_iso8601"]),
]
)
engine = TransformEngine(config=config)
result = engine.transform_df(df)
Jupyter Notebook のサポート
TransformResult、Manifest、DatasetProfile はすべて _repr_html_() を備えており、Jupyter でリッチな HTML テーブルとして自動的にレンダリングされます。
import goldenflow
result = goldenflow.transform_file("messy_data.csv")
result # renders as HTML table in Jupyter
result.manifest # renders transform audit trail
TypeScript / JavaScript
GoldenFlow には、機能が完全に同等な TypeScript 版があります。同じ 83 個の変換、同じエンジン、同じ設定形式を備えています。コアは エッジセーフ(ブラウザー、Cloudflare Workers、Vercel Edge で実行可能)で、ファイル I/O と CLI 用の Node レイヤーを備えています。
インストール
npm install goldenflow
CLI
npx goldenflow-js transform data.csv # Zero-config
npx goldenflow-js transform data.csv -c config.yaml # With config
npx goldenflow-js profile data.csv # Column profiles
npx goldenflow-js learn data.csv -o config.yaml # Generate config
npx goldenflow-js diff before.csv after.csv # Compare files
npx goldenflow-js map -s source.csv -t target.csv # Schema mapping
npx goldenflow-js stream large.csv --chunk-size 50000 # Streaming
npx goldenflow-js demo # Generate sample data
npx goldenflow-js history # Show recent runs
TypeScript API
import { TransformEngine, makeConfig } from "goldenflow";
// Zero-config — auto-detect and fix
const engine = new TransformEngine();
const result = engine.transformDf([
{ name: " John Smith ", email: "[email protected]", phone: "(555) 123-4567" },
{ name: "DR. JANE DOE", email: " [email protected] ", phone: "555.987.6543" },
]);
console.log(result.rows);
// [
// { name: "John Smith", email: "[email protected]", phone: "+15551234567" },
// { name: "Jane Doe", email: "[email protected]", phone: "+15559876543" },
// ]
console.log(result.manifest.records.length); // transforms applied
// Configured — explicit transforms per column
const engine = new TransformEngine({
transforms: [
{ column: "phone", ops: ["phone_e164"] },
{ column: "email", ops: ["strip", "email_normalize"] },
{ column: "name", ops: ["strip", "title_case"] },
{ column: "state", ops: ["state_abbreviate"] },
{ column: "price", ops: ["currency_strip"] },
{ column: "signup_date", ops: ["date_iso8601"] },
],
renames: { email_address: "email" },
drop: ["internal_id"],
dedup: { columns: ["email"], keep: "first" },
});
const result = engine.transformDf(rows);
// Schema mapping
import { SchemaMapper } from "goldenflow";
const mapper = new SchemaMapper();
const mappings = mapper.map(
[{ fname: "John", lname: "Smith", email_address: "[email protected]" }],
[{ first_name: "", last_name: "", email: "" }],
);
// [{ source: "fname", target: "first_name", confidence: 0.95 }, ...]
// Streaming large datasets
import { StreamProcessor } from "goldenflow";
const processor = new StreamProcessor({ transforms: [{ column: "name", ops: ["strip"] }] });
for (const result of processor.streamRows(largeDataset, 10_000)) {
await writeChunk(result.rows);
}
// Profiling
import { profileDataframe } from "goldenflow";
const profile = profileDataframe(rows, "customers.csv");
for (const col of profile.columns) {
console.log(`${col.name}: ${col.inferredType}, ${col.nullCount} nulls, ${col.uniqueCount} unique`);
}
// Edge-safe import (browsers, Workers, Edge Runtime)
import { TransformEngine } from "goldenflow/core";
// Node-only import (includes file I/O, MCP, CLI)
import { readFile, TransformEngine } from "goldenflow/node";
MCP サーバー(TypeScript)
import { TOOL_DEFINITIONS, handleTool } from "goldenflow/node";
// TOOL_DEFINITIONS: 10 MCP tools for Claude Desktop
// handleTool("transform", { path: "data.csv" }) → JSON string
REST API(TypeScript)
import { runServer } from "goldenflow/node";
runServer(8000); // Starts HTTP server with /health, /transforms, /transform
公開 API(34 個のエクスポート)
from goldenflow import (
# Core engine
TransformEngine, TransformResult,
# Config
GoldenFlowConfig, TransformSpec, SplitSpec, FilterSpec, DedupSpec, MappingSpec,
# Convenience
transform_file, transform_df,
# Manifest
Manifest, TransformRecord, TransformError,
# Profiler
DatasetProfile, ColumnProfile,
# Selector & differ
select_transforms, diff_dataframes, DiffResult,
# Transform registry
TransformInfo, register_transform, get_transform, list_transforms, parse_transform_name,
# Mapping
SchemaMapper, ColumnMapping,
# Config helpers
load_config, save_config, merge_configs, learn_config,
# Domains
DomainPack, load_domain,
# Connectors
read_file, write_file,
)
インテグレーション
REST API
goldenflow serve --host 0.0.0.0 --port 8000
CSV データを POST すると、変換済みの CSV が返されます。FastAPI で構築されています。
MCP サーバー
goldenflow mcp-serve
GoldenFlow を Claude Desktop 用の MCP ツールとして公開します。Claude Desktop の設定で構成してください。
TUI
goldenflow interactive data.csv
Textual で構築された、機能豊富なターミナル UI です。プロファイルの閲覧、変換の適用、結果のプレビューができます。
リモート MCP サーバー
GoldenFlow は Smithery でホスト型 MCP サーバーとして利用できます。インストールせずに、あらゆる MCP クライアントから接続できます。
Claude Desktop / Claude Code:
{
"mcpServers": {
"goldenflow": {
"url": "https://goldenflow-mcp-production.up.railway.app/mcp/"
}
}
}
ローカルサーバー:
pip install goldenflow[mcp]
goldenflow mcp-serve
利用可能なツールは 10 個です。ファイルの変換、スキーマの自動マッピング、列のプロファイリング、設定の生成、変換前後の差分表示、ドメインパックの適用ができます。
Golden Suite の一部
| ツール | 目的 | Python | TypeScript |
|---|---|---|---|
| GoldenCheck | データ品質の検証とプロファイリング | pip install goldencheck | npm install goldencheck |
| GoldenFlow | データの変換と標準化 | pip install goldenflow | npm install goldenflow |
| GoldenMatch | レコードの重複排除と照合 | pip install goldenmatch | — |
| GoldenPipe | パイプライン全体のオーケストレーション | pip install goldenpipe | — |
Raw Data
|
v
+--------------+
| GoldenCheck | <- Discover quality issues
| goldencheck |
| scan data |
+------+-------+
| findings
v
+--------------+
| GoldenFlow | <- Fix issues, standardize, reshape
| goldenflow |
| transform |
+------+-------+
| clean data
v
+--------------+
| GoldenMatch | <- Deduplicate, match, create golden records
| goldenmatch |
| dedupe |
+------+-------+
| golden records
v
Clean, deduplicated,
production-ready data
これらを連携させます:
goldencheck scan data.csv | goldenflow transform --from-findings | goldenmatch dedupe
パフォーマンス
Rust ベースの DataFrame ライブラリ、Polars を基盤としています。変換にはハイブリッド方式を採用しています。単純な変換(strip、lowercase)では Polars のネイティブ式を Rust エンジンで実行し、複雑な変換(電話番号の解析、日付の解析)では map_batches を介して最適化された Python を使用します。
ベンチマーク
GoldenFlow は、DQBench の変換ベンチマークで、3 つのティアすべて(顧客データベース、eコマース、医療保険請求)において 100/100 を達成しています。
pip install dqbench
dqbench run goldenflow
GoldenFlow を選ぶ理由
| GoldenFlow | pandas スクリプト | Great Expectations | dbt | Dataprep.Clean | |
|---|---|---|---|---|---|
| 設定不要の変換 | はい(自動検出) | いいえ | いいえ(検証のみ) | いいえ(SQL 変換) | 一部対応 |
| 76 個の組み込み変換(11 カテゴリ) | はい | 手動 | いいえ(バリデーターであり、変換ツールではありません) | SQL 経由 | 約 30 個のクリーナー |
| ドメインパック(医療、金融など) | 5 個を組み込み | いいえ | いいえ | いいえ | いいえ |
| スキーママッピング | 自動+手動 | 手動 | いいえ | ref/source 経由 | いいえ |
| 監査証跡(マニフェスト) | JSON で自動生成 | 手動 | いいえ | ログ経由 | いいえ |
| ストリーミング/大容量ファイル | 組み込み | 手動でチャンク処理 | いいえ | はい(データウェアハウス) | いいえ |
| MCP サーバー | はい | いいえ | いいえ | いいえ | いいえ |
| Polars ネイティブ | はい | いいえ(pandas) | いいえ(pandas/Spark) | いいえ(SQL) | いいえ(pandas) |
| DQBench 変換スコア | 100/100 | 該当なし | 該当なし | 該当なし | 該当なし |
GoldenFlow は、検証と照合の間にある変換ステップに特化して構築されており、汎用 ETL ツールではありません。乱雑なデータを、クリーンで標準化されたデータへ自動的に変換します。
エラー処理
GoldenFlow は CLI の境界でエラーを捕捉し、アクションにつながるわかりやすいメッセージを表示します。生のスタックトレースは表示されません。個々の変換エラーは実行をクラッシュさせず、マニフェストに記録されます。この動作を変更するには --strict を使用してください。
プログレスバー
時間のかかる操作(ストリーミング、監視モード、スケジューリング)では、バッチ数、処理済み行数、推定完了時間を示す Rich のプログレススピナーが表示されます。
GitHub: github.com/benzsevern/goldenflow 作者: Ben Severn ライセンス: MIT Python: 3.11+ | Node.js: 20+ | npm: goldenflow | PyPI: goldenflow
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。