mcpField
D
data360-schema-get

data360-schema-get

github.com/forcedotcomデータ・データベース1.1k5.0k 回インストール1 日前に更新
リポジトリ

data360-schema-get について

Salesforce Data Cloudのデータ構造やフィールドメタデータを調べるスキルです。SF CLIとSSOT REST APIを使い、Data Lake Object(DLO)とData Model Object(DMO)の一覧や個別スキーマを取得します。

主な機能

  1. 01DLOとDMOの一覧表示
  2. 02オブジェクトスキーマの取得
  3. 03フィールド型とメタデータの表示
  4. 04オブジェクト詳細と件数の表示

活用シーン

  1. 01Data Cloud組織内のオブジェクト調査
  2. 02DMOマッピング作成前のフィールド確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/forcedotcom/sf-skills --skill data360-schema-get

インストール後、Claude Code で/data360-schema-getを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
README.md
scripts/
get_dlo_schema.py
get_dmo_schema.py

詳細

data360-schema-get スキル

概要

このスキルは、SSOT REST API を使用して Salesforce Data Cloud から Data Lake Object(DLO)および Data Model Object(DMO)のスキーマ情報を取得します。組織内のすべての DLO または DMO を一覧表示したり、特定の DLO または DMO の詳細なスキーマを取得したりできます。

使用するタイミング

  • Data Cloud 組織内のすべての DLO または DMO を確認したい場合
  • 特定の DLO または DMO のフィールドスキーマが必要な場合
  • Data Cloud のデータ構造を調べる場合
  • DLO または DMO のフィールドタイプやメタデータを把握したい場合

前提条件

  • SF CLI がインストールされ、対象の組織に認証済みであること
  • 組織で Data Cloud が有効になっていること
  • ユーザーに適切な Data Cloud 権限があること

スキルの実行

パラメーター
  1. org_alias(必須):SF CLI 組織のエイリアス(例:'afvibe'、'myorg')
  2. dlo_name(任意):特定の DLO の開発者名(例:'Employee__dll')
  3. dmo_name(任意):特定の DMO の開発者名(例:'Individual__dlm')
ステップ 1:接続済みの組織を確認する

最初に sf org list を実行して、どの組織に接続されているかを確認し、以降のすべての呼び出しで使用するエイリアスを抽出します。

sf org list

出力例:

┌────┬───────┬──────────────────────────┬────────────────────┬───────────┐
│    │ Alias │ Username                 │ Org Id             │ Status    │
├────┼───────┼──────────────────────────┼────────────────────┼───────────┤
│    │ myorg │ [email protected] │ 00DKZ00000b80NT2AY │ Connected │
└────┴───────┴──────────────────────────┴────────────────────┴───────────┘

出力から Alias の値(例:myorg)を抽出し、以降のすべての呼び出しで <org_alias> として使用します。期限切れや削除済みのスクラッチ組織も表示するには、--all を使用します。

ステップ 2:SF CLI の認証を検証する

API 呼び出しを行う前に、組織が接続されていることを確認します。

sf org display --target-org <org_alias> --json

接続されていない場合は、ユーザーに次のコマンドを実行するよう案内します。

sf org login web --alias <org_alias>
ステップ 3a:DLO スキーマスクリプトを実行する

Python スクリプトは、このスキルの scripts/ サブディレクトリに含まれています。

すべての DLO を一覧表示する場合:

python3 ./scripts/get_dlo_schema.py <org_alias>

特定の DLO スキーマを取得する場合:

python3 ./scripts/get_dlo_schema.py <org_alias> <dlo_name>
ステップ 3b:DMO スキーマスクリプトを実行する

すべての DMO を一覧表示する場合:

python3 ./scripts/get_dmo_schema.py <org_alias>

特定の DMO スキーマを取得する場合:

python3 ./scripts/get_dmo_schema.py <org_alias> <dmo_name>
ステップ 4:結果を提示する

結果を解析し、ユーザーが理解しやすい形式で提示します。

DLO の一覧の場合:

  • DLO 名、ラベル、カテゴリ、ID を表示する
  • 合計数を示す
  • データがある DLO(totalRecords > 0)を強調表示する

DLO スキーマの場合:

  • 基本情報(名前、ラベル、カテゴリ、ステータス)を表示する
  • すべてのフィールドについて、以下を一覧表示する:
    • フィールド名
    • データ型
    • 主キーであることを示す表示
    • NULL 許容ステータス
  • カスタムフィールドを強調表示する(DataSource__c、cdp_sys_* などのシステムフィールドは除外)
  • 利用可能な場合はレコード数を表示する

DMO の一覧の場合:

  • DMO 名、ラベル、カテゴリ、ID を表示する
  • 合計数を示す

DMO スキーマの場合:

  • 基本情報(名前、ラベル、カテゴリ、説明)を表示する
  • すべてのフィールドについて、以下を一覧表示する:
    • フィールド名
    • データ型
    • 主キーであることを示す表示
    • NULL 許容ステータス
  • 利用可能な場合はデータスペース情報を表示する
ステップ 5:次のステップを提案する

結果を表示した後、関連する次のアクションを提案します。

  • DLO のデータをクエリする
  • 計算済みインサイトを作成する
  • セグメントを作成する
  • データストリームを設定する
  • DMO マッピングを作成する

使用する API エンドポイント

すべての DLO を一覧表示する
GET /services/data/v64.0/ssot/data-lake-objects

レスポンス構造:

