mcpField
O
odata-execution

odata-execution

github.com/datexデータ・データベース115 回インストール
リポジトリ

odata-execution について

odata-executionは、`dxs odata execute`でODataクエリを段階的に作成・検証するスキルです。エンティティスキーマに基づいてクエリ構造をテストし、タイムアウトやエラーの切り分けを行うユーザー向けです。

主な機能

  1. 01段階的なクエリ作成と検証
  2. 02エンティティフィールドの選択
  3. 03ネストした展開の追加
  4. 04サーバー側へのフィルター適用
  5. 05キーセグメントクエリの確認

活用シーン

  1. 01エンティティスキーマに基づくフィールド検証
  2. 02ネストした展開の段階的なテスト
  3. 03通信障害とクエリエラーの切り分け

インストール

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

$npx skills add https://github.com/datex/skills --skill odata-execution

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

同梱ファイルreferences/filter-patterns.md

詳細

OData の実行

dxs odata execute を使って、OData クエリを段階的に作成、テスト、検証します。

参考資料

入出力の仕様

入力: 接続 ID + エンティティの知識(フィールド名、ナビゲーションプロパティ — schema-explorer または会話のコンテキストから取得)

出力: 検証済みの OData クエリ文字列(ファイルではなく、会話のコンテキスト内)

ワークフロー — クエリを段階的に構築

クエリは一度に 1 層ずつ構築します。大きなクエリはタイムアウトし、expand を 1 つずつ追加すると問題の切り分けが容易になります。$select で 400 が返る場合は、フィールド名が間違っています。schema properties を確認し、$select を削除しないでください。

ステップ 1:$select を使ったベースエンティティ

ルートエンティティと、そのスカラー フィールドのみから始めます。

dxs odata execute -c <id> -q 'Entity?$top=1&$select=Id,Field1,Field2'
ステップ 2:1 対 1 の expand を追加

単一の関連エンティティを返すナビゲーションプロパティを追加します。

dxs odata execute -c <id> -q 'Entity?$top=1&$select=Id,Field1&$expand=Account($select=Id,Name),Status($select=Id,Name)'
ステップ 3:ネストされた expand を含むコレクションの expand を追加

ネストされた展開も含め、コレクションを返すナビゲーションプロパティを追加します。

dxs odata execute -c <id> -q 'Entity?$top=1&$select=Id,Field1&$expand=Lines($select=Id,LineNumber;$expand=OrderLine($select=OrderId;$expand=Material($select=Id,Name)))'
ステップ 4:すべてを組み合わせて完全なクエリを作成

検証済みのすべての層を結合し、最終クエリを作成します。$top=1 を削除するのは、この段階に限ります(ユースケースに適切な場合)。

サーバー側でフィルタリングする

クライアント側でのフィルタリングを受け入れる前に、そのロジックを $filter で表現できるか確認してください。OData は、コレクションのフィルタリング用のラムダ演算子、文字列関数、$expand 内のネストされた $filter をサポートしています。パターンの全一覧は references/filter-patterns.md を参照してください。

パラメーター化クエリ(キーセグメント)

単一エンティティのクエリでは、キーセグメント構文 Entity(0) を使います。0 はプレースホルダーです。まず Entity?$top=1 でクエリ構造を検証してから、Entity(0) に切り替えてください。

Entity(0) が 404 を返すのは想定どおりです(ID が 0 のエンティティが存在しません)。再テストに時間を費やさないでください。

# First: validate structure
dxs odata execute -c <id> -q 'Entity?$top=1&$select=Id,Field1&$expand=Status($select=Id,Name)'

# Then: switch to key segment
dxs odata execute -c <id> -q 'Entity(0)?$select=Id,Field1&$expand=Status($select=Id,Name)'

重要なルール

ルール詳細
常に $top=1タイムアウトを避けるため、テスト中に使用します
シングルクォート-q には必ず '...' を使います($ のシェル展開を防ぎます)
$expand 内の $selectすべての expand 句で必須です
ネストされたオプションの区切り文字括弧内では & ではなくセミコロン(;)を使います
$select で 400 が返るフィールド名が間違っています。schema properties を確認し、$select を削除しないでください
複合キーkeys: を確認してください。Id フィールドのないエンティティもあります

よくある間違い

間違い修正方法
$select のない $expand必ず $select=Field1,Field2 を含めます
$ の値にダブルクォートを使うシングルクォートを使います。シェルはダブルクォート内の $ を展開します
クエリのテスト中に $top=1 を使わない大きなクエリはタイムアウトします。開発中は必ず上限を設定します
Entity(0) をテストして 404 に慌てる404 は想定どおりです。まず $top=1 で構造を検証してください
DXS-API-CONN / DXS-API-TLS / DXS-API-TIMEOUT / DXS-API-NET の後にクエリを書き直すこれらはクエリのエラーではなく、トランスポートの失敗です。ペイロードの suggestions[] に従ってください。configuration-roundtrip.md → Exit 141 とトランスポートエラー を参照してください

コメント