Token导航 LogoToken导航TokenDH.com
研究检索执行命令github未标认证来源可访问许可证需确认审计提醒

eventhouse-authoring-clieventhouse authoring CLI 搜索

Agent Skill

用于辅助安全审计、权限检查、凭据风险、认证流程和常见漏洞排查。它适合让 Agent 梳理敏感配置、检查依赖风险、分析鉴权逻辑或生成安全复核清单。使用时不能把工具输出直接当最终结论,涉及密钥、令牌、用户数据或生产系统时,应先确认最小权限、脱敏方式和操作边界。

总安装

517

周安装

22

GitHub Stars

306

下载量

181
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:eventhouse-authoring-cli(eventhouse authoring CLI 搜索)
来源仓库:https://github.com/microsoft/skills-for-fabric
仓库路径:skills/eventhouse-authoring-cli
安装命令:
npx skills add https://github.com/microsoft/skills-for-fabric --skill eventhouse-authoring-cli
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/microsoft/skills-for-fabric --skill eventhouse-authoring-cli

简介

eventhouse-authoring-cli 是 Microsoft Fabric 环境中用于管理 EventHouse 内容的命令行工具。

  • 适用于查询工作区信息、获取项目详情以及执行与数据工程相关的管理任务。
  • 支持通过 JMESPath 过滤条件精准定位资源,提升运维效率。
  • 首次使用需完成更新检查,确保技能版本与宿主环境兼容。
  • 操作时需注意最小权限原则,避免对生产数据造成意外修改或泄露风险。

SKILL.md

Update Check — ONCE PER SESSION (mandatory) The first time this skill is used in a session, run the check-updates skill before proceeding. - GitHub Copilot CLI / VS Code: invoke the check-updates skill. - Claude Code / Cowork / Cursor / Windsurf / Codex: compare local vs remote package.json version. - Skip if the check was already performed earlier in this session.
CRITICAL NOTES 1. To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering 2. To find the item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace and, then, use JMESPath filtering

eventhouse-authoring-cli — Eventhouse Authoring and Management via CLI

Table of Contents

