用途:dv-query 用于读取和分析 Dataverse 记录,覆盖批量读取、多页迭代、筛选、聚合、分组、联接与导出等场景。脚本须使用 Python 与 Dataverse CLI,不使用 Node.js 或 JavaScript。
主要能力:按读取形态选择 MCP、Dataverse CLI 或 SDK。MCP 适合小型交互式读取;CLI 适合无头单行命令(OData、SQL、count);SDK 适合批量迭代与分析。client.query.sql() 支持 SELECT、DISTINCT、TOP N(0-5000)、INNER/LEFT JOIN、WHERE、GROUP BY、ORDER BY、OFFSET/FETCH 及 COUNT/SUM/AVG/MIN/MAX,结果上限约 5000 行,不支持 SELECT *、子查询、CTE、HAVING、UNION、RIGHT/FULL/CROSS JOIN、CASE 和函数。client.query.fetchxml() 支持服务端联接与聚合,返回惰性查询对象,需调用 .execute() 或 .execute_pages()。client.records.list() 收集所有页并返回扁平 QueryResult,list_pages() 逐页流式返回;retrieve() 按 GUID 取单条记录,未找到返回 None。可用 include_annotations 获取格式化显示值,用 expand 解析查找字段。
使用方式:先通过 auth 的 get_client("dv-query") 获取客户端,处理认证、环境 URL 与插件归属。CLI 示例:dataverse data query --table accounts --select "name,accountid" --filter "name eq 'john'" --top 10 --json;dataverse data count --table accounts;dataverse data query --sql "SELECT name, accountid FROM account WHERE name LIKE '%john%'" --json。字段大小写需注意:结构列用全小写 LogicalName,导航属性区分大小写并匹配 $metadata。
适用场景:简单筛选读取、计数、单表聚合、跨表聚合、查找解析、批量导出到 DataFrame、交互式分析、查找重复项等。
限制:SQL 结果超 5000 行会被静默截断;$apply 仅限单一实体集且有 5 万源记录上限;CLI 需要 .NET 与 keyring,在 ChatGPT web / Codex cloud 上不可用,应改用 SDK;ERP 读取不走 DataverseClient,需用 ERP MCP 或 CLI --target erp。创建、更新、删除记录应使用 dv-data,表结构变更使用 dv-metadata,解决方案导出部署使用 dv-solution。