mcpField
D
domo-data-generator

domo-data-generator

github.com/stahuraデータ・データベース24185 回インストール26 週間前に更新
リポジトリ

domo-data-generator について

domo-data-generatorは、関連性のあるサンプルデータを生成してDomoへアップロードするコマンドラインスキルです。YAMLカタログでデータセットを定義し、共有エンティティでデータソース間の参照を保ちます。

主な機能

  1. 01YAMLカタログからサンプルデータセットを生成
  2. 02データセット間のエンティティ整合性を維持
  3. 03日付を更新してデータの鮮度を維持
  4. 04Domoデータセットの作成とアップロード
  5. 05JSON、テーブル、YAML形式で出力

活用シーン

  1. 01新しいDomoインスタンス用のサンプルデータ作成
  2. 02定期的なデータ更新と再アップロード
  3. 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_IDOAuth クライアント識別子
DOMO_CLIENT_SECRETOAuth クライアントシークレット
DOMO_API_HOSTAPI エンドポイントのホスト名
DOMO_INSTANCEDomo インスタンス名
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 INTEGER42
--company-count INTEGER200
--person-count INTEGER500
--product-count INTEGER50
--sales-rep-count INTEGER20
--campaign-count INTEGER30
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

含まれるデータセット

カテゴリーデータセット名キー行数
SalesforceSalesforce - Accountssalesforce_accounts500
SalesforceSalesforce - Contactssalesforce_contacts1,500
SalesforceSalesforce - Opportunitiessalesforce_opportunities2,500
Google AnalyticsGoogle Analytics - Sessionsga_sessions5,000
Google AnalyticsGoogle Analytics - Page Viewsga_pageviews10,000
FinancialQuickBooks - Invoicesfinancial_invoices3,000
FinancialNetSuite - General Ledgerfinancial_gl_entries5,000
MarketingGoogle Ads - Campaign Performancemarketing_google_ads3,000
MarketingFacebook Ads - Campaign Performancemarketing_facebook_ads2,500
MarketingHubSpot - Contactsmarketing_hubspot_contacts2,000
MarketingMarketing - Market Leadsmarketing_market_leads2,500
MarketingMarketo - Leadsmarketing_marketo_leads3,000
HealthHealth Portal - Demographicshealth_demographics15
HealthHealth Portal - Lab Resultshealth_lab_results1,470
HealthHealth Portal - Vitalshealth_vitals5,250
AdPointAdPoint - Ordersadpoint_orders150
AdPointAdPoint - Line Itemsadpoint_line_items500
AdPointAdPoint - Flightsadpoint_flights2,000

エンティティプール

共有エンティティプールにより、データセット間で一貫した参照を利用できます。エンティティは一度生成され、すべてのデータセットで再利用されます。

エンティティタイプ既定の件数主なフィールド
company200id, account_id, name, domain, industry, size, city, state, annual_revenue, employee_count
person500id, contact_id, first_name, last_name, full_name, email, company_id, company_name, title, phone
product50id, name, category, unit_price, sku
sales_rep20id, rep_id, first_name, last_name, full_name, email, region
campaign30id, 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

ジェネレーターの列オプション
オプション使用対象説明
entityentity_ref参照するエンティティプールの種類
fieldentity_refエンティティから取得するフィールド
choicesrandom_choice、weighted_choice値の候補リスト
min / maxrandom_int、random_decimal値の範囲
precisionrandom_decimal小数点以下の桁数
templatecompound{field} プレースホルダーを含む文字列テンプレート
refscompoundテンプレート置換用の列参照 — 列名文字列のYAML リストである必要があります(例:["sku", "line_id"])。辞書/オブジェクトは使用できません。辞書を指定すると ValidationError: schema.N.refs — Input should be a valid list が発生します。
start_days_ago / end_days_aheaddate_range今日を基準とした日付範囲
rollingdate_range鮮度を保つための日付ローリングを有効化
mappingstage_derivedソース値を派生値にマッピング
source_columnstage_derived、derived_from_date派生元の列
formatderived_from_date日付形式の文字列
faker_methodfakerFaker ライブラリのメソッド名
faker_argsfakerFaker メソッドに渡す引数

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-#####"

ルール

  1. まず datagen init を実行する -- ほかのコマンドを使う前に、作業ディレクトリを初期化してください。これによりカタログがコピーされ、.env が作成されます。
  2. アップロードの前に必ず生成する -- CSV データファイルが存在することを確認するため、upload の前に generate(または generate --all)を実行してください。
  3. 初回アップロードの前にデータセットを作成する -- 新しいデータセットの場合は、upload の前に create-dataset を実行してください。domo_id はローカルに保存されます。
  4. --skip-existing を使用する -- create-dataset --all の実行時には、すでに domo_id があるデータセットの重複を避けるため、--skip-existing を使用してください。
  5. エンティティプールの整合性 -- プールを再生成(pool regenerate)すると、それまでに生成されたすべてのデータが無効になります。その後、すべてのデータセットを再生成してください。
  6. 日付ローリング -- 日付列を最新の状態に保つため、アップロードの前に roll-dates を使用してください。影響を受けるのは rolling: true の列のみです。
  7. 認証情報 -- upload と create-dataset には DOMO_CLIENT_ID と DOMO_CLIENT_SECRET が必要です。set-type と discover-types には DOMO_DEVELOPER_TOKEN が必要です。オフラインコマンドでは認証情報は不要です。
  8. 再現性 -- 実行間でデータ生成を再現可能にするには、--seed を使用してください。
  9. 出力形式 -- デフォルトの出力は 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 を設定します

コメント