TaskReferenceNotes
Finding Workspaces and Items in FabricCOMMON-CLI.md § Finding Workspaces and Items in FabricMandatory — *READ link first* [needed for workspace/item ID resolution]
Fabric Topology & Key ConceptsCOMMON-CORE.md § Fabric Topology & Key ConceptsHierarchy, Finding Things in Fabric
Environment URLsCOMMON-CORE.md § Environment URLsKQL Cluster URI, KQL Ingestion URI
Authentication & Token AcquisitionCOMMON-CORE.md § Authentication & Token AcquisitionWrong audience = 401; KQL audience: kusto.kusto.windows.net
Core Control-Plane REST APIsCOMMON-CORE.md § Core Control-Plane REST APIsList Workspaces, List Items, Item Creation
PaginationCOMMON-CORE.md § Pagination
Long-Running Operations (LRO)COMMON-CORE.md § Long-Running Operations (LRO)
Rate Limiting & ThrottlingCOMMON-CORE.md § Rate Limiting & Throttling
OneLake Data AccessCOMMON-CORE.md § OneLake Data AccessRequires storage.azure.com token, not Fabric token
Job ExecutionCOMMON-CORE.md § Job Execution
Capacity ManagementCOMMON-CORE.md § Capacity Management
Gotchas & TroubleshootingCOMMON-CORE.md § Gotchas & Troubleshooting
Best PracticesCOMMON-CORE.md § Best Practices
Tool Selection RationaleCOMMON-CLI.md § Tool Selection Rationale
Authentication RecipesCOMMON-CLI.md § Authentication Recipesaz login flows and token acquisition
Fabric Control-Plane API via az restCOMMON-CLI.md § Fabric Control-Plane API via az restAlways pass --resource https://api.fabric.microsoft.com or az rest fails
Pagination PatternCOMMON-CLI.md § Pagination Pattern
Long-Running Operations (LRO) PatternCOMMON-CLI.md § Long-Running Operations (LRO) Pattern
OneLake Data Access via curlCOMMON-CLI.md § OneLake Data Access via curlUse curl not az rest (different token audience)
SQL / TDS Data-Plane AccessCOMMON-CLI.md § SQL / TDS Data-Plane Accesssqlcmd (Go) — not for KQL, but useful for cross-workload
Job Execution (CLI)COMMON-CLI.md § Job Execution
OneLake ShortcutsCOMMON-CLI.md § OneLake Shortcuts
Capacity Management (CLI)COMMON-CLI.md § Capacity Management
Composite RecipesCOMMON-CLI.md § Composite Recipes
Gotchas & Troubleshooting (CLI-Specific)COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)az rest audience, shell escaping, token expiry
Quick Reference: az rest TemplateCOMMON-CLI.md § Quick Reference: az rest Template
Quick Reference: Token Audience / CLI Tool MatrixCOMMON-CLI.md § Quick Reference: Token Audience ↔ CLI Tool MatrixWhich --resource + tool for each service
Authoring Capability MatrixEVENTHOUSE-AUTHORING-CORE.md § Authoring Capability MatrixRead first — KQL Database vs Shortcut (read-only); connection requires Admin/Ingestor role
Table Management and Schema EvolutionEVENTHOUSE-AUTHORING-CORE.md § Table Management and Schema EvolutionCreate Table, Create-Merge (idempotent), Alter / Rename / Drop, Schema Evolution (Rename, Swap/Blue-Green)
Ingestion and Data MappingsEVENTHOUSE-AUTHORING-CORE.md § Ingestion and Data MappingsInline, Set-or-Append/Replace, From Storage, Streaming, Data Mappings (CSV, JSON)
PoliciesEVENTHOUSE-AUTHORING-CORE.md § PoliciesRetention, Caching, Partitioning, Merge
Materialized ViewsEVENTHOUSE-AUTHORING-CORE.md § Materialized ViewsCreate, Alter, Lifecycle, Supported aggregations
Stored Functions and Update PoliciesEVENTHOUSE-AUTHORING-CORE.md § Stored Functions and Update PoliciesStored Functions, Update Policies (auto-transform on ingestion)
External TablesEVENTHOUSE-AUTHORING-CORE.md § External TablesOneLake / ADLS External Table, Query External Table
Permission ModelEVENTHOUSE-AUTHORING-CORE.md § Permission ModelDatabase Roles, Grant Permissions
Authoring Gotchas and TroubleshootingEVENTHOUSE-AUTHORING-CORE.md § Authoring Gotchas and Troubleshooting Reference10 numbered issues with cause + fix
Bash Templatesauthoring-script-templates.md § Bash TemplatesCreate Table + Ingest, Schema Deployment, Export Schema, Set Retention/Caching
PowerShell Templatesauthoring-script-templates.md § PowerShell TemplatesCreate Table + Ingest, Schema Deployment
Tool StackSKILL.md § Tool Stack
ConnectionSKILL.md § Connection
Authoring ScopeSKILL.md § Authoring Scope
Execute KQL CommandSKILL.md § Execute KQL Commandaz rest pattern — write JSON body, then execute
Table Management via CLISKILL.md § Table Management via CLICreate Table, Add Column, Drop Table
Data Ingestion via CLISKILL.md § Data Ingestion via CLIInline, From Storage, From OneLake, Set-or-Append
Policies via CLISKILL.md § Policies via CLIRetention, Caching, Streaming Ingestion
Materialized Views via CLISKILL.md § Materialized Views via CLI
Functions and Update Policies via CLISKILL.md § Functions and Update Policies via CLICreate Function, Create Update Policy
Schema Evolution via CLISKILL.md § Schema Evolution via CLISafe Schema Deployment Script, Export Current Schema
Monitoring Authoring OperationsSKILL.md § Monitoring Authoring Operations
Must / Prefer / Avoid / TroubleshootingSKILL.md § Must / Prefer / Avoid / TroubleshootingMUST DO / AVOID / PREFER checklists
Agentic WorkflowsSKILL.md § Agentic WorkflowsExploration Before Authoring, Script Generation Workflow
ExamplesSKILL.md § Examples
Agent Integration NotesSKILL.md § Agent Integration Notes

Tool Stack