{
  "dataLakeObjects": [
    {
      "name": "Employee__dll",
      "label": "Employee",
      "category": "Profile",
      "id": "1dlXXXXXXXXXXXXXXX",
      "status": "ACTIVE",
      "totalRecords": 12,
      "fields": [...]
    }
  ],
  "totalSize": 5
}
DLO スキーマを取得する
GET /services/data/v64.0/ssot/data-lake-objects/{dlo_name}

レスポンス構造(一覧レスポンス内の個々のオブジェクトと同じですが、ページネーション形式でラップされています)。

すべての DMO を一覧表示する
GET /services/data/v64.0/ssot/data-model-objects

レスポンス構造:

{
  "dataModelObjects": [
    {
      "name": "Individual__dlm",
      "label": "Individual",
      "category": "Profile",
      "id": "0dmXXXXXXXXXXXXXXX",
      "fields": [...]
    }
  ],
  "totalSize": 10
}
DMO スキーマを取得する
GET /services/data/v64.0/ssot/data-model-objects/{dmo_name}

レスポンス構造(一覧レスポンス内の個々のオブジェクトと同じですが、ページネーション形式でラップされています)。

エラー処理

よくある問題:

  1. 組織が接続されていない

    • メッセージ:"Org not connected"
    • 解決策:SF CLI で認証するようユーザーに依頼します
  2. DLO が見つからない

    • メッセージ:"DLO 'XYZ__dll' not found"
    • 解決策:最初にすべての DLO を一覧表示して、名前を確認します
  3. DMO が見つからない

    • メッセージ:"DMO 'XYZ__dlm' not found"
    • 解決策:最初にすべての DMO を一覧表示して、名前を確認します
  4. 権限の問題

    • メッセージ:HTTP 403 エラー
    • 解決策:ユーザーに Data Cloud 権限があることを確認します
  5. API バージョンの不一致

    • 現在のバージョン:v64.0
    • 解決策:新しい API バージョンに対応するようスクリプトを更新できます

使用例

例 1:すべての DLO を一覧表示

User: "Show me all DLOs in afvibe org"

Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dlo_schema.py afvibe
4. Display formatted list of DLOs

例 2:特定の DLO スキーマを取得

User: "Get the schema for Employee__dll in afvibe"

Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dlo_schema.py afvibe Employee__dll
4. Display field schema with types and metadata

例 3:DLO を探索してからスキーマを取得

User: "What DLOs exist in myorg and show me the schema for the Employee one"

Response:
1. Run sf org list to discover connected org alias
2. List all DLOs in myorg
3. Identify Employee__dll
4. Get detailed schema for Employee__dll
5. Present both results

例 4:すべての DMO を一覧表示

User: "Show me all DMOs in afvibe org"

Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dmo_schema.py afvibe
4. Display formatted list of DMOs

例 5:特定の DMO スキーマを取得

User: "Get the schema for Individual__dlm in afvibe"

Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dmo_schema.py afvibe Individual__dlm
4. Display field schema with types and metadata

例 6:DMO を探索してからスキーマを取得

User: "What DMOs exist in myorg and show me the schema for the Individual one"

Response:
1. Run sf org list to discover connected org alias
2. List all DMOs in myorg
3. Identify Individual__dlm
4. Get detailed schema for Individual__dlm
5. Present both results

出力形式

DLO リストの出力
Found 5 DLOs in org 'afvibe':

1. DataCustomCodeLogs__dll
   Label: DataCustomCodeLogs
   Category: Engagement
   Records: 233

2. Employee__dll
   Label: Employee
   Category: Profile
   Records: 12

[...]
DLO スキーマの出力
DLO: Employee__dll
Label: Employee
Category: Profile
Status: ACTIVE
Records: 12

Custom Fields:
  • id__c (Text) - Primary Key
  • name__c (Text)
  • position__c (Text)
  • manager_id__c (Number)

System Fields:
  • DataSource__c (Text)
  • InternalOrganization__c (Text)
  • cdp_sys_SourceVersion__c (Text)

Next steps:
- Query data: SELECT * FROM Employee__dll LIMIT 10
- Create segment based on position field
- Set up data stream for real-time updates
DMO リストの出力
Found 10 DMOs in org 'afvibe':

1. Individual__dlm
   Label: Individual
   Category: Profile

2. ContactPointEmail__dlm
   Label: Contact Point Email
   Category: Profile

[...]
DMO スキーマの出力
DMO: Individual__dlm
Label: Individual
Category: Profile
Description: Represents an individual person

Fields:
  • Id__c (Text) - Primary Key
  • FirstName__c (Text)
  • LastName__c (Text)
  • BirthDate__c (DateTime)

Next steps:
- Query data: SELECT * FROM Individual__dlm LIMIT 10
- View DLO mappings to this DMO
- Create calculated insights

注意事項

  • DLO 名は必ず __dll サフィックスで終わります
  • DMO 名は必ず __dlm サフィックスで終わります
  • フィールド名は必ず __c サフィックスで終わります
  • システムフィールド(DataSource__c、KQ_、cdp_sys_)は自動的に追加されます
  • DLO および DMO のクエリには主キーのフィールドが必要です
  • API は大規模な結果セット向けにページネーション(limit/offset)をサポートしています

関連スキル

  • datakit_workflow:DMO マッピング操作に使用します
  • datakit_validation:datakit 設定の検証に使用します
  • DMO マッピングを作成する前にこのスキルを使用し、ソース DLO の構造を確認してください

コメント