mcpField
S
search-consumption-cli

search-consumption-cli

github.com/microsoft数据与数据库1.3k204 次安装3 周前更新
代码仓库

关于 search-consumption-cli

用于跨工作区搜索 Microsoft Fabric 目录项的命令行 Skill,涵盖类型筛选、分页、结果消歧和 API 调用规范。

主要功能

  1. 01搜索项名称、说明和工作区名称
  2. 02按项类型筛选结果
  3. 03列出指定类型的所有项
  4. 04使用延续令牌分页
  5. 05获取项和工作区 ID

适用场景

  1. 01按名称或说明查找 Fabric 项
  2. 02跨工作区列出 Lakehouse
  3. 03筛选报表或语义模型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/microsoft/skills-for-fabric --skill search-consumption-cli

安装后在 Claude Code 中输入/search-consumption-cli确认已加载。

附带文件apm.yml

详细介绍

遥测 — 必须。 每个 api.fabric.microsoft.com 调用都必须携带 x-ms-fabric-skill: search-consumption-cli(az rest:--headers "x-ms-fabric-skill=search-consumption-cli"), 包括每次 LRO 轮询、fabric_lro 和重试。代码片段中省略了此标头,但仍需添加。

重要提示

  1. Catalog Search API 查找的是项,而不是工作区。要按名称查找工作区,请使用 GET /v1/workspaces(参见 COMMON-CLI.md § 按名称解析工作区属性)。
  2. 搜索文本会匹配项的显示名称、说明和工作区名称。
  3. 不支持 Dataflow (Gen1) 和 Dataflow (Gen2)。

Catalog Search — CLI 技能

前置知识

目录

任务参考备注
搜索项SKILL.md § 搜索项按名称、说明或工作区名称搜索
列出某类型的所有项SKILL.md § 列出某类型的所有项空搜索 + 类型筛选器
分页SKILL.md § 分页延续令牌模式
Agent 工作流SKILL.md § Agentic Workflow
示例SKILL.md § 示例
注意事项和故障排除SKILL.md § 注意事项和故障排除

必须/优先/避免

必须执行
优先执行
  • 优先使用 Catalog Search,而非列出后筛选 — 只需一次跨工作区调用,无需先解析工作区。
  • 使用类型筛选器 — 使用 "filter": "Type eq 'Lakehouse'" 缩小结果范围,减少干扰。
  • 使用空搜索和类型筛选器 — 列出所有工作区中的某类型项。
  • 使用 jq 从响应中提取 ID — 对嵌套的 hierarchy.workspace,比 JMESPath 更简洁。
避免
  • 搜索工作区 — Catalog Search API 返回的是项,而不是工作区。请改用 GET /v1/workspaces(参见 COMMON-CLI.md § 按名称解析工作区属性)。
  • 在已知工作区/项后查询源数据 — 应改用特定工作负载的使用技能(sqldw-cli、spark-cli、eventhouse-cli 或 fabriciq),而非 Catalog Search。
  • 臆造筛选语法 — 仅支持 eq、ne、or 和括号。
  • 假设支持所有项类型 — 暂不返回 Dataflow (Gen1) 和 Dataflow (Gen2)。

搜索项

cat > /tmp/body.json << 'EOF'
{"search": "SalesLakehouse", "filter": "Type eq 'Lakehouse'", "pageSize": 10}
EOF
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json

搜索文本会匹配项的显示名称、说明和工作区名称。类型筛选为可选项。对于每个匹配结果,响应包含 id、type、displayName、description 和 hierarchy.workspace(其中包含 id 和 displayName)。

提取项 ID 和工作区 ID
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json \
  --query "value[0].{itemId:id, workspaceId:hierarchy.workspace.id, name:displayName}" \
  --output json

筛选示例
目标筛选器
仅湖仓Type eq 'Lakehouse'
报表或语义模型Type eq 'Report' or Type eq 'SemanticModel'
排除笔记本Type ne 'Notebook'

支持的项类型完整列表,请参见 Catalog Search API 参考。


列出某类型的所有项

使用空搜索字符串和类型筛选器(pageSize 最大为 1000):

cat > /tmp/body.json << 'EOF'
{"search": "", "filter": "Type eq 'Lakehouse'", "pageSize": 100}
EOF
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json

分页

如果响应包含非 null 的 continuationToken,请在下一个请求中传入该值:

cat > /tmp/body.json << 'EOF'
{"search": "", "filter": "Type eq 'Lakehouse'", "pageSize": 100, "continuationToken": "<token>"}
EOF
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json

持续请求,直到 continuationToken 为 null。


Agent 工作流

  1. 询问 — 用户提供项目名称、类型或描述关键词。
  2. 搜索 — 使用用户的输入和可选的类型筛选条件调用 Catalog Search。
  3. 消除歧义 — 如果有多个匹配项,展示搜索结果(名称、类型、工作区),并请用户选择。
  4. 返回 — 提供搜索结果,并包含项目 id 和 hierarchy.workspace.id,供后续使用。

示例

查找特定报表
cat > /tmp/body.json << 'EOF'
{"search": "Monthly Sales Revenue", "filter": "Type eq 'Report'", "pageSize": 10}
EOF
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json \
  --query "value[].{name:displayName, type:type, workspace:hierarchy.workspace.displayName}" \
  --output table
列出所有工作区中的语义模型
cat > /tmp/body.json << 'EOF'
{"search": "", "filter": "Type eq 'SemanticModel'", "pageSize": 1000}
EOF
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json
将搜索结果保存到文件
cat > /tmp/body.json << 'EOF'
{"search": "", "filter": "Type eq 'Lakehouse'", "pageSize": 1000}
EOF
az rest --method post \
  --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/catalog/search" \
  --body @/tmp/body.json \
  --query "value[].{name:displayName, type:type, workspace:hierarchy.workspace.displayName, id:id}" \
  --output json > /tmp/search_results.json

常见问题与故障排除

症状原因修复方法
401 Unauthorized令牌受众错误或会话已过期验证 --resource "https://api.fabric.microsoft.com"。运行 az login。
InvalidPageSizepageSize 超出 1–1000 的范围使用 1 到 1000 之间的值。
InvalidFilter筛选语法错误仅支持 eq、ne、or 和括号。不要将 eq 与 and 混用,也不要将 ne 与 or 混用。不要在同一个筛选条件中混用 eq 和 ne。
TypeNotFound筛选条件中的项目类型无法识别检查拼写(区分大小写)。有效类型请参阅 API 参考。
FilterTooManyValues筛选条件包含超过 500 个值减少筛选条件中的类型值数量。
InvalidRequest缺少请求正文确保 --body 指向有效的 JSON 文件。
已知项目的搜索结果为空不支持该项目类型Dataflow Gen1/Gen2 不在支持范围内。请改用 GET /v1/workspaces/{id}/items。
找不到新项目Catalog 索引传播延迟索引延迟不固定,且尚未接近实时 — 通常需要几分钟,但无法保证。刚创建的项目可能尚未出现在搜索结果中;请改用 GET /v1/workspaces/{id}/items 验证项目是否存在。
结果过多搜索文本过于宽泛添加类型筛选条件,或使用更具体的搜索文本。

评论

支持 Markdown