ToolPurposeInstall
az cliKQL management commands via Kusto REST API; Fabric control-plane discoverywinget install Microsoft.AzureCLI
jqJSON processing and output formattingwinget install jqlang.jq

Connection

Same as eventhouse-consumption-cli. Authoring requires elevated roles:

# Discover KQL Database query URI
WS_ID="<workspace-id>"
az rest --method GET \
  --url "https://api.fabric.microsoft.com/v1/workspaces/${WS_ID}/kqlDatabases" \
  --resource "https://api.fabric.microsoft.com" \
  | jq '.value[] | {name: .displayName, queryUri: .properties.queryServiceUri}'

# Set connection variables
CLUSTER_URI="https://<cluster>.kusto.fabric.microsoft.com"
DB_NAME="MyDatabase"

# Verify admin access
cat > /tmp/kql_body.json << EOF
{"db":"${DB_NAME}","csl":".show database ${DB_NAME} principals | where Role == 'Admin'"}
EOF
az rest --method POST \
  --url "${CLUSTER_URI}/v1/rest/mgmt" \
  --resource "https://kusto.kusto.windows.net" \
  --headers "Content-Type=application/json" \
  --body @/tmp/kql_body.json \
  | jq '.Tables[0].Rows'

Authoring Scope

OperationCommand Pattern
Create table.create-merge table T (cols)
Add column.alter-merge table T (NewCol: type)
Drop table.drop table T ifexists
Ingest data.ingest into table T (...)
Set retention.alter table T policy retention...
Set caching.alter table T policy caching hot = Nd
Create function.create-or-alter function F() {...}
Create materialized view.create materialized-view MV on table T {...}
Create update policy.alter table T policy update...
Create data mapping.create table T ingestion csv mapping...

Execute KQL Command

All KQL management commands in this skill follow the same az rest pattern. After setting CLUSTER_URI and DB, write the JSON body to /tmp/kql_body.json and execute:

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":"<KQL management command>"}
EOF
az rest --method POST \
  --url "${CLUSTER_URI}/v1/rest/mgmt" \
  --resource "https://kusto.kusto.windows.net" \
  --headers "Content-Type=application/json" \
  --body @/tmp/kql_body.json \
  | jq '.Tables[0].Rows'
Nested JSON — For commands whose KQL contains embedded JSON (policies, mappings), use << 'EOF' (single-quoted) to prevent shell expansion of backslash-escaped quotes, and replace ${DB} with the literal database name.
PowerShell equivalent@{db=$Database;csl=$Command} | ConvertTo-Json -Compress | Out-File $env:TEMP\kql_body.json -Encoding utf8NoBOM then --body "@$env:TEMP\kql_body.json". See PowerShell Templates.

Table Management via CLI

Create Table (Idempotent)

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic, Duration: real)"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Add Column

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".alter-merge table Events (Region: string)"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Drop Table

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".drop table Events ifexists"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Data Ingestion via CLI

Inline Ingestion (Testing)

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".ingest inline into table Events <| 2025-01-15T10:00:00Z,Login,user1,{},0.5\n2025-01-15T10:01:00Z,Click,user2,{},0.2"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Ingest from Storage

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".ingest into table Events (h'https://mystorage.blob.core.windows.net/data/events.csv.gz;impersonate') with (format='csv', ingestionMappingReference='EventsCsvMapping', ignoreFirstRecord=true)"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Ingest from OneLake

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".ingest into table Events (h'abfss://workspace@onelake.dfs.fabric.microsoft.com/lakehouse.Lakehouse/Files/events.parquet;impersonate') with (format='parquet')"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Set-or-Append from Query

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".set-or-append CleanEvents <| RawEvents | where IsValid == true | project Timestamp, EventType, UserId"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Policies via CLI

Retention

