domo-data-generator について
domo-data-generatorは、関連性のあるサンプルデータを生成してDomoへアップロードするコマンドラインスキルです。YAMLカタログでデータセットを定義し、共有エンティティでデータソース間の参照を保ちます。
主な機能
- 01YAMLカタログからサンプルデータセットを生成
- 02データセット間のエンティティ整合性を維持
- 03日付を更新してデータの鮮度を維持
- 04Domoデータセットの作成とアップロード
- 05JSON、テーブル、YAML形式で出力
活用シーン
- 01新しいDomoインスタンス用のサンプルデータ作成
- 02定期的なデータ更新と再アップロード
- 03カタログへのカスタムデータセット定義の追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ stahura/ domo-ai-vibe-rules --skill domo-data-generatorインストール後、Claude Code で/domo-data-generatorを入力して読み込まれたか確認します。
詳細
Domo サンプルデータジェネレーター
datagen CLI を使って、Domo 用の現実的な相互参照サンプルデータを生成します。
リポジトリ: https://github.com/brrink/domo_data_generator
概要
このジェネレーターは、主要なビジネスプラットフォームを反映したサンプルデータを、データソースをまたいで一貫したエンティティの整合性を保ちながら作成し、Domo にアップロードします。以下の機能を備えています。
- 6 つのソースカテゴリ(Salesforce、Google Analytics、Financial、Marketing、Health、AdPoint)にわたる、事前構築済みの 18 個のデータセット
- データセットを簡単に追加できる、YAML 駆動のカタログ
- 共有エンティティプール(企業、人物、製品、営業担当者、キャンペーン)
- データを最新の状態に見せる日付のローリング
- Domo との直接連携(データセットの作成、アップロード、コネクターアイコンの設定)
- デフォルトで構造化 JSON を出力(AI エージェントに適しています)
- pipx でインストール可能 — 任意のディレクトリから実行できます
セットアップ
# Install globally with pipx (recommended)
pipx install git+https://github.com/brrink/domo_data_generator.git
# Initialize a working directory
mkdir my-domo-data && cd my-domo-data
datagen init
# Edit .env with your Domo credentials
.env.example が見つからない場合、またはクリーンな状態から始めたい場合は、作業ディレクトリに .env を作成し、次の内容を記述します。
cat > .env <<'EOF'
DOMO_CLIENT_ID=your_client_id_here
DOMO_CLIENT_SECRET=your_client_secret_here
DOMO_API_HOST=api.domo.com
DOMO_INSTANCE=your_instance_name
DOMO_SET_CONNECTOR_TYPE=false
EOF
必須の環境変数
| 変数 | 用途 |
|---|---|
DOMO_CLIENT_ID | OAuth クライアント識別子 |
DOMO_CLIENT_SECRET | OAuth クライアントシークレット |
DOMO_API_HOST | API エンドポイントのホスト名 |
DOMO_INSTANCE | Domo インスタンス名 |
DOMO_SET_CONNECTOR_TYPE | コネクターアイコンのカスタマイズを有効化します(任意、デフォルト:false) |
認証の境界に関する注意:
domo_data_generatorは独自のパブリック API/OAuth 認証情報フローを使用し、community-domo-cliや ryuu セッション認証を経由して実行されることはありません。現在のツール利用の境界: Product API の自動化の大半には
community-domo-cliを使用してください。ただし、このスキルでの datagen によるデータセットの作成/アップロードは、現在.envの OAuth 認証情報(DOMO_CLIENT_ID/DOMO_CLIENT_SECRET)を使ったpython -m datagenに依存しています。
CLI リファレンス
エントリーポイント:datagen [OPTIONS] COMMAND [ARGS]
グローバルオプション
| オプション | 説明 |
|---|---|
--verbose / -v | 詳細なログ出力を有効にします |
--output / -o TEXT | 出力形式:json(デフォルト)、table、yaml |
--yes / -y | 確認プロンプトをスキップします |
すべてのコマンドは、機械で解析しやすいよう、デフォルトで構造化 JSON を出力します。
Init コマンド
init -- 作業ディレクトリを初期化します
datagen init # Initialize current directory
datagen init /path/to/dir # Initialize a specific directory
同梱のカタログ YAML ファイルを ./catalog/ にコピーし、.env テンプレートを作成して、./data/ ディレクトリを作成します。新しいディレクトリで CLI を使う前に、一度実行してください。
基本コマンド
generate -- サンプルデータを生成します
datagen generate --all # Generate all datasets
datagen generate salesforce_opportunities # Generate one dataset
datagen generate --all --seed 42 # Reproducible generation
datagen generate --all --dry-run # Preview without writing
最初にエンティティプールを初期化する必要があります。スキーマに明示的な entity_ref 列がない場合でも、generate の前に python -m datagen pool regenerate を実行してください。
| オプション | 説明 |
|---|---|
name | データセット名(YAML ファイル名の拡張子を除いた部分)、任意 |
--all | すべてのデータセットを生成します |
--seed INTEGER | 再現性を確保するためのランダムシード |
--catalog-dir PATH | カタログディレクトリの上書き |
--data-dir PATH | データディレクトリの上書き |
--dry-run | ファイルを書き込まずにプレビューします |
upload -- データを Domo にアップロードします(完全置換)
datagen upload --all
datagen upload salesforce_opportunities
DOMO_CLIENT_ID と DOMO_CLIENT_SECRET が必要です。
| オプション | 説明 |
|---|---|
name | データセット名、任意 |
--all | すべてのデータセットをアップロードします |
--catalog-dir PATH | カタログディレクトリの上書き |
--data-dir PATH | データディレクトリの上書き |
create-dataset -- カタログから Domo にデータセットを作成します
datagen create-dataset --all --skip-existing
datagen create-dataset salesforce_opportunities
DOMO_CLIENT_ID と DOMO_CLIENT_SECRET が必要です。domo_id はローカルに保存されます(書き込み可能な場合はカタログ YAML に、それ以外の場合は data/domo_ids.json に保存されます)。
| オプション | 説明 |
|---|---|
name | データセット名、任意 |
--all | すべてのデータセットを作成します |
--skip-existing | すでに domo_id があるデータセットをスキップします |
--catalog-dir PATH | カタログディレクトリの上書き |
roll-dates -- 現在の日付に合わせてローリング日付列をずらす
datagen roll-dates
datagen roll-dates --anchor-date 2026-04-01
| オプション | 説明 |
|---|---|
--anchor-date TEXT | 対象の日付(YYYY-MM-DD)。既定値は今日です |
--catalog-dir PATH | カタログディレクトリの上書き |
--data-dir PATH | データディレクトリの上書き |
情報表示コマンド
list -- カタログのデータセット定義を一覧表示する
datagen list # JSON output (default)
datagen --output table list # Rich table for humans
datagen list --verbose # Include column/schema details
status -- すべてのデータセットの生成状況を表示する
datagen status
コネクターアイコンコマンド
DOMO_DEVELOPER_TOKEN と DOMO_INSTANCE が必要です。
discover-types -- Domo のコネクター/プロバイダーの種類を検索する
datagen discover-types salesforce
set-type -- Domo データセットにコネクターアイコンを設定する
datagen set-type salesforce_opportunities
datagen set-type salesforce_opportunities --provider-key custom_key
set-type-all -- domo_id があるすべてのデータセットにコネクターアイコンを設定する
datagen set-type-all
エンティティプールコマンド
pool regenerate -- 共有エンティティプールを再生成する
datagen pool regenerate
datagen pool regenerate --seed 99
datagen pool regenerate --company-count 500 --person-count 1000
| オプション | 既定値 |
|---|---|
--seed INTEGER | 42 |
--company-count INTEGER | 200 |
--person-count INTEGER | 500 |
--product-count INTEGER | 50 |
--sales-rep-count INTEGER | 20 |
--campaign-count INTEGER | 30 |
pool show -- エンティティプールの概要を表示する
datagen pool show
一般的なワークフロー
新しい Domo インスタンスの完全なセットアップ
datagen init
# Edit .env with credentials
datagen pool regenerate
datagen generate --all
datagen create-dataset --all
datagen upload --all
datagen set-type-all
cron による毎日の更新
# Crontab entry: roll dates and re-upload daily at 6 AM
0 6 * * * cd /path/to/project && datagen roll-dates && datagen upload --all
単一のデータセットを最初から最後まで生成する
datagen generate salesforce_opportunities
datagen create-dataset salesforce_opportunities
datagen upload salesforce_opportunities
datagen set-type salesforce_opportunities
含まれるデータセット
| カテゴリー | データセット名 | キー | 行数 |
|---|---|---|---|
| Salesforce | Salesforce - Accounts | salesforce_accounts | 500 |
| Salesforce | Salesforce - Contacts | salesforce_contacts | 1,500 |
| Salesforce | Salesforce - Opportunities | salesforce_opportunities | 2,500 |
| Google Analytics | Google Analytics - Sessions | ga_sessions | 5,000 |
| Google Analytics | Google Analytics - Page Views | ga_pageviews | 10,000 |
| Financial | QuickBooks - Invoices | financial_invoices | 3,000 |
| Financial | NetSuite - General Ledger | financial_gl_entries | 5,000 |
| Marketing | Google Ads - Campaign Performance | marketing_google_ads | 3,000 |
| Marketing | Facebook Ads - Campaign Performance | marketing_facebook_ads | 2,500 |
| Marketing | HubSpot - Contacts | marketing_hubspot_contacts | 2,000 |
| Marketing | Marketing - Market Leads | marketing_market_leads | 2,500 |
| Marketing | Marketo - Leads | marketing_marketo_leads | 3,000 |
| Health | Health Portal - Demographics | health_demographics | 15 |
| Health | Health Portal - Lab Results | health_lab_results | 1,470 |
| Health | Health Portal - Vitals | health_vitals | 5,250 |
| AdPoint | AdPoint - Orders | adpoint_orders | 150 |
| AdPoint | AdPoint - Line Items | adpoint_line_items | 500 |
| AdPoint | AdPoint - Flights | adpoint_flights | 2,000 |
エンティティプール
共有エンティティプールにより、データセット間で一貫した参照を利用できます。エンティティは一度生成され、すべてのデータセットで再利用されます。
| エンティティタイプ | 既定の件数 | 主なフィールド |
|---|---|---|
| company | 200 | id, account_id, name, domain, industry, size, city, state, annual_revenue, employee_count |
| person | 500 | id, contact_id, first_name, last_name, full_name, email, company_id, company_name, title, phone |
| product | 50 | id, name, category, unit_price, sku |
| sales_rep | 20 | id, rep_id, first_name, last_name, full_name, email, region |
| campaign | 30 | id, name, channel, budget, status |
新しいデータセット定義の追加
データセット定義は catalog/ ディレクトリに YAML ファイルとして格納されています。各 YAML ファイルでは、メタデータ、列、ジェネレーターの設定を定義します。
YAML 構造
dataset:
name: My Custom Dataset
domo_id: null
source_type: custom
description: "Description of the dataset"
row_count: 1000
tags:
- custom
- demo
schema:
- name: id
type: STRING
generator: uuid4
- name: company_name
type: STRING
generator: entity_ref
entity: company
field: name
- name: amount
type: DOUBLE
generator: random_decimal
min: 100.0
max: 10000.0
precision: 2
- name: created_date
type: DATE
generator: date_range
start_days_ago: 365
end_days_ahead: 0
rolling: true
利用可能な列タイプ
STRING、LONG、DOUBLE、DECIMAL、DATETIME、DATE
利用可能なジェネレーター
汎用: uuid4、random_choice、weighted_choice、random_int、random_decimal、date_range、entity_ref、compound、sequence、constant、derived_from_date、stage_derived、faker
Salesforce: sf_id、sf_opportunity_name、sf_case_subject、sf_lead_rating
Google Analytics: ga_session_id、ga_page_path、ga_source、ga_medium、ga_campaign、ga_browser、ga_device_category、ga_country、ga_bounce_rate、ga_session_duration、ga_pageviews、ga_landing_page
財務: gl_account_code、gl_account_name、invoice_number、payment_terms、payment_method、invoice_status、journal_type、department、fiscal_period、debit_credit
マーケティング/広告: ad_platform、campaign_objective、ad_format、ad_headline、ad_keyword、targeting_type、impressions、clicks_from_impressions、ctr、cost_per_click、ad_spend、conversions_from_clicks、hubspot_lifecycle、hubspot_lead_status、ad_group_id
ヘルスケア: health_lab_init、health_lab_field、health_vital_init、health_vital_field、health_demographics
ジェネレーターの列オプション
| オプション | 使用対象 | 説明 |
|---|---|---|
entity | entity_ref | 参照するエンティティプールの種類 |
field | entity_ref | エンティティから取得するフィールド |
choices | random_choice、weighted_choice | 値の候補リスト |
min / max | random_int、random_decimal | 値の範囲 |
precision | random_decimal | 小数点以下の桁数 |
template | compound | {field} プレースホルダーを含む文字列テンプレート |
refs | compound | テンプレート置換用の列参照 — 列名文字列のYAML リストである必要があります(例:["sku", "line_id"])。辞書/オブジェクトは使用できません。辞書を指定すると ValidationError: schema.N.refs — Input should be a valid list が発生します。 |
start_days_ago / end_days_ahead | date_range | 今日を基準とした日付範囲 |
rolling | date_range | 鮮度を保つための日付ローリングを有効化 |
mapping | stage_derived | ソース値を派生値にマッピング |
source_column | stage_derived、derived_from_date | 派生元の列 |
format | derived_from_date | 日付形式の文字列 |
faker_method | faker | Faker ライブラリのメソッド名 |
faker_args | faker | Faker メソッドに渡す引数 |
weighted_choice の YAML 形式:
generator: weighted_choice
choices:
"Tier 1": 0.40
"Tier 2": 0.35
"Tier 3": 0.25
compoundのrefsと書式付きランダム文字列:PO-12345のような値には、compound/refsを無理に使うのではなく、bothifyを指定したfakerを使用してください。- name: purchase_order_ref type: STRING generator: faker faker_method: bothify faker_args: text: "PO-#####"
ルール
- まず
datagen initを実行する -- ほかのコマンドを使う前に、作業ディレクトリを初期化してください。これによりカタログがコピーされ、.envが作成されます。 - アップロードの前に必ず生成する -- CSV データファイルが存在することを確認するため、
uploadの前にgenerate(またはgenerate --all)を実行してください。 - 初回アップロードの前にデータセットを作成する -- 新しいデータセットの場合は、
uploadの前にcreate-datasetを実行してください。domo_idはローカルに保存されます。 --skip-existingを使用する --create-dataset --allの実行時には、すでにdomo_idがあるデータセットの重複を避けるため、--skip-existingを使用してください。- エンティティプールの整合性 -- プールを再生成(
pool regenerate)すると、それまでに生成されたすべてのデータが無効になります。その後、すべてのデータセットを再生成してください。 - 日付ローリング -- 日付列を最新の状態に保つため、アップロードの前に
roll-datesを使用してください。影響を受けるのはrolling: trueの列のみです。 - 認証情報 --
uploadとcreate-datasetにはDOMO_CLIENT_IDとDOMO_CLIENT_SECRETが必要です。set-typeとdiscover-typesにはDOMO_DEVELOPER_TOKENが必要です。オフラインコマンドでは認証情報は不要です。 - 再現性 -- 実行間でデータ生成を再現可能にするには、
--seedを使用してください。 - 出力形式 -- デフォルトの出力は JSON です。人が読みやすい Rich テーブルを表示するには、
--output tableを使用してください。
チェックリスト
- CLI をインストールします(
pipx install git+https://github.com/brrink/domo_data_generator.git) - 作業ディレクトリを初期化します(
datagen init) - Domo の認証情報を
.envに設定します - エンティティプールを生成します(
datagen pool regenerate) - データセットを生成します(
datagen generate --all) - Domo にデータセットを作成します(
datagen create-dataset --all --skip-existing) - データをアップロードします(
datagen upload --all) - 必要に応じてコネクターのアイコンを設定します(
datagen set-type-all) - 必要に応じて、日付の更新とアップロードを毎日実行するよう Cron を設定します