# Set 365-day retention
cat > /tmp/kql_body.json << 'EOF'
{"db":"MyDB","csl":".alter table Events policy retention '{\"SoftDeletePeriod\":\"365.00:00:00\",\"Recoverability\":\"Enabled\"}'"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Caching (Hot Cache)

# Keep last 30 days in hot cache
cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".alter table Events policy caching hot = 30d"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Streaming Ingestion

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".alter table Events policy streamingingestion enable"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Materialized Views via CLI

# Create materialized view with backfill
cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".create materialized-view with (backfill=true) HourlyEventCounts on table Events { Events | summarize Count = count(), LastSeen = max(Timestamp) by EventType, bin(Timestamp, 1h) }"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command
# Check health
cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".show materialized-view HourlyEventCounts statistics"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Functions and Update Policies via CLI

Create Function

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".create-or-alter function with (docstring='Parse raw events', folder='ETL') ParseRawEvents() { RawEvents | extend Parsed = parse_json(RawData) | project Timestamp = todatetime(Parsed.timestamp), EventType = tostring(Parsed.eventType), UserId = tostring(Parsed.userId) }"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Create Update Policy

cat > /tmp/kql_body.json << 'EOF'
{"db":"MyDB","csl":".alter table ParsedEvents policy update @'[{\"IsEnabled\":true,\"Source\":\"RawEvents\",\"Query\":\"ParseRawEvents()\",\"IsTransactional\":true}]'"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Schema Evolution via CLI

Safe Schema Deployment Script

Save management commands in a .kql file (one per line), then execute each command via az rest:

# deploy_schema.kql contains one command per line:
# .create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic)
# .create-merge table ParsedEvents (Timestamp: datetime, EventType: string, UserId: string, PageName: string)
# .alter table Events policy retention '{\"SoftDeletePeriod\":\"365.00:00:00\",\"Recoverability\":\"Enabled\"}'
# .alter table Events policy caching hot = 30d

# Execute each command from the file (see "Execute KQL Command" section)
while IFS= read -r cmd; do
  [[ "$cmd" =~ ^// ]] && continue   # skip comment lines
  [[ -z "$cmd" ]] && continue        # skip blank lines
  cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":"${cmd}"}
EOF
  az rest --method POST \
    --url "${CLUSTER_URI}/v1/rest/mgmt" \
    --resource "https://kusto.kusto.windows.net" \
    --headers "Content-Type=application/json" \
    --body @/tmp/kql_body.json \
    | jq '.Tables[0].Rows'
done < deploy_schema.kql

Export Current Schema

cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".show database ${DB} schema as csl script"}
EOF
az rest --method POST \
  --url "${CLUSTER_URI}/v1/rest/mgmt" \
  --resource "https://kusto.kusto.windows.net" \
  --headers "Content-Type=application/json" \
  --body @/tmp/kql_body.json \
  | jq -r '.Tables[0].Rows[][0]' > current_schema.kql

Monitoring Authoring Operations

// Recent management commands
.show commands
| where StartedOn > ago(1h)
| project StartedOn, CommandType, Text = substring(Text, 0, 100), State, Duration
| order by StartedOn desc

// Ingestion failures
.show ingestion failures
| where FailedOn > ago(24h)
| summarize FailureCount = count() by ErrorCode, Table
| order by FailureCount desc

// Materialized view health
.show materialized-views
| project Name, IsEnabled, IsHealthy, MaterializedTo

Must / Prefer / Avoid / Troubleshooting

Must

  • Clarify before acting on ambiguous prompts — if the request does not specify a target table, operation type, or schema (e.g. "set up my Eventhouse", "configure my database"), ask the user what they want to do. Never infer intent and apply management commands autonomously. Irreversible side-effects (policy changes, schema mutations, data ingestion) require explicit user intent.
  • Use idempotent commands.create-merge table, .create-or-alter function, .create table ifnotexists.
  • Verify permissions before authoring — must have Admin or Ingestor role.
  • Test update policies by running the function independently before attaching.
  • Include impersonate in storage URIs when ingesting from OneLake or Blob Storage.

Prefer

  • az rest with loop for deploying multi-command schema files.
  • Fabric KQL MCP server for agent-integrated ingestion and management workflows.
  • .create-merge table over .create table for safe schema evolution.
  • Materialized views over repeated expensive aggregation queries.
  • Script-based CI/CD — export schema with .show database DB schema as csl script, store in git.

Avoid

  • .drop table without ifexists — fails on missing tables.
  • .alter table to add columns — use .alter-merge table instead (additive only).
  • Ingestion without mappings for CSV/JSON — column order or field names may not match.
  • Hardcoded storage URIs — parameterise in scripts.
  • Disabling materialized views without understanding the re-backfill cost.

Troubleshooting

SymptomFix
.create table fails "already exists"Use .create-merge table or .create table ifnotexists
Ingestion succeeds but table emptyCheck data mappings: .show table T ingestion csv mappings
Update policy not firingVerify function runs standalone; check .show table T policy update
Forbidden (403) on management commandsRequest admin or ingestor database role
Materialized view stuckCheck .show materialized-view MV statistics; may need .disable/.enable
OneLake ingest auth errorAdd ;impersonate to abfss:// URI

Agentic Workflows

Exploration Before Authoring

Always check for explicit intent before doing anything:

Step 0 → Is the request specific? Does it name a table, operation, and/or schema?
         → NO  → Ask: "What would you like to set up? Options: create tables,
                  configure policies, set up ingestion mappings, create materialized views."
                  STOP — do not proceed until user specifies.
         → YES → Continue to Step 1.
Step 1 → .show tables details                        // what exists?
Step 2 → .show table <TABLE> schema as json          // current columns
Step 3 → .show table <TABLE> policy retention        // current policies
Step 4 → Plan changes (create-merge, alter, etc.)
Step 5 → Execute changes
Step 6 → Verify: .show table <TABLE> schema as json  // confirm changes

Script Generation Workflow

Step 1 → Understand requirements from user
Step 2 → Generate KQL management commands
Step 3 → Save to .kql file
Step 4 → Deploy via az rest (one command at a time)
Step 5 → Verify deployed state matches intent

Examples

Example 1: Create Table with Policies and Mapping

# Create table
cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".create-merge table SensorData (Timestamp: datetime, DeviceId: string, Temperature: real, Humidity: real, Location: dynamic)"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command
# Set retention
cat > /tmp/kql_body.json << 'EOF'
{"db":"MyDB","csl":".alter table SensorData policy retention '{\"SoftDeletePeriod\":\"90.00:00:00\",\"Recoverability\":\"Enabled\"}'"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command
# Set caching
cat > /tmp/kql_body.json << EOF
{"db":"${DB}","csl":".alter table SensorData policy caching hot = 7d"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command
# Create JSON mapping
cat > /tmp/kql_body.json << 'EOF'
{"db":"MyDB","csl":".create table SensorData ingestion json mapping 'SensorJsonMapping' '[{\"column\":\"Timestamp\",\"path\":\"$.ts\",\"datatype\":\"datetime\"},{\"column\":\"DeviceId\",\"path\":\"$.deviceId\",\"datatype\":\"string\"},{\"column\":\"Temperature\",\"path\":\"$.temp\",\"datatype\":\"real\"},{\"column\":\"Humidity\",\"path\":\"$.humidity\",\"datatype\":\"real\"},{\"column\":\"Location\",\"path\":\"$.location\",\"datatype\":\"dynamic\"}]'"}
EOF
Execute /tmp/kql_body.json — see Execute KQL Command

Example 2: ETL with Update Policy

// 1. Target table
.create-merge table ParsedLogs (Timestamp: datetime, Level: string, Message: string, Source: string)

// 2. Transform function
.create-or-alter function ParseRawLogs() {
    RawLogs
    | extend J = parse_json(RawMessage)
    | project
        Timestamp = todatetime(J.timestamp),
        Level = tostring(J.level),
        Message = tostring(J.message),
        Source = tostring(J.source)
}

// 3. Attach update policy
.alter table ParsedLogs policy update
@'[{"IsEnabled":true,"Source":"RawLogs","Query":"ParseRawLogs()","IsTransactional":true}]'

Agent Integration Notes

  • This skill covers authoring operations — creating/altering database objects and ingesting data.
  • For read-only queries and data exploration, delegate to eventhouse-consumption-cli.
  • For cross-workload orchestration, delegate to the FabricDataEngineer agent.
  • All management commands require elevated database roles (Admin or Ingestor).

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

39.15%
按下载量换算71

Claude

29.79%
按下载量换算54

Cursor

19.11%
按下载量换算35

Gemini CLI

9.13%
按下载量换算17

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/microsoft/skills-for-fabric --skill eventhouse-authoring-cli 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills