[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-eventhouse-authoring-cli":3,"mdc--nhqhr3-key":37,"related-org-microsoft-eventhouse-authoring-cli":5660,"related-repo-microsoft-eventhouse-authoring-cli":5855},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"eventhouse-authoring-cli","manage Fabric Eventhouse and KQL databases","Execute KQL management commands (table management, ingestion, policies, functions, materialized views) against Fabric Eventhouse and KQL Databases via CLI. Use when the user wants to:\n  1. Create or alter KQL tables, columns, or functions\n  2. Ingest data into an Eventhouse (inline, from storage, streaming)\n  3. Configure retention, caching, or partitioning policies\n  4. Create or manage materialized views and update policies\n  5. Manage data mappings for ingestion pipelines\n  6. Deploy KQL schema via scripts\nTriggers: \"create kql table\", \"kql ingestion\", \"ingest into eventhouse\", \"kql function\", \"materialized view\", \"kql retention policy\", \"eventhouse schema\", \"kql authoring\", \"create eventhouse table\", \"kql mapping\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"KQL","kql","tag",{"name":17,"slug":18,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Database","database",{"name":24,"slug":25,"type":15},"Microsoft Fabric","microsoft-fabric",858,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric","2026-04-06T18:36:51.340409",null,237,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"A collection of skills and MCP systems to enable users of CLI, VSCode, Claude to operate over Microsoft Fabric","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric\u002Ftree\u002FHEAD\u002Fskills\u002Feventhouse-authoring-cli","---\nname: eventhouse-authoring-cli\ndescription: >\n  Execute KQL management commands (table management, ingestion, policies, functions, materialized views)\n  against Fabric Eventhouse and KQL Databases via CLI.\n  Use when the user wants to:\n    1. Create or alter KQL tables, columns, or functions\n    2. Ingest data into an Eventhouse (inline, from storage, streaming)\n    3. Configure retention, caching, or partitioning policies\n    4. Create or manage materialized views and update policies\n    5. Manage data mappings for ingestion pipelines\n    6. Deploy KQL schema via scripts\n  Triggers: \"create kql table\", \"kql ingestion\", \"ingest into eventhouse\",\n  \"kql function\", \"materialized view\", \"kql retention policy\", \"eventhouse schema\",\n  \"kql authoring\", \"create eventhouse table\", \"kql mapping\"\n---\n\n> **Update Check — ONCE PER SESSION (mandatory)**\n> The first time this skill is used in a session, run the **check-updates** skill before proceeding.\n> - **GitHub Copilot CLI \u002F VS Code**: invoke the `check-updates` skill.\n> - **Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex**: compare local vs remote package.json version.\n> - Skip if the check was already performed earlier in this session.\n\n> **CRITICAL NOTES**\n> 1. To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering\n> 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\n\n# eventhouse-authoring-cli — Eventhouse Authoring and Management via CLI\n\n## Table of Contents\n\n| Task | Reference | Notes |\n|---|---|---|\n| Finding Workspaces and Items in Fabric | [COMMON-CLI.md § Finding Workspaces and Items in Fabric](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric) | **Mandatory** — *READ link first* [needed for workspace\u002Fitem ID resolution] |\n| Fabric Topology & Key Concepts | [COMMON-CORE.md § Fabric Topology & Key Concepts](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#fabric-topology--key-concepts) | Hierarchy, Finding Things in Fabric |\n| Environment URLs | [COMMON-CORE.md § Environment URLs](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#environment-urls) | KQL Cluster URI, KQL Ingestion URI |\n| Authentication & Token Acquisition | [COMMON-CORE.md § Authentication & Token Acquisition](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#authentication--token-acquisition) | Wrong audience = 401; KQL audience: `kusto.kusto.windows.net` |\n| Core Control-Plane REST APIs | [COMMON-CORE.md § Core Control-Plane REST APIs](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#core-control-plane-rest-apis) | List Workspaces, List Items, Item Creation |\n| Pagination | [COMMON-CORE.md § Pagination](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#pagination) | |\n| Long-Running Operations (LRO) | [COMMON-CORE.md § Long-Running Operations (LRO)](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#long-running-operations-lro) | |\n| Rate Limiting & Throttling | [COMMON-CORE.md § Rate Limiting & Throttling](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#rate-limiting--throttling) | |\n| OneLake Data Access | [COMMON-CORE.md § OneLake Data Access](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#onelake-data-access) | Requires `storage.azure.com` token, not Fabric token |\n| Job Execution | [COMMON-CORE.md § Job Execution](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#job-execution) | |\n| Capacity Management | [COMMON-CORE.md § Capacity Management](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#capacity-management) | |\n| Gotchas & Troubleshooting | [COMMON-CORE.md § Gotchas & Troubleshooting](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#gotchas--troubleshooting) | |\n| Best Practices | [COMMON-CORE.md § Best Practices](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#best-practices) | |\n| Tool Selection Rationale | [COMMON-CLI.md § Tool Selection Rationale](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#tool-selection-rationale) | |\n| Authentication Recipes | [COMMON-CLI.md § Authentication Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes) | `az login` flows and token acquisition |\n| Fabric Control-Plane API via `az rest` | [COMMON-CLI.md § Fabric Control-Plane API via az rest](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#fabric-control-plane-api-via-az-rest) | **Always pass `--resource https:\u002F\u002Fapi.fabric.microsoft.com`** or `az rest` fails |\n| Pagination Pattern | [COMMON-CLI.md § Pagination Pattern](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#pagination-pattern) | |\n| Long-Running Operations (LRO) Pattern | [COMMON-CLI.md § Long-Running Operations (LRO) Pattern](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#long-running-operations-lro-pattern) | |\n| OneLake Data Access via `curl` | [COMMON-CLI.md § OneLake Data Access via curl](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#onelake-data-access-via-curl) | Use `curl` not `az rest` (different token audience) |\n| SQL \u002F TDS Data-Plane Access | [COMMON-CLI.md § SQL \u002F TDS Data-Plane Access](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#sql--tds-data-plane-access) | `sqlcmd` (Go) — not for KQL, but useful for cross-workload |\n| Job Execution (CLI) | [COMMON-CLI.md § Job Execution](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#job-execution) | |\n| OneLake Shortcuts | [COMMON-CLI.md § OneLake Shortcuts](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#onelake-shortcuts) | |\n| Capacity Management (CLI) | [COMMON-CLI.md § Capacity Management](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#capacity-management) | |\n| Composite Recipes | [COMMON-CLI.md § Composite Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#composite-recipes) | |\n| Gotchas & Troubleshooting (CLI-Specific) | [COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#gotchas--troubleshooting-cli-specific) | `az rest` audience, shell escaping, token expiry |\n| Quick Reference: `az rest` Template | [COMMON-CLI.md § Quick Reference: az rest Template](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#quick-reference-az-rest-template) | |\n| Quick Reference: Token Audience \u002F CLI Tool Matrix | [COMMON-CLI.md § Quick Reference: Token Audience ↔ CLI Tool Matrix](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#quick-reference-token-audience--cli-tool-matrix) | Which `--resource` + tool for each service |\n| Authoring Capability Matrix | [EVENTHOUSE-AUTHORING-CORE.md § Authoring Capability Matrix](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#authoring-capability-matrix) | **Read first** — KQL Database vs Shortcut (read-only); connection requires Admin\u002FIngestor role |\n| Table Management and Schema Evolution | [EVENTHOUSE-AUTHORING-CORE.md § Table Management and Schema Evolution](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#table-management-and-schema-evolution) | Create Table, Create-Merge (idempotent), Alter \u002F Rename \u002F Drop, Schema Evolution (Rename, Swap\u002FBlue-Green) |\n| Ingestion and Data Mappings | [EVENTHOUSE-AUTHORING-CORE.md § Ingestion and Data Mappings](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#ingestion-and-data-mappings) | Inline, Set-or-Append\u002FReplace, From Storage, Streaming, Data Mappings (CSV, JSON) |\n| Policies | [EVENTHOUSE-AUTHORING-CORE.md § Policies](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#policies) | Retention, Caching, Partitioning, Merge |\n| Materialized Views | [EVENTHOUSE-AUTHORING-CORE.md § Materialized Views](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#materialized-views) | Create, Alter, Lifecycle, Supported aggregations |\n| Stored Functions and Update Policies | [EVENTHOUSE-AUTHORING-CORE.md § Stored Functions and Update Policies](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#stored-functions-and-update-policies) | Stored Functions, Update Policies (auto-transform on ingestion) |\n| External Tables | [EVENTHOUSE-AUTHORING-CORE.md § External Tables](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#external-tables) | OneLake \u002F ADLS External Table, Query External Table |\n| Permission Model | [EVENTHOUSE-AUTHORING-CORE.md § Permission Model](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#permission-model) | Database Roles, Grant Permissions |\n| Authoring Gotchas and Troubleshooting | [EVENTHOUSE-AUTHORING-CORE.md § Authoring Gotchas and Troubleshooting Reference](..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#authoring-gotchas-and-troubleshooting-reference) | 10 numbered issues with cause + fix |\n| Bash Templates | [authoring-script-templates.md § Bash Templates](references\u002Fauthoring-script-templates.md#bash-templates) | Create Table + Ingest, Schema Deployment, Export Schema, Set Retention\u002FCaching |\n| PowerShell Templates | [authoring-script-templates.md § PowerShell Templates](references\u002Fauthoring-script-templates.md#powershell-templates) | Create Table + Ingest, Schema Deployment |\n| Tool Stack | [SKILL.md § Tool Stack](#tool-stack) | |\n| Connection | [SKILL.md § Connection](#connection) | |\n| Authoring Scope | [SKILL.md § Authoring Scope](#authoring-scope) | |\n| Execute KQL Command | [SKILL.md § Execute KQL Command](#execute-kql-command) | **`az rest` pattern** — write JSON body, then execute |\n| Table Management via CLI | [SKILL.md § Table Management via CLI](#table-management-via-cli) | Create Table, Add Column, Drop Table |\n| Data Ingestion via CLI | [SKILL.md § Data Ingestion via CLI](#data-ingestion-via-cli) | Inline, From Storage, From OneLake, Set-or-Append |\n| Policies via CLI | [SKILL.md § Policies via CLI](#policies-via-cli) | Retention, Caching, Streaming Ingestion |\n| Materialized Views via CLI | [SKILL.md § Materialized Views via CLI](#materialized-views-via-cli) | |\n| Functions and Update Policies via CLI | [SKILL.md § Functions and Update Policies via CLI](#functions-and-update-policies-via-cli) | Create Function, Create Update Policy |\n| Schema Evolution via CLI | [SKILL.md § Schema Evolution via CLI](#schema-evolution-via-cli) | Safe Schema Deployment Script, Export Current Schema |\n| Monitoring Authoring Operations | [SKILL.md § Monitoring Authoring Operations](#monitoring-authoring-operations) | |\n| Must \u002F Prefer \u002F Avoid \u002F Troubleshooting | [SKILL.md § Must \u002F Prefer \u002F Avoid \u002F Troubleshooting](#must--prefer--avoid--troubleshooting) | **MUST DO \u002F AVOID \u002F PREFER** checklists |\n| Agentic Workflows | [SKILL.md § Agentic Workflows](#agentic-workflows) | Exploration Before Authoring, Script Generation Workflow |\n| Examples | [SKILL.md § Examples](#examples) | |\n| Agent Integration Notes | [SKILL.md § Agent Integration Notes](#agent-integration-notes) | |\n\n---\n\n## Tool Stack\n\n| Tool | Purpose | Install |\n|---|---|---|\n| **az cli** | KQL management commands via Kusto REST API; Fabric control-plane discovery | `winget install Microsoft.AzureCLI` |\n| **jq** | JSON processing and output formatting | `winget install jqlang.jq` |\n\n---\n\n## Connection\n\nSame as [eventhouse-consumption-cli](..\u002Feventhouse-consumption-cli\u002FSKILL.md#connection). Authoring requires elevated roles:\n\n```bash\n# Discover KQL Database query URI\nWS_ID=\"\u003Cworkspace-id>\"\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WS_ID}\u002FkqlDatabases\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  | jq '.value[] | {name: .displayName, queryUri: .properties.queryServiceUri}'\n\n# Set connection variables\nCLUSTER_URI=\"https:\u002F\u002F\u003Ccluster>.kusto.fabric.microsoft.com\"\nDB_NAME=\"MyDatabase\"\n\n# Verify admin access\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB_NAME}\",\"csl\":\".show database ${DB_NAME} principals | where Role == 'Admin'\"}\nEOF\naz rest --method POST \\\n  --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n  --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @\u002Ftmp\u002Fkql_body.json \\\n  | jq '.Tables[0].Rows'\n```\n\n---\n\n## Authoring Scope\n\n| Operation | Command Pattern |\n|---|---|\n| Create table | `.create-merge table T (cols)` |\n| Add column | `.alter-merge table T (NewCol: type)` |\n| Drop table | `.drop table T ifexists` |\n| Ingest data | `.ingest into table T (...)` |\n| Set retention | `.alter table T policy retention ...` |\n| Set caching | `.alter table T policy caching hot = Nd` |\n| Create function | `.create-or-alter function F() { ... }` |\n| Create materialized view | `.create materialized-view MV on table T { ... }` |\n| Create update policy | `.alter table T policy update ...` |\n| Create data mapping | `.create table T ingestion csv mapping ...` |\n\n---\n\n## Execute KQL Command\n\nAll KQL management commands in this skill follow the same `az rest` pattern. After setting `CLUSTER_URI` and `DB`, write the JSON body to `\u002Ftmp\u002Fkql_body.json` and execute:\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\"\u003CKQL management command>\"}\nEOF\naz rest --method POST \\\n  --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n  --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @\u002Ftmp\u002Fkql_body.json \\\n  | jq '.Tables[0].Rows'\n```\n\n> **Nested JSON** — For commands whose KQL contains embedded JSON (policies, mappings), use `\u003C\u003C 'EOF'` (single-quoted) to prevent shell expansion of backslash-escaped quotes, and replace `${DB}` with the literal database name.\n\n> **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](references\u002Fauthoring-script-templates.md#powershell-templates).\n\n---\n\n## Table Management via CLI\n\n### Create Table (Idempotent)\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic, Duration: real)\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Add Column\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter-merge table Events (Region: string)\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Drop Table\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".drop table Events ifexists\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n---\n\n## Data Ingestion via CLI\n\n### Inline Ingestion (Testing)\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".ingest inline into table Events \u003C| 2025-01-15T10:00:00Z,Login,user1,{},0.5\\n2025-01-15T10:01:00Z,Click,user2,{},0.2\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Ingest from Storage\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".ingest into table Events (h'https:\u002F\u002Fmystorage.blob.core.windows.net\u002Fdata\u002Fevents.csv.gz;impersonate') with (format='csv', ingestionMappingReference='EventsCsvMapping', ignoreFirstRecord=true)\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Ingest from OneLake\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".ingest into table Events (h'abfss:\u002F\u002Fworkspace@onelake.dfs.fabric.microsoft.com\u002Flakehouse.Lakehouse\u002FFiles\u002Fevents.parquet;impersonate') with (format='parquet')\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Set-or-Append from Query\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".set-or-append CleanEvents \u003C| RawEvents | where IsValid == true | project Timestamp, EventType, UserId\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n---\n\n## Policies via CLI\n\n### Retention\n\n```bash\n# Set 365-day retention\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"db\":\"MyDB\",\"csl\":\".alter table Events policy retention '{\\\"SoftDeletePeriod\\\":\\\"365.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Caching (Hot Cache)\n\n```bash\n# Keep last 30 days in hot cache\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter table Events policy caching hot = 30d\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Streaming Ingestion\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter table Events policy streamingingestion enable\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n---\n\n## Materialized Views via CLI\n\n```bash\n# Create materialized view with backfill\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"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) }\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n```bash\n# Check health\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".show materialized-view HourlyEventCounts statistics\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n---\n\n## Functions and Update Policies via CLI\n\n### Create Function\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"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) }\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Create Update Policy\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"db\":\"MyDB\",\"csl\":\".alter table ParsedEvents policy update @'[{\\\"IsEnabled\\\":true,\\\"Source\\\":\\\"RawEvents\\\",\\\"Query\\\":\\\"ParseRawEvents()\\\",\\\"IsTransactional\\\":true}]'\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n---\n\n## Schema Evolution via CLI\n\n### Safe Schema Deployment Script\n\nSave management commands in a `.kql` file (one per line), then execute each command via `az rest`:\n\n```bash\n# deploy_schema.kql contains one command per line:\n# .create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic)\n# .create-merge table ParsedEvents (Timestamp: datetime, EventType: string, UserId: string, PageName: string)\n# .alter table Events policy retention '{\\\"SoftDeletePeriod\\\":\\\"365.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\n# .alter table Events policy caching hot = 30d\n\n# Execute each command from the file (see \"Execute KQL Command\" section)\nwhile IFS= read -r cmd; do\n  [[ \"$cmd\" =~ ^\u002F\u002F ]] && continue   # skip comment lines\n  [[ -z \"$cmd\" ]] && continue        # skip blank lines\n  cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\"${cmd}\"}\nEOF\n  az rest --method POST \\\n    --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n    --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n    --headers \"Content-Type=application\u002Fjson\" \\\n    --body @\u002Ftmp\u002Fkql_body.json \\\n    | jq '.Tables[0].Rows'\ndone \u003C deploy_schema.kql\n```\n\n### Export Current Schema\n\n```bash\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".show database ${DB} schema as csl script\"}\nEOF\naz rest --method POST \\\n  --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n  --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @\u002Ftmp\u002Fkql_body.json \\\n  | jq -r '.Tables[0].Rows[][0]' > current_schema.kql\n```\n\n---\n\n## Monitoring Authoring Operations\n\n```kql\n\u002F\u002F Recent management commands\n.show commands\n| where StartedOn > ago(1h)\n| project StartedOn, CommandType, Text = substring(Text, 0, 100), State, Duration\n| order by StartedOn desc\n\n\u002F\u002F Ingestion failures\n.show ingestion failures\n| where FailedOn > ago(24h)\n| summarize FailureCount = count() by ErrorCode, Table\n| order by FailureCount desc\n\n\u002F\u002F Materialized view health\n.show materialized-views\n| project Name, IsEnabled, IsHealthy, MaterializedTo\n```\n\n---\n\n## Must \u002F Prefer \u002F Avoid \u002F Troubleshooting\n\n### Must\n\n- **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.\n- **Use idempotent commands** — `.create-merge table`, `.create-or-alter function`, `.create table ifnotexists`.\n- **Verify permissions** before authoring — must have `Admin` or `Ingestor` role.\n- **Test update policies** by running the function independently before attaching.\n- **Include `impersonate`** in storage URIs when ingesting from OneLake or Blob Storage.\n\n### Prefer\n\n- **`az rest` with loop** for deploying multi-command schema files.\n- **Fabric KQL MCP server** for agent-integrated ingestion and management workflows.\n- **`.create-merge table`** over `.create table` for safe schema evolution.\n- **Materialized views** over repeated expensive aggregation queries.\n- **Script-based CI\u002FCD** — export schema with `.show database DB schema as csl script`, store in git.\n\n### Avoid\n\n- **`.drop table`** without `ifexists` — fails on missing tables.\n- **`.alter table`** to add columns — use `.alter-merge table` instead (additive only).\n- **Ingestion without mappings** for CSV\u002FJSON — column order or field names may not match.\n- **Hardcoded storage URIs** — parameterise in scripts.\n- **Disabling materialized views** without understanding the re-backfill cost.\n\n### Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| `.create table` fails \"already exists\" | Use `.create-merge table` or `.create table ifnotexists` |\n| Ingestion succeeds but table empty | Check data mappings: `.show table T ingestion csv mappings` |\n| Update policy not firing | Verify function runs standalone; check `.show table T policy update` |\n| `Forbidden (403)` on management commands | Request `admin` or `ingestor` database role |\n| Materialized view stuck | Check `.show materialized-view MV statistics`; may need `.disable`\u002F`.enable` |\n| OneLake ingest auth error | Add `;impersonate` to `abfss:\u002F\u002F` URI |\n\n---\n\n## Agentic Workflows\n\n### Exploration Before Authoring\n\nAlways check for explicit intent before doing anything:\n\n```text\nStep 0 → Is the request specific? Does it name a table, operation, and\u002For schema?\n         → NO  → Ask: \"What would you like to set up? Options: create tables,\n                  configure policies, set up ingestion mappings, create materialized views.\"\n                  STOP — do not proceed until user specifies.\n         → YES → Continue to Step 1.\nStep 1 → .show tables details                        \u002F\u002F what exists?\nStep 2 → .show table \u003CTABLE> schema as json          \u002F\u002F current columns\nStep 3 → .show table \u003CTABLE> policy retention        \u002F\u002F current policies\nStep 4 → Plan changes (create-merge, alter, etc.)\nStep 5 → Execute changes\nStep 6 → Verify: .show table \u003CTABLE> schema as json  \u002F\u002F confirm changes\n```\n\n### Script Generation Workflow\n\n```text\nStep 1 → Understand requirements from user\nStep 2 → Generate KQL management commands\nStep 3 → Save to .kql file\nStep 4 → Deploy via az rest (one command at a time)\nStep 5 → Verify deployed state matches intent\n```\n\n---\n\n## Examples\n\n### Example 1: Create Table with Policies and Mapping\n\n```bash\n# Create table\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".create-merge table SensorData (Timestamp: datetime, DeviceId: string, Temperature: real, Humidity: real, Location: dynamic)\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n```bash\n# Set retention\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"db\":\"MyDB\",\"csl\":\".alter table SensorData policy retention '{\\\"SoftDeletePeriod\\\":\\\"90.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n```bash\n# Set caching\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter table SensorData policy caching hot = 7d\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n```bash\n# Create JSON mapping\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"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\\\"}]'\"}\nEOF\n```\n\n> Execute `\u002Ftmp\u002Fkql_body.json` — see [Execute KQL Command](#execute-kql-command)\n\n### Example 2: ETL with Update Policy\n\n```kql\n\u002F\u002F 1. Target table\n.create-merge table ParsedLogs (Timestamp: datetime, Level: string, Message: string, Source: string)\n\n\u002F\u002F 2. Transform function\n.create-or-alter function ParseRawLogs() {\n    RawLogs\n    | extend J = parse_json(RawMessage)\n    | project\n        Timestamp = todatetime(J.timestamp),\n        Level = tostring(J.level),\n        Message = tostring(J.message),\n        Source = tostring(J.source)\n}\n\n\u002F\u002F 3. Attach update policy\n.alter table ParsedLogs policy update\n@'[{\"IsEnabled\":true,\"Source\":\"RawLogs\",\"Query\":\"ParseRawLogs()\",\"IsTransactional\":true}]'\n```\n\n---\n\n## Agent Integration Notes\n\n- This skill covers **authoring operations** — creating\u002Faltering database objects and ingesting data.\n- For **read-only queries** and data exploration, delegate to **eventhouse-consumption-cli**.\n- For **cross-workload orchestration**, delegate to the **FabricDataEngineer** agent.\n- All management commands require elevated database roles (`Admin` or `Ingestor`).\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,105,130,137,144,1429,1433,1438,1515,1518,1523,1536,2043,2046,2051,2243,2246,2251,2286,2485,2514,2548,2551,2556,2563,2624,2643,2649,2710,2727,2733,2794,2811,2814,2819,2825,2886,2903,2909,2970,2987,2993,3054,3071,3077,3138,3155,3158,3163,3169,3223,3240,3246,3315,3332,3338,3399,3416,3419,3424,3493,3510,3579,3596,3599,3604,3610,3671,3688,3694,3739,3756,3759,3764,3770,3790,4224,4230,4460,4463,4468,4594,4597,4602,4608,4703,4709,4786,4792,4869,4875,5061,5064,5069,5075,5080,5090,5096,5105,5108,5113,5119,5188,5205,5258,5275,5344,5361,5414,5431,5437,5578,5581,5586,5654],{"type":43,"tag":44,"props":45,"children":46},"element","blockquote",{},[47,67],{"type":43,"tag":48,"props":49,"children":50},"p",{},[51,58,60,65],{"type":43,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":56,"value":57},"text","Update Check — ONCE PER SESSION (mandatory)",{"type":56,"value":59},"\nThe first time this skill is used in a session, run the ",{"type":43,"tag":52,"props":61,"children":62},{},[63],{"type":56,"value":64},"check-updates",{"type":56,"value":66}," skill before proceeding.",{"type":43,"tag":68,"props":69,"children":70},"ul",{},[71,90,100],{"type":43,"tag":72,"props":73,"children":74},"li",{},[75,80,82,88],{"type":43,"tag":52,"props":76,"children":77},{},[78],{"type":56,"value":79},"GitHub Copilot CLI \u002F VS Code",{"type":56,"value":81},": invoke the ",{"type":43,"tag":83,"props":84,"children":86},"code",{"className":85},[],[87],{"type":56,"value":64},{"type":56,"value":89}," skill.",{"type":43,"tag":72,"props":91,"children":92},{},[93,98],{"type":43,"tag":52,"props":94,"children":95},{},[96],{"type":56,"value":97},"Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex",{"type":56,"value":99},": compare local vs remote package.json version.",{"type":43,"tag":72,"props":101,"children":102},{},[103],{"type":56,"value":104},"Skip if the check was already performed earlier in this session.",{"type":43,"tag":44,"props":106,"children":107},{},[108,116],{"type":43,"tag":48,"props":109,"children":110},{},[111],{"type":43,"tag":52,"props":112,"children":113},{},[114],{"type":56,"value":115},"CRITICAL NOTES",{"type":43,"tag":117,"props":118,"children":119},"ol",{},[120,125],{"type":43,"tag":72,"props":121,"children":122},{},[123],{"type":56,"value":124},"To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering",{"type":43,"tag":72,"props":126,"children":127},{},[128],{"type":56,"value":129},"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",{"type":43,"tag":131,"props":132,"children":134},"h1",{"id":133},"eventhouse-authoring-cli-eventhouse-authoring-and-management-via-cli",[135],{"type":56,"value":136},"eventhouse-authoring-cli — Eventhouse Authoring and Management via CLI",{"type":43,"tag":138,"props":139,"children":141},"h2",{"id":140},"table-of-contents",[142],{"type":56,"value":143},"Table of Contents",{"type":43,"tag":145,"props":146,"children":147},"table",{},[148,172],{"type":43,"tag":149,"props":150,"children":151},"thead",{},[152],{"type":43,"tag":153,"props":154,"children":155},"tr",{},[156,162,167],{"type":43,"tag":157,"props":158,"children":159},"th",{},[160],{"type":56,"value":161},"Task",{"type":43,"tag":157,"props":163,"children":164},{},[165],{"type":56,"value":166},"Reference",{"type":43,"tag":157,"props":168,"children":169},{},[170],{"type":56,"value":171},"Notes",{"type":43,"tag":173,"props":174,"children":175},"tbody",{},[176,219,241,263,291,313,333,353,373,403,423,443,463,483,503,531,577,597,617,659,687,707,727,747,767,794,821,851,878,900,922,944,966,988,1010,1032,1054,1076,1098,1118,1138,1158,1190,1212,1234,1256,1276,1298,1320,1340,1367,1389,1409],{"type":43,"tag":153,"props":177,"children":178},{},[179,185,195],{"type":43,"tag":180,"props":181,"children":182},"td",{},[183],{"type":56,"value":184},"Finding Workspaces and Items in Fabric",{"type":43,"tag":180,"props":186,"children":187},{},[188],{"type":43,"tag":189,"props":190,"children":192},"a",{"href":191},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric",[193],{"type":56,"value":194},"COMMON-CLI.md § Finding Workspaces and Items in Fabric",{"type":43,"tag":180,"props":196,"children":197},{},[198,203,205,211,213],{"type":43,"tag":52,"props":199,"children":200},{},[201],{"type":56,"value":202},"Mandatory",{"type":56,"value":204}," — ",{"type":43,"tag":206,"props":207,"children":208},"em",{},[209],{"type":56,"value":210},"READ link first",{"type":56,"value":212}," ",{"type":43,"tag":214,"props":215,"children":216},"span",{},[217],{"type":56,"value":218},"needed for workspace\u002Fitem ID resolution",{"type":43,"tag":153,"props":220,"children":221},{},[222,227,236],{"type":43,"tag":180,"props":223,"children":224},{},[225],{"type":56,"value":226},"Fabric Topology & Key Concepts",{"type":43,"tag":180,"props":228,"children":229},{},[230],{"type":43,"tag":189,"props":231,"children":233},{"href":232},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#fabric-topology--key-concepts",[234],{"type":56,"value":235},"COMMON-CORE.md § Fabric Topology & Key Concepts",{"type":43,"tag":180,"props":237,"children":238},{},[239],{"type":56,"value":240},"Hierarchy, Finding Things in Fabric",{"type":43,"tag":153,"props":242,"children":243},{},[244,249,258],{"type":43,"tag":180,"props":245,"children":246},{},[247],{"type":56,"value":248},"Environment URLs",{"type":43,"tag":180,"props":250,"children":251},{},[252],{"type":43,"tag":189,"props":253,"children":255},{"href":254},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#environment-urls",[256],{"type":56,"value":257},"COMMON-CORE.md § Environment URLs",{"type":43,"tag":180,"props":259,"children":260},{},[261],{"type":56,"value":262},"KQL Cluster URI, KQL Ingestion URI",{"type":43,"tag":153,"props":264,"children":265},{},[266,271,280],{"type":43,"tag":180,"props":267,"children":268},{},[269],{"type":56,"value":270},"Authentication & Token Acquisition",{"type":43,"tag":180,"props":272,"children":273},{},[274],{"type":43,"tag":189,"props":275,"children":277},{"href":276},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#authentication--token-acquisition",[278],{"type":56,"value":279},"COMMON-CORE.md § Authentication & Token Acquisition",{"type":43,"tag":180,"props":281,"children":282},{},[283,285],{"type":56,"value":284},"Wrong audience = 401; KQL audience: ",{"type":43,"tag":83,"props":286,"children":288},{"className":287},[],[289],{"type":56,"value":290},"kusto.kusto.windows.net",{"type":43,"tag":153,"props":292,"children":293},{},[294,299,308],{"type":43,"tag":180,"props":295,"children":296},{},[297],{"type":56,"value":298},"Core Control-Plane REST APIs",{"type":43,"tag":180,"props":300,"children":301},{},[302],{"type":43,"tag":189,"props":303,"children":305},{"href":304},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#core-control-plane-rest-apis",[306],{"type":56,"value":307},"COMMON-CORE.md § Core Control-Plane REST APIs",{"type":43,"tag":180,"props":309,"children":310},{},[311],{"type":56,"value":312},"List Workspaces, List Items, Item Creation",{"type":43,"tag":153,"props":314,"children":315},{},[316,321,330],{"type":43,"tag":180,"props":317,"children":318},{},[319],{"type":56,"value":320},"Pagination",{"type":43,"tag":180,"props":322,"children":323},{},[324],{"type":43,"tag":189,"props":325,"children":327},{"href":326},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#pagination",[328],{"type":56,"value":329},"COMMON-CORE.md § Pagination",{"type":43,"tag":180,"props":331,"children":332},{},[],{"type":43,"tag":153,"props":334,"children":335},{},[336,341,350],{"type":43,"tag":180,"props":337,"children":338},{},[339],{"type":56,"value":340},"Long-Running Operations (LRO)",{"type":43,"tag":180,"props":342,"children":343},{},[344],{"type":43,"tag":189,"props":345,"children":347},{"href":346},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#long-running-operations-lro",[348],{"type":56,"value":349},"COMMON-CORE.md § Long-Running Operations (LRO)",{"type":43,"tag":180,"props":351,"children":352},{},[],{"type":43,"tag":153,"props":354,"children":355},{},[356,361,370],{"type":43,"tag":180,"props":357,"children":358},{},[359],{"type":56,"value":360},"Rate Limiting & Throttling",{"type":43,"tag":180,"props":362,"children":363},{},[364],{"type":43,"tag":189,"props":365,"children":367},{"href":366},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#rate-limiting--throttling",[368],{"type":56,"value":369},"COMMON-CORE.md § Rate Limiting & Throttling",{"type":43,"tag":180,"props":371,"children":372},{},[],{"type":43,"tag":153,"props":374,"children":375},{},[376,381,390],{"type":43,"tag":180,"props":377,"children":378},{},[379],{"type":56,"value":380},"OneLake Data Access",{"type":43,"tag":180,"props":382,"children":383},{},[384],{"type":43,"tag":189,"props":385,"children":387},{"href":386},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#onelake-data-access",[388],{"type":56,"value":389},"COMMON-CORE.md § OneLake Data Access",{"type":43,"tag":180,"props":391,"children":392},{},[393,395,401],{"type":56,"value":394},"Requires ",{"type":43,"tag":83,"props":396,"children":398},{"className":397},[],[399],{"type":56,"value":400},"storage.azure.com",{"type":56,"value":402}," token, not Fabric token",{"type":43,"tag":153,"props":404,"children":405},{},[406,411,420],{"type":43,"tag":180,"props":407,"children":408},{},[409],{"type":56,"value":410},"Job Execution",{"type":43,"tag":180,"props":412,"children":413},{},[414],{"type":43,"tag":189,"props":415,"children":417},{"href":416},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#job-execution",[418],{"type":56,"value":419},"COMMON-CORE.md § Job Execution",{"type":43,"tag":180,"props":421,"children":422},{},[],{"type":43,"tag":153,"props":424,"children":425},{},[426,431,440],{"type":43,"tag":180,"props":427,"children":428},{},[429],{"type":56,"value":430},"Capacity Management",{"type":43,"tag":180,"props":432,"children":433},{},[434],{"type":43,"tag":189,"props":435,"children":437},{"href":436},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#capacity-management",[438],{"type":56,"value":439},"COMMON-CORE.md § Capacity Management",{"type":43,"tag":180,"props":441,"children":442},{},[],{"type":43,"tag":153,"props":444,"children":445},{},[446,451,460],{"type":43,"tag":180,"props":447,"children":448},{},[449],{"type":56,"value":450},"Gotchas & Troubleshooting",{"type":43,"tag":180,"props":452,"children":453},{},[454],{"type":43,"tag":189,"props":455,"children":457},{"href":456},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#gotchas--troubleshooting",[458],{"type":56,"value":459},"COMMON-CORE.md § Gotchas & Troubleshooting",{"type":43,"tag":180,"props":461,"children":462},{},[],{"type":43,"tag":153,"props":464,"children":465},{},[466,471,480],{"type":43,"tag":180,"props":467,"children":468},{},[469],{"type":56,"value":470},"Best Practices",{"type":43,"tag":180,"props":472,"children":473},{},[474],{"type":43,"tag":189,"props":475,"children":477},{"href":476},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#best-practices",[478],{"type":56,"value":479},"COMMON-CORE.md § Best Practices",{"type":43,"tag":180,"props":481,"children":482},{},[],{"type":43,"tag":153,"props":484,"children":485},{},[486,491,500],{"type":43,"tag":180,"props":487,"children":488},{},[489],{"type":56,"value":490},"Tool Selection Rationale",{"type":43,"tag":180,"props":492,"children":493},{},[494],{"type":43,"tag":189,"props":495,"children":497},{"href":496},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#tool-selection-rationale",[498],{"type":56,"value":499},"COMMON-CLI.md § Tool Selection Rationale",{"type":43,"tag":180,"props":501,"children":502},{},[],{"type":43,"tag":153,"props":504,"children":505},{},[506,511,520],{"type":43,"tag":180,"props":507,"children":508},{},[509],{"type":56,"value":510},"Authentication Recipes",{"type":43,"tag":180,"props":512,"children":513},{},[514],{"type":43,"tag":189,"props":515,"children":517},{"href":516},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes",[518],{"type":56,"value":519},"COMMON-CLI.md § Authentication Recipes",{"type":43,"tag":180,"props":521,"children":522},{},[523,529],{"type":43,"tag":83,"props":524,"children":526},{"className":525},[],[527],{"type":56,"value":528},"az login",{"type":56,"value":530}," flows and token acquisition",{"type":43,"tag":153,"props":532,"children":533},{},[534,545,554],{"type":43,"tag":180,"props":535,"children":536},{},[537,539],{"type":56,"value":538},"Fabric Control-Plane API via ",{"type":43,"tag":83,"props":540,"children":542},{"className":541},[],[543],{"type":56,"value":544},"az rest",{"type":43,"tag":180,"props":546,"children":547},{},[548],{"type":43,"tag":189,"props":549,"children":551},{"href":550},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#fabric-control-plane-api-via-az-rest",[552],{"type":56,"value":553},"COMMON-CLI.md § Fabric Control-Plane API via az rest",{"type":43,"tag":180,"props":555,"children":556},{},[557,568,570,575],{"type":43,"tag":52,"props":558,"children":559},{},[560,562],{"type":56,"value":561},"Always pass ",{"type":43,"tag":83,"props":563,"children":565},{"className":564},[],[566],{"type":56,"value":567},"--resource https:\u002F\u002Fapi.fabric.microsoft.com",{"type":56,"value":569}," or ",{"type":43,"tag":83,"props":571,"children":573},{"className":572},[],[574],{"type":56,"value":544},{"type":56,"value":576}," fails",{"type":43,"tag":153,"props":578,"children":579},{},[580,585,594],{"type":43,"tag":180,"props":581,"children":582},{},[583],{"type":56,"value":584},"Pagination Pattern",{"type":43,"tag":180,"props":586,"children":587},{},[588],{"type":43,"tag":189,"props":589,"children":591},{"href":590},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#pagination-pattern",[592],{"type":56,"value":593},"COMMON-CLI.md § Pagination Pattern",{"type":43,"tag":180,"props":595,"children":596},{},[],{"type":43,"tag":153,"props":598,"children":599},{},[600,605,614],{"type":43,"tag":180,"props":601,"children":602},{},[603],{"type":56,"value":604},"Long-Running Operations (LRO) Pattern",{"type":43,"tag":180,"props":606,"children":607},{},[608],{"type":43,"tag":189,"props":609,"children":611},{"href":610},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#long-running-operations-lro-pattern",[612],{"type":56,"value":613},"COMMON-CLI.md § Long-Running Operations (LRO) Pattern",{"type":43,"tag":180,"props":615,"children":616},{},[],{"type":43,"tag":153,"props":618,"children":619},{},[620,631,640],{"type":43,"tag":180,"props":621,"children":622},{},[623,625],{"type":56,"value":624},"OneLake Data Access via ",{"type":43,"tag":83,"props":626,"children":628},{"className":627},[],[629],{"type":56,"value":630},"curl",{"type":43,"tag":180,"props":632,"children":633},{},[634],{"type":43,"tag":189,"props":635,"children":637},{"href":636},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#onelake-data-access-via-curl",[638],{"type":56,"value":639},"COMMON-CLI.md § OneLake Data Access via curl",{"type":43,"tag":180,"props":641,"children":642},{},[643,645,650,652,657],{"type":56,"value":644},"Use ",{"type":43,"tag":83,"props":646,"children":648},{"className":647},[],[649],{"type":56,"value":630},{"type":56,"value":651}," not ",{"type":43,"tag":83,"props":653,"children":655},{"className":654},[],[656],{"type":56,"value":544},{"type":56,"value":658}," (different token audience)",{"type":43,"tag":153,"props":660,"children":661},{},[662,667,676],{"type":43,"tag":180,"props":663,"children":664},{},[665],{"type":56,"value":666},"SQL \u002F TDS Data-Plane Access",{"type":43,"tag":180,"props":668,"children":669},{},[670],{"type":43,"tag":189,"props":671,"children":673},{"href":672},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#sql--tds-data-plane-access",[674],{"type":56,"value":675},"COMMON-CLI.md § SQL \u002F TDS Data-Plane Access",{"type":43,"tag":180,"props":677,"children":678},{},[679,685],{"type":43,"tag":83,"props":680,"children":682},{"className":681},[],[683],{"type":56,"value":684},"sqlcmd",{"type":56,"value":686}," (Go) — not for KQL, but useful for cross-workload",{"type":43,"tag":153,"props":688,"children":689},{},[690,695,704],{"type":43,"tag":180,"props":691,"children":692},{},[693],{"type":56,"value":694},"Job Execution (CLI)",{"type":43,"tag":180,"props":696,"children":697},{},[698],{"type":43,"tag":189,"props":699,"children":701},{"href":700},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#job-execution",[702],{"type":56,"value":703},"COMMON-CLI.md § Job Execution",{"type":43,"tag":180,"props":705,"children":706},{},[],{"type":43,"tag":153,"props":708,"children":709},{},[710,715,724],{"type":43,"tag":180,"props":711,"children":712},{},[713],{"type":56,"value":714},"OneLake Shortcuts",{"type":43,"tag":180,"props":716,"children":717},{},[718],{"type":43,"tag":189,"props":719,"children":721},{"href":720},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#onelake-shortcuts",[722],{"type":56,"value":723},"COMMON-CLI.md § OneLake Shortcuts",{"type":43,"tag":180,"props":725,"children":726},{},[],{"type":43,"tag":153,"props":728,"children":729},{},[730,735,744],{"type":43,"tag":180,"props":731,"children":732},{},[733],{"type":56,"value":734},"Capacity Management (CLI)",{"type":43,"tag":180,"props":736,"children":737},{},[738],{"type":43,"tag":189,"props":739,"children":741},{"href":740},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#capacity-management",[742],{"type":56,"value":743},"COMMON-CLI.md § Capacity Management",{"type":43,"tag":180,"props":745,"children":746},{},[],{"type":43,"tag":153,"props":748,"children":749},{},[750,755,764],{"type":43,"tag":180,"props":751,"children":752},{},[753],{"type":56,"value":754},"Composite Recipes",{"type":43,"tag":180,"props":756,"children":757},{},[758],{"type":43,"tag":189,"props":759,"children":761},{"href":760},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#composite-recipes",[762],{"type":56,"value":763},"COMMON-CLI.md § Composite Recipes",{"type":43,"tag":180,"props":765,"children":766},{},[],{"type":43,"tag":153,"props":768,"children":769},{},[770,775,784],{"type":43,"tag":180,"props":771,"children":772},{},[773],{"type":56,"value":774},"Gotchas & Troubleshooting (CLI-Specific)",{"type":43,"tag":180,"props":776,"children":777},{},[778],{"type":43,"tag":189,"props":779,"children":781},{"href":780},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#gotchas--troubleshooting-cli-specific",[782],{"type":56,"value":783},"COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)",{"type":43,"tag":180,"props":785,"children":786},{},[787,792],{"type":43,"tag":83,"props":788,"children":790},{"className":789},[],[791],{"type":56,"value":544},{"type":56,"value":793}," audience, shell escaping, token expiry",{"type":43,"tag":153,"props":795,"children":796},{},[797,809,818],{"type":43,"tag":180,"props":798,"children":799},{},[800,802,807],{"type":56,"value":801},"Quick Reference: ",{"type":43,"tag":83,"props":803,"children":805},{"className":804},[],[806],{"type":56,"value":544},{"type":56,"value":808}," Template",{"type":43,"tag":180,"props":810,"children":811},{},[812],{"type":43,"tag":189,"props":813,"children":815},{"href":814},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#quick-reference-az-rest-template",[816],{"type":56,"value":817},"COMMON-CLI.md § Quick Reference: az rest Template",{"type":43,"tag":180,"props":819,"children":820},{},[],{"type":43,"tag":153,"props":822,"children":823},{},[824,829,838],{"type":43,"tag":180,"props":825,"children":826},{},[827],{"type":56,"value":828},"Quick Reference: Token Audience \u002F CLI Tool Matrix",{"type":43,"tag":180,"props":830,"children":831},{},[832],{"type":43,"tag":189,"props":833,"children":835},{"href":834},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#quick-reference-token-audience--cli-tool-matrix",[836],{"type":56,"value":837},"COMMON-CLI.md § Quick Reference: Token Audience ↔ CLI Tool Matrix",{"type":43,"tag":180,"props":839,"children":840},{},[841,843,849],{"type":56,"value":842},"Which ",{"type":43,"tag":83,"props":844,"children":846},{"className":845},[],[847],{"type":56,"value":848},"--resource",{"type":56,"value":850}," + tool for each service",{"type":43,"tag":153,"props":852,"children":853},{},[854,859,868],{"type":43,"tag":180,"props":855,"children":856},{},[857],{"type":56,"value":858},"Authoring Capability Matrix",{"type":43,"tag":180,"props":860,"children":861},{},[862],{"type":43,"tag":189,"props":863,"children":865},{"href":864},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#authoring-capability-matrix",[866],{"type":56,"value":867},"EVENTHOUSE-AUTHORING-CORE.md § Authoring Capability Matrix",{"type":43,"tag":180,"props":869,"children":870},{},[871,876],{"type":43,"tag":52,"props":872,"children":873},{},[874],{"type":56,"value":875},"Read first",{"type":56,"value":877}," — KQL Database vs Shortcut (read-only); connection requires Admin\u002FIngestor role",{"type":43,"tag":153,"props":879,"children":880},{},[881,886,895],{"type":43,"tag":180,"props":882,"children":883},{},[884],{"type":56,"value":885},"Table Management and Schema Evolution",{"type":43,"tag":180,"props":887,"children":888},{},[889],{"type":43,"tag":189,"props":890,"children":892},{"href":891},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#table-management-and-schema-evolution",[893],{"type":56,"value":894},"EVENTHOUSE-AUTHORING-CORE.md § Table Management and Schema Evolution",{"type":43,"tag":180,"props":896,"children":897},{},[898],{"type":56,"value":899},"Create Table, Create-Merge (idempotent), Alter \u002F Rename \u002F Drop, Schema Evolution (Rename, Swap\u002FBlue-Green)",{"type":43,"tag":153,"props":901,"children":902},{},[903,908,917],{"type":43,"tag":180,"props":904,"children":905},{},[906],{"type":56,"value":907},"Ingestion and Data Mappings",{"type":43,"tag":180,"props":909,"children":910},{},[911],{"type":43,"tag":189,"props":912,"children":914},{"href":913},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#ingestion-and-data-mappings",[915],{"type":56,"value":916},"EVENTHOUSE-AUTHORING-CORE.md § Ingestion and Data Mappings",{"type":43,"tag":180,"props":918,"children":919},{},[920],{"type":56,"value":921},"Inline, Set-or-Append\u002FReplace, From Storage, Streaming, Data Mappings (CSV, JSON)",{"type":43,"tag":153,"props":923,"children":924},{},[925,930,939],{"type":43,"tag":180,"props":926,"children":927},{},[928],{"type":56,"value":929},"Policies",{"type":43,"tag":180,"props":931,"children":932},{},[933],{"type":43,"tag":189,"props":934,"children":936},{"href":935},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#policies",[937],{"type":56,"value":938},"EVENTHOUSE-AUTHORING-CORE.md § Policies",{"type":43,"tag":180,"props":940,"children":941},{},[942],{"type":56,"value":943},"Retention, Caching, Partitioning, Merge",{"type":43,"tag":153,"props":945,"children":946},{},[947,952,961],{"type":43,"tag":180,"props":948,"children":949},{},[950],{"type":56,"value":951},"Materialized Views",{"type":43,"tag":180,"props":953,"children":954},{},[955],{"type":43,"tag":189,"props":956,"children":958},{"href":957},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#materialized-views",[959],{"type":56,"value":960},"EVENTHOUSE-AUTHORING-CORE.md § Materialized Views",{"type":43,"tag":180,"props":962,"children":963},{},[964],{"type":56,"value":965},"Create, Alter, Lifecycle, Supported aggregations",{"type":43,"tag":153,"props":967,"children":968},{},[969,974,983],{"type":43,"tag":180,"props":970,"children":971},{},[972],{"type":56,"value":973},"Stored Functions and Update Policies",{"type":43,"tag":180,"props":975,"children":976},{},[977],{"type":43,"tag":189,"props":978,"children":980},{"href":979},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#stored-functions-and-update-policies",[981],{"type":56,"value":982},"EVENTHOUSE-AUTHORING-CORE.md § Stored Functions and Update Policies",{"type":43,"tag":180,"props":984,"children":985},{},[986],{"type":56,"value":987},"Stored Functions, Update Policies (auto-transform on ingestion)",{"type":43,"tag":153,"props":989,"children":990},{},[991,996,1005],{"type":43,"tag":180,"props":992,"children":993},{},[994],{"type":56,"value":995},"External Tables",{"type":43,"tag":180,"props":997,"children":998},{},[999],{"type":43,"tag":189,"props":1000,"children":1002},{"href":1001},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#external-tables",[1003],{"type":56,"value":1004},"EVENTHOUSE-AUTHORING-CORE.md § External Tables",{"type":43,"tag":180,"props":1006,"children":1007},{},[1008],{"type":56,"value":1009},"OneLake \u002F ADLS External Table, Query External Table",{"type":43,"tag":153,"props":1011,"children":1012},{},[1013,1018,1027],{"type":43,"tag":180,"props":1014,"children":1015},{},[1016],{"type":56,"value":1017},"Permission Model",{"type":43,"tag":180,"props":1019,"children":1020},{},[1021],{"type":43,"tag":189,"props":1022,"children":1024},{"href":1023},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#permission-model",[1025],{"type":56,"value":1026},"EVENTHOUSE-AUTHORING-CORE.md § Permission Model",{"type":43,"tag":180,"props":1028,"children":1029},{},[1030],{"type":56,"value":1031},"Database Roles, Grant Permissions",{"type":43,"tag":153,"props":1033,"children":1034},{},[1035,1040,1049],{"type":43,"tag":180,"props":1036,"children":1037},{},[1038],{"type":56,"value":1039},"Authoring Gotchas and Troubleshooting",{"type":43,"tag":180,"props":1041,"children":1042},{},[1043],{"type":43,"tag":189,"props":1044,"children":1046},{"href":1045},"..\u002F..\u002Fcommon\u002FEVENTHOUSE-AUTHORING-CORE.md#authoring-gotchas-and-troubleshooting-reference",[1047],{"type":56,"value":1048},"EVENTHOUSE-AUTHORING-CORE.md § Authoring Gotchas and Troubleshooting Reference",{"type":43,"tag":180,"props":1050,"children":1051},{},[1052],{"type":56,"value":1053},"10 numbered issues with cause + fix",{"type":43,"tag":153,"props":1055,"children":1056},{},[1057,1062,1071],{"type":43,"tag":180,"props":1058,"children":1059},{},[1060],{"type":56,"value":1061},"Bash Templates",{"type":43,"tag":180,"props":1063,"children":1064},{},[1065],{"type":43,"tag":189,"props":1066,"children":1068},{"href":1067},"references\u002Fauthoring-script-templates.md#bash-templates",[1069],{"type":56,"value":1070},"authoring-script-templates.md § Bash Templates",{"type":43,"tag":180,"props":1072,"children":1073},{},[1074],{"type":56,"value":1075},"Create Table + Ingest, Schema Deployment, Export Schema, Set Retention\u002FCaching",{"type":43,"tag":153,"props":1077,"children":1078},{},[1079,1084,1093],{"type":43,"tag":180,"props":1080,"children":1081},{},[1082],{"type":56,"value":1083},"PowerShell Templates",{"type":43,"tag":180,"props":1085,"children":1086},{},[1087],{"type":43,"tag":189,"props":1088,"children":1090},{"href":1089},"references\u002Fauthoring-script-templates.md#powershell-templates",[1091],{"type":56,"value":1092},"authoring-script-templates.md § PowerShell Templates",{"type":43,"tag":180,"props":1094,"children":1095},{},[1096],{"type":56,"value":1097},"Create Table + Ingest, Schema Deployment",{"type":43,"tag":153,"props":1099,"children":1100},{},[1101,1106,1115],{"type":43,"tag":180,"props":1102,"children":1103},{},[1104],{"type":56,"value":1105},"Tool Stack",{"type":43,"tag":180,"props":1107,"children":1108},{},[1109],{"type":43,"tag":189,"props":1110,"children":1112},{"href":1111},"#tool-stack",[1113],{"type":56,"value":1114},"SKILL.md § Tool Stack",{"type":43,"tag":180,"props":1116,"children":1117},{},[],{"type":43,"tag":153,"props":1119,"children":1120},{},[1121,1126,1135],{"type":43,"tag":180,"props":1122,"children":1123},{},[1124],{"type":56,"value":1125},"Connection",{"type":43,"tag":180,"props":1127,"children":1128},{},[1129],{"type":43,"tag":189,"props":1130,"children":1132},{"href":1131},"#connection",[1133],{"type":56,"value":1134},"SKILL.md § Connection",{"type":43,"tag":180,"props":1136,"children":1137},{},[],{"type":43,"tag":153,"props":1139,"children":1140},{},[1141,1146,1155],{"type":43,"tag":180,"props":1142,"children":1143},{},[1144],{"type":56,"value":1145},"Authoring Scope",{"type":43,"tag":180,"props":1147,"children":1148},{},[1149],{"type":43,"tag":189,"props":1150,"children":1152},{"href":1151},"#authoring-scope",[1153],{"type":56,"value":1154},"SKILL.md § Authoring Scope",{"type":43,"tag":180,"props":1156,"children":1157},{},[],{"type":43,"tag":153,"props":1159,"children":1160},{},[1161,1166,1175],{"type":43,"tag":180,"props":1162,"children":1163},{},[1164],{"type":56,"value":1165},"Execute KQL Command",{"type":43,"tag":180,"props":1167,"children":1168},{},[1169],{"type":43,"tag":189,"props":1170,"children":1172},{"href":1171},"#execute-kql-command",[1173],{"type":56,"value":1174},"SKILL.md § Execute KQL Command",{"type":43,"tag":180,"props":1176,"children":1177},{},[1178,1188],{"type":43,"tag":52,"props":1179,"children":1180},{},[1181,1186],{"type":43,"tag":83,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":56,"value":544},{"type":56,"value":1187}," pattern",{"type":56,"value":1189}," — write JSON body, then execute",{"type":43,"tag":153,"props":1191,"children":1192},{},[1193,1198,1207],{"type":43,"tag":180,"props":1194,"children":1195},{},[1196],{"type":56,"value":1197},"Table Management via CLI",{"type":43,"tag":180,"props":1199,"children":1200},{},[1201],{"type":43,"tag":189,"props":1202,"children":1204},{"href":1203},"#table-management-via-cli",[1205],{"type":56,"value":1206},"SKILL.md § Table Management via CLI",{"type":43,"tag":180,"props":1208,"children":1209},{},[1210],{"type":56,"value":1211},"Create Table, Add Column, Drop Table",{"type":43,"tag":153,"props":1213,"children":1214},{},[1215,1220,1229],{"type":43,"tag":180,"props":1216,"children":1217},{},[1218],{"type":56,"value":1219},"Data Ingestion via CLI",{"type":43,"tag":180,"props":1221,"children":1222},{},[1223],{"type":43,"tag":189,"props":1224,"children":1226},{"href":1225},"#data-ingestion-via-cli",[1227],{"type":56,"value":1228},"SKILL.md § Data Ingestion via CLI",{"type":43,"tag":180,"props":1230,"children":1231},{},[1232],{"type":56,"value":1233},"Inline, From Storage, From OneLake, Set-or-Append",{"type":43,"tag":153,"props":1235,"children":1236},{},[1237,1242,1251],{"type":43,"tag":180,"props":1238,"children":1239},{},[1240],{"type":56,"value":1241},"Policies via CLI",{"type":43,"tag":180,"props":1243,"children":1244},{},[1245],{"type":43,"tag":189,"props":1246,"children":1248},{"href":1247},"#policies-via-cli",[1249],{"type":56,"value":1250},"SKILL.md § Policies via CLI",{"type":43,"tag":180,"props":1252,"children":1253},{},[1254],{"type":56,"value":1255},"Retention, Caching, Streaming Ingestion",{"type":43,"tag":153,"props":1257,"children":1258},{},[1259,1264,1273],{"type":43,"tag":180,"props":1260,"children":1261},{},[1262],{"type":56,"value":1263},"Materialized Views via CLI",{"type":43,"tag":180,"props":1265,"children":1266},{},[1267],{"type":43,"tag":189,"props":1268,"children":1270},{"href":1269},"#materialized-views-via-cli",[1271],{"type":56,"value":1272},"SKILL.md § Materialized Views via CLI",{"type":43,"tag":180,"props":1274,"children":1275},{},[],{"type":43,"tag":153,"props":1277,"children":1278},{},[1279,1284,1293],{"type":43,"tag":180,"props":1280,"children":1281},{},[1282],{"type":56,"value":1283},"Functions and Update Policies via CLI",{"type":43,"tag":180,"props":1285,"children":1286},{},[1287],{"type":43,"tag":189,"props":1288,"children":1290},{"href":1289},"#functions-and-update-policies-via-cli",[1291],{"type":56,"value":1292},"SKILL.md § Functions and Update Policies via CLI",{"type":43,"tag":180,"props":1294,"children":1295},{},[1296],{"type":56,"value":1297},"Create Function, Create Update Policy",{"type":43,"tag":153,"props":1299,"children":1300},{},[1301,1306,1315],{"type":43,"tag":180,"props":1302,"children":1303},{},[1304],{"type":56,"value":1305},"Schema Evolution via CLI",{"type":43,"tag":180,"props":1307,"children":1308},{},[1309],{"type":43,"tag":189,"props":1310,"children":1312},{"href":1311},"#schema-evolution-via-cli",[1313],{"type":56,"value":1314},"SKILL.md § Schema Evolution via CLI",{"type":43,"tag":180,"props":1316,"children":1317},{},[1318],{"type":56,"value":1319},"Safe Schema Deployment Script, Export Current Schema",{"type":43,"tag":153,"props":1321,"children":1322},{},[1323,1328,1337],{"type":43,"tag":180,"props":1324,"children":1325},{},[1326],{"type":56,"value":1327},"Monitoring Authoring Operations",{"type":43,"tag":180,"props":1329,"children":1330},{},[1331],{"type":43,"tag":189,"props":1332,"children":1334},{"href":1333},"#monitoring-authoring-operations",[1335],{"type":56,"value":1336},"SKILL.md § Monitoring Authoring Operations",{"type":43,"tag":180,"props":1338,"children":1339},{},[],{"type":43,"tag":153,"props":1341,"children":1342},{},[1343,1348,1357],{"type":43,"tag":180,"props":1344,"children":1345},{},[1346],{"type":56,"value":1347},"Must \u002F Prefer \u002F Avoid \u002F Troubleshooting",{"type":43,"tag":180,"props":1349,"children":1350},{},[1351],{"type":43,"tag":189,"props":1352,"children":1354},{"href":1353},"#must--prefer--avoid--troubleshooting",[1355],{"type":56,"value":1356},"SKILL.md § Must \u002F Prefer \u002F Avoid \u002F Troubleshooting",{"type":43,"tag":180,"props":1358,"children":1359},{},[1360,1365],{"type":43,"tag":52,"props":1361,"children":1362},{},[1363],{"type":56,"value":1364},"MUST DO \u002F AVOID \u002F PREFER",{"type":56,"value":1366}," checklists",{"type":43,"tag":153,"props":1368,"children":1369},{},[1370,1375,1384],{"type":43,"tag":180,"props":1371,"children":1372},{},[1373],{"type":56,"value":1374},"Agentic Workflows",{"type":43,"tag":180,"props":1376,"children":1377},{},[1378],{"type":43,"tag":189,"props":1379,"children":1381},{"href":1380},"#agentic-workflows",[1382],{"type":56,"value":1383},"SKILL.md § Agentic Workflows",{"type":43,"tag":180,"props":1385,"children":1386},{},[1387],{"type":56,"value":1388},"Exploration Before Authoring, Script Generation Workflow",{"type":43,"tag":153,"props":1390,"children":1391},{},[1392,1397,1406],{"type":43,"tag":180,"props":1393,"children":1394},{},[1395],{"type":56,"value":1396},"Examples",{"type":43,"tag":180,"props":1398,"children":1399},{},[1400],{"type":43,"tag":189,"props":1401,"children":1403},{"href":1402},"#examples",[1404],{"type":56,"value":1405},"SKILL.md § Examples",{"type":43,"tag":180,"props":1407,"children":1408},{},[],{"type":43,"tag":153,"props":1410,"children":1411},{},[1412,1417,1426],{"type":43,"tag":180,"props":1413,"children":1414},{},[1415],{"type":56,"value":1416},"Agent Integration Notes",{"type":43,"tag":180,"props":1418,"children":1419},{},[1420],{"type":43,"tag":189,"props":1421,"children":1423},{"href":1422},"#agent-integration-notes",[1424],{"type":56,"value":1425},"SKILL.md § Agent Integration Notes",{"type":43,"tag":180,"props":1427,"children":1428},{},[],{"type":43,"tag":1430,"props":1431,"children":1432},"hr",{},[],{"type":43,"tag":138,"props":1434,"children":1436},{"id":1435},"tool-stack",[1437],{"type":56,"value":1105},{"type":43,"tag":145,"props":1439,"children":1440},{},[1441,1462],{"type":43,"tag":149,"props":1442,"children":1443},{},[1444],{"type":43,"tag":153,"props":1445,"children":1446},{},[1447,1452,1457],{"type":43,"tag":157,"props":1448,"children":1449},{},[1450],{"type":56,"value":1451},"Tool",{"type":43,"tag":157,"props":1453,"children":1454},{},[1455],{"type":56,"value":1456},"Purpose",{"type":43,"tag":157,"props":1458,"children":1459},{},[1460],{"type":56,"value":1461},"Install",{"type":43,"tag":173,"props":1463,"children":1464},{},[1465,1490],{"type":43,"tag":153,"props":1466,"children":1467},{},[1468,1476,1481],{"type":43,"tag":180,"props":1469,"children":1470},{},[1471],{"type":43,"tag":52,"props":1472,"children":1473},{},[1474],{"type":56,"value":1475},"az cli",{"type":43,"tag":180,"props":1477,"children":1478},{},[1479],{"type":56,"value":1480},"KQL management commands via Kusto REST API; Fabric control-plane discovery",{"type":43,"tag":180,"props":1482,"children":1483},{},[1484],{"type":43,"tag":83,"props":1485,"children":1487},{"className":1486},[],[1488],{"type":56,"value":1489},"winget install Microsoft.AzureCLI",{"type":43,"tag":153,"props":1491,"children":1492},{},[1493,1501,1506],{"type":43,"tag":180,"props":1494,"children":1495},{},[1496],{"type":43,"tag":52,"props":1497,"children":1498},{},[1499],{"type":56,"value":1500},"jq",{"type":43,"tag":180,"props":1502,"children":1503},{},[1504],{"type":56,"value":1505},"JSON processing and output formatting",{"type":43,"tag":180,"props":1507,"children":1508},{},[1509],{"type":43,"tag":83,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":56,"value":1514},"winget install jqlang.jq",{"type":43,"tag":1430,"props":1516,"children":1517},{},[],{"type":43,"tag":138,"props":1519,"children":1521},{"id":1520},"connection",[1522],{"type":56,"value":1125},{"type":43,"tag":48,"props":1524,"children":1525},{},[1526,1528,1534],{"type":56,"value":1527},"Same as ",{"type":43,"tag":189,"props":1529,"children":1531},{"href":1530},"..\u002Feventhouse-consumption-cli\u002FSKILL.md#connection",[1532],{"type":56,"value":1533},"eventhouse-consumption-cli",{"type":56,"value":1535},". Authoring requires elevated roles:",{"type":43,"tag":1537,"props":1538,"children":1543},"pre",{"className":1539,"code":1540,"language":1541,"meta":1542,"style":1542},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Discover KQL Database query URI\nWS_ID=\"\u003Cworkspace-id>\"\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WS_ID}\u002FkqlDatabases\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  | jq '.value[] | {name: .displayName, queryUri: .properties.queryServiceUri}'\n\n# Set connection variables\nCLUSTER_URI=\"https:\u002F\u002F\u003Ccluster>.kusto.fabric.microsoft.com\"\nDB_NAME=\"MyDatabase\"\n\n# Verify admin access\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB_NAME}\",\"csl\":\".show database ${DB_NAME} principals | where Role == 'Admin'\"}\nEOF\naz rest --method POST \\\n  --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n  --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @\u002Ftmp\u002Fkql_body.json \\\n  | jq '.Tables[0].Rows'\n","bash","",[1544],{"type":43,"tag":83,"props":1545,"children":1546},{"__ignoreMap":1542},[1547,1558,1590,1620,1666,1692,1721,1731,1740,1766,1792,1800,1809,1838,1881,1890,1915,1949,1974,2000,2018],{"type":43,"tag":214,"props":1548,"children":1551},{"class":1549,"line":1550},"line",1,[1552],{"type":43,"tag":214,"props":1553,"children":1555},{"style":1554},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1556],{"type":56,"value":1557},"# Discover KQL Database query URI\n",{"type":43,"tag":214,"props":1559,"children":1561},{"class":1549,"line":1560},2,[1562,1568,1574,1579,1585],{"type":43,"tag":214,"props":1563,"children":1565},{"style":1564},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1566],{"type":56,"value":1567},"WS_ID",{"type":43,"tag":214,"props":1569,"children":1571},{"style":1570},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1572],{"type":56,"value":1573},"=",{"type":43,"tag":214,"props":1575,"children":1576},{"style":1570},[1577],{"type":56,"value":1578},"\"",{"type":43,"tag":214,"props":1580,"children":1582},{"style":1581},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1583],{"type":56,"value":1584},"\u003Cworkspace-id>",{"type":43,"tag":214,"props":1586,"children":1587},{"style":1570},[1588],{"type":56,"value":1589},"\"\n",{"type":43,"tag":214,"props":1591,"children":1593},{"class":1549,"line":1592},3,[1594,1600,1605,1610,1615],{"type":43,"tag":214,"props":1595,"children":1597},{"style":1596},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1598],{"type":56,"value":1599},"az",{"type":43,"tag":214,"props":1601,"children":1602},{"style":1581},[1603],{"type":56,"value":1604}," rest",{"type":43,"tag":214,"props":1606,"children":1607},{"style":1581},[1608],{"type":56,"value":1609}," --method",{"type":43,"tag":214,"props":1611,"children":1612},{"style":1581},[1613],{"type":56,"value":1614}," GET",{"type":43,"tag":214,"props":1616,"children":1617},{"style":1564},[1618],{"type":56,"value":1619}," \\\n",{"type":43,"tag":214,"props":1621,"children":1623},{"class":1549,"line":1622},4,[1624,1629,1634,1639,1644,1648,1653,1658,1662],{"type":43,"tag":214,"props":1625,"children":1626},{"style":1581},[1627],{"type":56,"value":1628},"  --url",{"type":43,"tag":214,"props":1630,"children":1631},{"style":1570},[1632],{"type":56,"value":1633}," \"",{"type":43,"tag":214,"props":1635,"children":1636},{"style":1581},[1637],{"type":56,"value":1638},"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F",{"type":43,"tag":214,"props":1640,"children":1641},{"style":1570},[1642],{"type":56,"value":1643},"${",{"type":43,"tag":214,"props":1645,"children":1646},{"style":1564},[1647],{"type":56,"value":1567},{"type":43,"tag":214,"props":1649,"children":1650},{"style":1570},[1651],{"type":56,"value":1652},"}",{"type":43,"tag":214,"props":1654,"children":1655},{"style":1581},[1656],{"type":56,"value":1657},"\u002FkqlDatabases",{"type":43,"tag":214,"props":1659,"children":1660},{"style":1570},[1661],{"type":56,"value":1578},{"type":43,"tag":214,"props":1663,"children":1664},{"style":1564},[1665],{"type":56,"value":1619},{"type":43,"tag":214,"props":1667,"children":1669},{"class":1549,"line":1668},5,[1670,1675,1679,1684,1688],{"type":43,"tag":214,"props":1671,"children":1672},{"style":1581},[1673],{"type":56,"value":1674},"  --resource",{"type":43,"tag":214,"props":1676,"children":1677},{"style":1570},[1678],{"type":56,"value":1633},{"type":43,"tag":214,"props":1680,"children":1681},{"style":1581},[1682],{"type":56,"value":1683},"https:\u002F\u002Fapi.fabric.microsoft.com",{"type":43,"tag":214,"props":1685,"children":1686},{"style":1570},[1687],{"type":56,"value":1578},{"type":43,"tag":214,"props":1689,"children":1690},{"style":1564},[1691],{"type":56,"value":1619},{"type":43,"tag":214,"props":1693,"children":1695},{"class":1549,"line":1694},6,[1696,1701,1706,1711,1716],{"type":43,"tag":214,"props":1697,"children":1698},{"style":1570},[1699],{"type":56,"value":1700},"  |",{"type":43,"tag":214,"props":1702,"children":1703},{"style":1596},[1704],{"type":56,"value":1705}," jq",{"type":43,"tag":214,"props":1707,"children":1708},{"style":1570},[1709],{"type":56,"value":1710}," '",{"type":43,"tag":214,"props":1712,"children":1713},{"style":1581},[1714],{"type":56,"value":1715},".value[] | {name: .displayName, queryUri: .properties.queryServiceUri}",{"type":43,"tag":214,"props":1717,"children":1718},{"style":1570},[1719],{"type":56,"value":1720},"'\n",{"type":43,"tag":214,"props":1722,"children":1724},{"class":1549,"line":1723},7,[1725],{"type":43,"tag":214,"props":1726,"children":1728},{"emptyLinePlaceholder":1727},true,[1729],{"type":56,"value":1730},"\n",{"type":43,"tag":214,"props":1732,"children":1734},{"class":1549,"line":1733},8,[1735],{"type":43,"tag":214,"props":1736,"children":1737},{"style":1554},[1738],{"type":56,"value":1739},"# Set connection variables\n",{"type":43,"tag":214,"props":1741,"children":1743},{"class":1549,"line":1742},9,[1744,1749,1753,1757,1762],{"type":43,"tag":214,"props":1745,"children":1746},{"style":1564},[1747],{"type":56,"value":1748},"CLUSTER_URI",{"type":43,"tag":214,"props":1750,"children":1751},{"style":1570},[1752],{"type":56,"value":1573},{"type":43,"tag":214,"props":1754,"children":1755},{"style":1570},[1756],{"type":56,"value":1578},{"type":43,"tag":214,"props":1758,"children":1759},{"style":1581},[1760],{"type":56,"value":1761},"https:\u002F\u002F\u003Ccluster>.kusto.fabric.microsoft.com",{"type":43,"tag":214,"props":1763,"children":1764},{"style":1570},[1765],{"type":56,"value":1589},{"type":43,"tag":214,"props":1767,"children":1769},{"class":1549,"line":1768},10,[1770,1775,1779,1783,1788],{"type":43,"tag":214,"props":1771,"children":1772},{"style":1564},[1773],{"type":56,"value":1774},"DB_NAME",{"type":43,"tag":214,"props":1776,"children":1777},{"style":1570},[1778],{"type":56,"value":1573},{"type":43,"tag":214,"props":1780,"children":1781},{"style":1570},[1782],{"type":56,"value":1578},{"type":43,"tag":214,"props":1784,"children":1785},{"style":1581},[1786],{"type":56,"value":1787},"MyDatabase",{"type":43,"tag":214,"props":1789,"children":1790},{"style":1570},[1791],{"type":56,"value":1589},{"type":43,"tag":214,"props":1793,"children":1795},{"class":1549,"line":1794},11,[1796],{"type":43,"tag":214,"props":1797,"children":1798},{"emptyLinePlaceholder":1727},[1799],{"type":56,"value":1730},{"type":43,"tag":214,"props":1801,"children":1803},{"class":1549,"line":1802},12,[1804],{"type":43,"tag":214,"props":1805,"children":1806},{"style":1554},[1807],{"type":56,"value":1808},"# Verify admin access\n",{"type":43,"tag":214,"props":1810,"children":1812},{"class":1549,"line":1811},13,[1813,1818,1823,1828,1833],{"type":43,"tag":214,"props":1814,"children":1815},{"style":1596},[1816],{"type":56,"value":1817},"cat",{"type":43,"tag":214,"props":1819,"children":1820},{"style":1570},[1821],{"type":56,"value":1822}," >",{"type":43,"tag":214,"props":1824,"children":1825},{"style":1581},[1826],{"type":56,"value":1827}," \u002Ftmp\u002Fkql_body.json",{"type":43,"tag":214,"props":1829,"children":1830},{"style":1570},[1831],{"type":56,"value":1832}," \u003C\u003C",{"type":43,"tag":214,"props":1834,"children":1835},{"style":1570},[1836],{"type":56,"value":1837}," EOF\n",{"type":43,"tag":214,"props":1839,"children":1841},{"class":1549,"line":1840},14,[1842,1847,1851,1855,1859,1864,1868,1872,1876],{"type":43,"tag":214,"props":1843,"children":1844},{"style":1581},[1845],{"type":56,"value":1846},"{\"db\":\"",{"type":43,"tag":214,"props":1848,"children":1849},{"style":1570},[1850],{"type":56,"value":1643},{"type":43,"tag":214,"props":1852,"children":1853},{"style":1564},[1854],{"type":56,"value":1774},{"type":43,"tag":214,"props":1856,"children":1857},{"style":1570},[1858],{"type":56,"value":1652},{"type":43,"tag":214,"props":1860,"children":1861},{"style":1581},[1862],{"type":56,"value":1863},"\",\"csl\":\".show database ",{"type":43,"tag":214,"props":1865,"children":1866},{"style":1570},[1867],{"type":56,"value":1643},{"type":43,"tag":214,"props":1869,"children":1870},{"style":1564},[1871],{"type":56,"value":1774},{"type":43,"tag":214,"props":1873,"children":1874},{"style":1570},[1875],{"type":56,"value":1652},{"type":43,"tag":214,"props":1877,"children":1878},{"style":1581},[1879],{"type":56,"value":1880}," principals | where Role == 'Admin'\"}\n",{"type":43,"tag":214,"props":1882,"children":1884},{"class":1549,"line":1883},15,[1885],{"type":43,"tag":214,"props":1886,"children":1887},{"style":1570},[1888],{"type":56,"value":1889},"EOF\n",{"type":43,"tag":214,"props":1891,"children":1893},{"class":1549,"line":1892},16,[1894,1898,1902,1906,1911],{"type":43,"tag":214,"props":1895,"children":1896},{"style":1596},[1897],{"type":56,"value":1599},{"type":43,"tag":214,"props":1899,"children":1900},{"style":1581},[1901],{"type":56,"value":1604},{"type":43,"tag":214,"props":1903,"children":1904},{"style":1581},[1905],{"type":56,"value":1609},{"type":43,"tag":214,"props":1907,"children":1908},{"style":1581},[1909],{"type":56,"value":1910}," POST",{"type":43,"tag":214,"props":1912,"children":1913},{"style":1564},[1914],{"type":56,"value":1619},{"type":43,"tag":214,"props":1916,"children":1918},{"class":1549,"line":1917},17,[1919,1923,1928,1932,1936,1941,1945],{"type":43,"tag":214,"props":1920,"children":1921},{"style":1581},[1922],{"type":56,"value":1628},{"type":43,"tag":214,"props":1924,"children":1925},{"style":1570},[1926],{"type":56,"value":1927}," \"${",{"type":43,"tag":214,"props":1929,"children":1930},{"style":1564},[1931],{"type":56,"value":1748},{"type":43,"tag":214,"props":1933,"children":1934},{"style":1570},[1935],{"type":56,"value":1652},{"type":43,"tag":214,"props":1937,"children":1938},{"style":1581},[1939],{"type":56,"value":1940},"\u002Fv1\u002Frest\u002Fmgmt",{"type":43,"tag":214,"props":1942,"children":1943},{"style":1570},[1944],{"type":56,"value":1578},{"type":43,"tag":214,"props":1946,"children":1947},{"style":1564},[1948],{"type":56,"value":1619},{"type":43,"tag":214,"props":1950,"children":1952},{"class":1549,"line":1951},18,[1953,1957,1961,1966,1970],{"type":43,"tag":214,"props":1954,"children":1955},{"style":1581},[1956],{"type":56,"value":1674},{"type":43,"tag":214,"props":1958,"children":1959},{"style":1570},[1960],{"type":56,"value":1633},{"type":43,"tag":214,"props":1962,"children":1963},{"style":1581},[1964],{"type":56,"value":1965},"https:\u002F\u002Fkusto.kusto.windows.net",{"type":43,"tag":214,"props":1967,"children":1968},{"style":1570},[1969],{"type":56,"value":1578},{"type":43,"tag":214,"props":1971,"children":1972},{"style":1564},[1973],{"type":56,"value":1619},{"type":43,"tag":214,"props":1975,"children":1977},{"class":1549,"line":1976},19,[1978,1983,1987,1992,1996],{"type":43,"tag":214,"props":1979,"children":1980},{"style":1581},[1981],{"type":56,"value":1982},"  --headers",{"type":43,"tag":214,"props":1984,"children":1985},{"style":1570},[1986],{"type":56,"value":1633},{"type":43,"tag":214,"props":1988,"children":1989},{"style":1581},[1990],{"type":56,"value":1991},"Content-Type=application\u002Fjson",{"type":43,"tag":214,"props":1993,"children":1994},{"style":1570},[1995],{"type":56,"value":1578},{"type":43,"tag":214,"props":1997,"children":1998},{"style":1564},[1999],{"type":56,"value":1619},{"type":43,"tag":214,"props":2001,"children":2003},{"class":1549,"line":2002},20,[2004,2009,2014],{"type":43,"tag":214,"props":2005,"children":2006},{"style":1581},[2007],{"type":56,"value":2008},"  --body",{"type":43,"tag":214,"props":2010,"children":2011},{"style":1581},[2012],{"type":56,"value":2013}," @\u002Ftmp\u002Fkql_body.json",{"type":43,"tag":214,"props":2015,"children":2016},{"style":1564},[2017],{"type":56,"value":1619},{"type":43,"tag":214,"props":2019,"children":2021},{"class":1549,"line":2020},21,[2022,2026,2030,2034,2039],{"type":43,"tag":214,"props":2023,"children":2024},{"style":1570},[2025],{"type":56,"value":1700},{"type":43,"tag":214,"props":2027,"children":2028},{"style":1596},[2029],{"type":56,"value":1705},{"type":43,"tag":214,"props":2031,"children":2032},{"style":1570},[2033],{"type":56,"value":1710},{"type":43,"tag":214,"props":2035,"children":2036},{"style":1581},[2037],{"type":56,"value":2038},".Tables[0].Rows",{"type":43,"tag":214,"props":2040,"children":2041},{"style":1570},[2042],{"type":56,"value":1720},{"type":43,"tag":1430,"props":2044,"children":2045},{},[],{"type":43,"tag":138,"props":2047,"children":2049},{"id":2048},"authoring-scope",[2050],{"type":56,"value":1145},{"type":43,"tag":145,"props":2052,"children":2053},{},[2054,2070],{"type":43,"tag":149,"props":2055,"children":2056},{},[2057],{"type":43,"tag":153,"props":2058,"children":2059},{},[2060,2065],{"type":43,"tag":157,"props":2061,"children":2062},{},[2063],{"type":56,"value":2064},"Operation",{"type":43,"tag":157,"props":2066,"children":2067},{},[2068],{"type":56,"value":2069},"Command Pattern",{"type":43,"tag":173,"props":2071,"children":2072},{},[2073,2090,2107,2124,2141,2158,2175,2192,2209,2226],{"type":43,"tag":153,"props":2074,"children":2075},{},[2076,2081],{"type":43,"tag":180,"props":2077,"children":2078},{},[2079],{"type":56,"value":2080},"Create table",{"type":43,"tag":180,"props":2082,"children":2083},{},[2084],{"type":43,"tag":83,"props":2085,"children":2087},{"className":2086},[],[2088],{"type":56,"value":2089},".create-merge table T (cols)",{"type":43,"tag":153,"props":2091,"children":2092},{},[2093,2098],{"type":43,"tag":180,"props":2094,"children":2095},{},[2096],{"type":56,"value":2097},"Add column",{"type":43,"tag":180,"props":2099,"children":2100},{},[2101],{"type":43,"tag":83,"props":2102,"children":2104},{"className":2103},[],[2105],{"type":56,"value":2106},".alter-merge table T (NewCol: type)",{"type":43,"tag":153,"props":2108,"children":2109},{},[2110,2115],{"type":43,"tag":180,"props":2111,"children":2112},{},[2113],{"type":56,"value":2114},"Drop table",{"type":43,"tag":180,"props":2116,"children":2117},{},[2118],{"type":43,"tag":83,"props":2119,"children":2121},{"className":2120},[],[2122],{"type":56,"value":2123},".drop table T ifexists",{"type":43,"tag":153,"props":2125,"children":2126},{},[2127,2132],{"type":43,"tag":180,"props":2128,"children":2129},{},[2130],{"type":56,"value":2131},"Ingest data",{"type":43,"tag":180,"props":2133,"children":2134},{},[2135],{"type":43,"tag":83,"props":2136,"children":2138},{"className":2137},[],[2139],{"type":56,"value":2140},".ingest into table T (...)",{"type":43,"tag":153,"props":2142,"children":2143},{},[2144,2149],{"type":43,"tag":180,"props":2145,"children":2146},{},[2147],{"type":56,"value":2148},"Set retention",{"type":43,"tag":180,"props":2150,"children":2151},{},[2152],{"type":43,"tag":83,"props":2153,"children":2155},{"className":2154},[],[2156],{"type":56,"value":2157},".alter table T policy retention ...",{"type":43,"tag":153,"props":2159,"children":2160},{},[2161,2166],{"type":43,"tag":180,"props":2162,"children":2163},{},[2164],{"type":56,"value":2165},"Set caching",{"type":43,"tag":180,"props":2167,"children":2168},{},[2169],{"type":43,"tag":83,"props":2170,"children":2172},{"className":2171},[],[2173],{"type":56,"value":2174},".alter table T policy caching hot = Nd",{"type":43,"tag":153,"props":2176,"children":2177},{},[2178,2183],{"type":43,"tag":180,"props":2179,"children":2180},{},[2181],{"type":56,"value":2182},"Create function",{"type":43,"tag":180,"props":2184,"children":2185},{},[2186],{"type":43,"tag":83,"props":2187,"children":2189},{"className":2188},[],[2190],{"type":56,"value":2191},".create-or-alter function F() { ... }",{"type":43,"tag":153,"props":2193,"children":2194},{},[2195,2200],{"type":43,"tag":180,"props":2196,"children":2197},{},[2198],{"type":56,"value":2199},"Create materialized view",{"type":43,"tag":180,"props":2201,"children":2202},{},[2203],{"type":43,"tag":83,"props":2204,"children":2206},{"className":2205},[],[2207],{"type":56,"value":2208},".create materialized-view MV on table T { ... }",{"type":43,"tag":153,"props":2210,"children":2211},{},[2212,2217],{"type":43,"tag":180,"props":2213,"children":2214},{},[2215],{"type":56,"value":2216},"Create update policy",{"type":43,"tag":180,"props":2218,"children":2219},{},[2220],{"type":43,"tag":83,"props":2221,"children":2223},{"className":2222},[],[2224],{"type":56,"value":2225},".alter table T policy update ...",{"type":43,"tag":153,"props":2227,"children":2228},{},[2229,2234],{"type":43,"tag":180,"props":2230,"children":2231},{},[2232],{"type":56,"value":2233},"Create data mapping",{"type":43,"tag":180,"props":2235,"children":2236},{},[2237],{"type":43,"tag":83,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":56,"value":2242},".create table T ingestion csv mapping ...",{"type":43,"tag":1430,"props":2244,"children":2245},{},[],{"type":43,"tag":138,"props":2247,"children":2249},{"id":2248},"execute-kql-command",[2250],{"type":56,"value":1165},{"type":43,"tag":48,"props":2252,"children":2253},{},[2254,2256,2261,2263,2268,2270,2276,2278,2284],{"type":56,"value":2255},"All KQL management commands in this skill follow the same ",{"type":43,"tag":83,"props":2257,"children":2259},{"className":2258},[],[2260],{"type":56,"value":544},{"type":56,"value":2262}," pattern. After setting ",{"type":43,"tag":83,"props":2264,"children":2266},{"className":2265},[],[2267],{"type":56,"value":1748},{"type":56,"value":2269}," and ",{"type":43,"tag":83,"props":2271,"children":2273},{"className":2272},[],[2274],{"type":56,"value":2275},"DB",{"type":56,"value":2277},", write the JSON body to ",{"type":43,"tag":83,"props":2279,"children":2281},{"className":2280},[],[2282],{"type":56,"value":2283},"\u002Ftmp\u002Fkql_body.json",{"type":56,"value":2285}," and execute:",{"type":43,"tag":1537,"props":2287,"children":2289},{"className":1539,"code":2288,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\"\u003CKQL management command>\"}\nEOF\naz rest --method POST \\\n  --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n  --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @\u002Ftmp\u002Fkql_body.json \\\n  | jq '.Tables[0].Rows'\n",[2290],{"type":43,"tag":83,"props":2291,"children":2292},{"__ignoreMap":1542},[2293,2316,2340,2347,2370,2401,2424,2447,2462],{"type":43,"tag":214,"props":2294,"children":2295},{"class":1549,"line":1550},[2296,2300,2304,2308,2312],{"type":43,"tag":214,"props":2297,"children":2298},{"style":1596},[2299],{"type":56,"value":1817},{"type":43,"tag":214,"props":2301,"children":2302},{"style":1570},[2303],{"type":56,"value":1822},{"type":43,"tag":214,"props":2305,"children":2306},{"style":1581},[2307],{"type":56,"value":1827},{"type":43,"tag":214,"props":2309,"children":2310},{"style":1570},[2311],{"type":56,"value":1832},{"type":43,"tag":214,"props":2313,"children":2314},{"style":1570},[2315],{"type":56,"value":1837},{"type":43,"tag":214,"props":2317,"children":2318},{"class":1549,"line":1560},[2319,2323,2327,2331,2335],{"type":43,"tag":214,"props":2320,"children":2321},{"style":1581},[2322],{"type":56,"value":1846},{"type":43,"tag":214,"props":2324,"children":2325},{"style":1570},[2326],{"type":56,"value":1643},{"type":43,"tag":214,"props":2328,"children":2329},{"style":1564},[2330],{"type":56,"value":2275},{"type":43,"tag":214,"props":2332,"children":2333},{"style":1570},[2334],{"type":56,"value":1652},{"type":43,"tag":214,"props":2336,"children":2337},{"style":1581},[2338],{"type":56,"value":2339},"\",\"csl\":\"\u003CKQL management command>\"}\n",{"type":43,"tag":214,"props":2341,"children":2342},{"class":1549,"line":1592},[2343],{"type":43,"tag":214,"props":2344,"children":2345},{"style":1570},[2346],{"type":56,"value":1889},{"type":43,"tag":214,"props":2348,"children":2349},{"class":1549,"line":1622},[2350,2354,2358,2362,2366],{"type":43,"tag":214,"props":2351,"children":2352},{"style":1596},[2353],{"type":56,"value":1599},{"type":43,"tag":214,"props":2355,"children":2356},{"style":1581},[2357],{"type":56,"value":1604},{"type":43,"tag":214,"props":2359,"children":2360},{"style":1581},[2361],{"type":56,"value":1609},{"type":43,"tag":214,"props":2363,"children":2364},{"style":1581},[2365],{"type":56,"value":1910},{"type":43,"tag":214,"props":2367,"children":2368},{"style":1564},[2369],{"type":56,"value":1619},{"type":43,"tag":214,"props":2371,"children":2372},{"class":1549,"line":1668},[2373,2377,2381,2385,2389,2393,2397],{"type":43,"tag":214,"props":2374,"children":2375},{"style":1581},[2376],{"type":56,"value":1628},{"type":43,"tag":214,"props":2378,"children":2379},{"style":1570},[2380],{"type":56,"value":1927},{"type":43,"tag":214,"props":2382,"children":2383},{"style":1564},[2384],{"type":56,"value":1748},{"type":43,"tag":214,"props":2386,"children":2387},{"style":1570},[2388],{"type":56,"value":1652},{"type":43,"tag":214,"props":2390,"children":2391},{"style":1581},[2392],{"type":56,"value":1940},{"type":43,"tag":214,"props":2394,"children":2395},{"style":1570},[2396],{"type":56,"value":1578},{"type":43,"tag":214,"props":2398,"children":2399},{"style":1564},[2400],{"type":56,"value":1619},{"type":43,"tag":214,"props":2402,"children":2403},{"class":1549,"line":1694},[2404,2408,2412,2416,2420],{"type":43,"tag":214,"props":2405,"children":2406},{"style":1581},[2407],{"type":56,"value":1674},{"type":43,"tag":214,"props":2409,"children":2410},{"style":1570},[2411],{"type":56,"value":1633},{"type":43,"tag":214,"props":2413,"children":2414},{"style":1581},[2415],{"type":56,"value":1965},{"type":43,"tag":214,"props":2417,"children":2418},{"style":1570},[2419],{"type":56,"value":1578},{"type":43,"tag":214,"props":2421,"children":2422},{"style":1564},[2423],{"type":56,"value":1619},{"type":43,"tag":214,"props":2425,"children":2426},{"class":1549,"line":1723},[2427,2431,2435,2439,2443],{"type":43,"tag":214,"props":2428,"children":2429},{"style":1581},[2430],{"type":56,"value":1982},{"type":43,"tag":214,"props":2432,"children":2433},{"style":1570},[2434],{"type":56,"value":1633},{"type":43,"tag":214,"props":2436,"children":2437},{"style":1581},[2438],{"type":56,"value":1991},{"type":43,"tag":214,"props":2440,"children":2441},{"style":1570},[2442],{"type":56,"value":1578},{"type":43,"tag":214,"props":2444,"children":2445},{"style":1564},[2446],{"type":56,"value":1619},{"type":43,"tag":214,"props":2448,"children":2449},{"class":1549,"line":1733},[2450,2454,2458],{"type":43,"tag":214,"props":2451,"children":2452},{"style":1581},[2453],{"type":56,"value":2008},{"type":43,"tag":214,"props":2455,"children":2456},{"style":1581},[2457],{"type":56,"value":2013},{"type":43,"tag":214,"props":2459,"children":2460},{"style":1564},[2461],{"type":56,"value":1619},{"type":43,"tag":214,"props":2463,"children":2464},{"class":1549,"line":1742},[2465,2469,2473,2477,2481],{"type":43,"tag":214,"props":2466,"children":2467},{"style":1570},[2468],{"type":56,"value":1700},{"type":43,"tag":214,"props":2470,"children":2471},{"style":1596},[2472],{"type":56,"value":1705},{"type":43,"tag":214,"props":2474,"children":2475},{"style":1570},[2476],{"type":56,"value":1710},{"type":43,"tag":214,"props":2478,"children":2479},{"style":1581},[2480],{"type":56,"value":2038},{"type":43,"tag":214,"props":2482,"children":2483},{"style":1570},[2484],{"type":56,"value":1720},{"type":43,"tag":44,"props":2486,"children":2487},{},[2488],{"type":43,"tag":48,"props":2489,"children":2490},{},[2491,2496,2498,2504,2506,2512],{"type":43,"tag":52,"props":2492,"children":2493},{},[2494],{"type":56,"value":2495},"Nested JSON",{"type":56,"value":2497}," — For commands whose KQL contains embedded JSON (policies, mappings), use ",{"type":43,"tag":83,"props":2499,"children":2501},{"className":2500},[],[2502],{"type":56,"value":2503},"\u003C\u003C 'EOF'",{"type":56,"value":2505}," (single-quoted) to prevent shell expansion of backslash-escaped quotes, and replace ",{"type":43,"tag":83,"props":2507,"children":2509},{"className":2508},[],[2510],{"type":56,"value":2511},"${DB}",{"type":56,"value":2513}," with the literal database name.",{"type":43,"tag":44,"props":2515,"children":2516},{},[2517],{"type":43,"tag":48,"props":2518,"children":2519},{},[2520,2525,2526,2532,2534,2540,2542,2546],{"type":43,"tag":52,"props":2521,"children":2522},{},[2523],{"type":56,"value":2524},"PowerShell equivalent",{"type":56,"value":204},{"type":43,"tag":83,"props":2527,"children":2529},{"className":2528},[],[2530],{"type":56,"value":2531},"@{db=$Database;csl=$Command} | ConvertTo-Json -Compress | Out-File $env:TEMP\\kql_body.json -Encoding utf8NoBOM",{"type":56,"value":2533}," then ",{"type":43,"tag":83,"props":2535,"children":2537},{"className":2536},[],[2538],{"type":56,"value":2539},"--body \"@$env:TEMP\\kql_body.json\"",{"type":56,"value":2541},". See ",{"type":43,"tag":189,"props":2543,"children":2544},{"href":1089},[2545],{"type":56,"value":1083},{"type":56,"value":2547},".",{"type":43,"tag":1430,"props":2549,"children":2550},{},[],{"type":43,"tag":138,"props":2552,"children":2554},{"id":2553},"table-management-via-cli",[2555],{"type":56,"value":1197},{"type":43,"tag":2557,"props":2558,"children":2560},"h3",{"id":2559},"create-table-idempotent",[2561],{"type":56,"value":2562},"Create Table (Idempotent)",{"type":43,"tag":1537,"props":2564,"children":2566},{"className":1539,"code":2565,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic, Duration: real)\"}\nEOF\n",[2567],{"type":43,"tag":83,"props":2568,"children":2569},{"__ignoreMap":1542},[2570,2593,2617],{"type":43,"tag":214,"props":2571,"children":2572},{"class":1549,"line":1550},[2573,2577,2581,2585,2589],{"type":43,"tag":214,"props":2574,"children":2575},{"style":1596},[2576],{"type":56,"value":1817},{"type":43,"tag":214,"props":2578,"children":2579},{"style":1570},[2580],{"type":56,"value":1822},{"type":43,"tag":214,"props":2582,"children":2583},{"style":1581},[2584],{"type":56,"value":1827},{"type":43,"tag":214,"props":2586,"children":2587},{"style":1570},[2588],{"type":56,"value":1832},{"type":43,"tag":214,"props":2590,"children":2591},{"style":1570},[2592],{"type":56,"value":1837},{"type":43,"tag":214,"props":2594,"children":2595},{"class":1549,"line":1560},[2596,2600,2604,2608,2612],{"type":43,"tag":214,"props":2597,"children":2598},{"style":1581},[2599],{"type":56,"value":1846},{"type":43,"tag":214,"props":2601,"children":2602},{"style":1570},[2603],{"type":56,"value":1643},{"type":43,"tag":214,"props":2605,"children":2606},{"style":1564},[2607],{"type":56,"value":2275},{"type":43,"tag":214,"props":2609,"children":2610},{"style":1570},[2611],{"type":56,"value":1652},{"type":43,"tag":214,"props":2613,"children":2614},{"style":1581},[2615],{"type":56,"value":2616},"\",\"csl\":\".create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic, Duration: real)\"}\n",{"type":43,"tag":214,"props":2618,"children":2619},{"class":1549,"line":1592},[2620],{"type":43,"tag":214,"props":2621,"children":2622},{"style":1570},[2623],{"type":56,"value":1889},{"type":43,"tag":44,"props":2625,"children":2626},{},[2627],{"type":43,"tag":48,"props":2628,"children":2629},{},[2630,2632,2637,2639],{"type":56,"value":2631},"Execute ",{"type":43,"tag":83,"props":2633,"children":2635},{"className":2634},[],[2636],{"type":56,"value":2283},{"type":56,"value":2638}," — see ",{"type":43,"tag":189,"props":2640,"children":2641},{"href":1171},[2642],{"type":56,"value":1165},{"type":43,"tag":2557,"props":2644,"children":2646},{"id":2645},"add-column",[2647],{"type":56,"value":2648},"Add Column",{"type":43,"tag":1537,"props":2650,"children":2652},{"className":1539,"code":2651,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter-merge table Events (Region: string)\"}\nEOF\n",[2653],{"type":43,"tag":83,"props":2654,"children":2655},{"__ignoreMap":1542},[2656,2679,2703],{"type":43,"tag":214,"props":2657,"children":2658},{"class":1549,"line":1550},[2659,2663,2667,2671,2675],{"type":43,"tag":214,"props":2660,"children":2661},{"style":1596},[2662],{"type":56,"value":1817},{"type":43,"tag":214,"props":2664,"children":2665},{"style":1570},[2666],{"type":56,"value":1822},{"type":43,"tag":214,"props":2668,"children":2669},{"style":1581},[2670],{"type":56,"value":1827},{"type":43,"tag":214,"props":2672,"children":2673},{"style":1570},[2674],{"type":56,"value":1832},{"type":43,"tag":214,"props":2676,"children":2677},{"style":1570},[2678],{"type":56,"value":1837},{"type":43,"tag":214,"props":2680,"children":2681},{"class":1549,"line":1560},[2682,2686,2690,2694,2698],{"type":43,"tag":214,"props":2683,"children":2684},{"style":1581},[2685],{"type":56,"value":1846},{"type":43,"tag":214,"props":2687,"children":2688},{"style":1570},[2689],{"type":56,"value":1643},{"type":43,"tag":214,"props":2691,"children":2692},{"style":1564},[2693],{"type":56,"value":2275},{"type":43,"tag":214,"props":2695,"children":2696},{"style":1570},[2697],{"type":56,"value":1652},{"type":43,"tag":214,"props":2699,"children":2700},{"style":1581},[2701],{"type":56,"value":2702},"\",\"csl\":\".alter-merge table Events (Region: string)\"}\n",{"type":43,"tag":214,"props":2704,"children":2705},{"class":1549,"line":1592},[2706],{"type":43,"tag":214,"props":2707,"children":2708},{"style":1570},[2709],{"type":56,"value":1889},{"type":43,"tag":44,"props":2711,"children":2712},{},[2713],{"type":43,"tag":48,"props":2714,"children":2715},{},[2716,2717,2722,2723],{"type":56,"value":2631},{"type":43,"tag":83,"props":2718,"children":2720},{"className":2719},[],[2721],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":2724,"children":2725},{"href":1171},[2726],{"type":56,"value":1165},{"type":43,"tag":2557,"props":2728,"children":2730},{"id":2729},"drop-table",[2731],{"type":56,"value":2732},"Drop Table",{"type":43,"tag":1537,"props":2734,"children":2736},{"className":1539,"code":2735,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".drop table Events ifexists\"}\nEOF\n",[2737],{"type":43,"tag":83,"props":2738,"children":2739},{"__ignoreMap":1542},[2740,2763,2787],{"type":43,"tag":214,"props":2741,"children":2742},{"class":1549,"line":1550},[2743,2747,2751,2755,2759],{"type":43,"tag":214,"props":2744,"children":2745},{"style":1596},[2746],{"type":56,"value":1817},{"type":43,"tag":214,"props":2748,"children":2749},{"style":1570},[2750],{"type":56,"value":1822},{"type":43,"tag":214,"props":2752,"children":2753},{"style":1581},[2754],{"type":56,"value":1827},{"type":43,"tag":214,"props":2756,"children":2757},{"style":1570},[2758],{"type":56,"value":1832},{"type":43,"tag":214,"props":2760,"children":2761},{"style":1570},[2762],{"type":56,"value":1837},{"type":43,"tag":214,"props":2764,"children":2765},{"class":1549,"line":1560},[2766,2770,2774,2778,2782],{"type":43,"tag":214,"props":2767,"children":2768},{"style":1581},[2769],{"type":56,"value":1846},{"type":43,"tag":214,"props":2771,"children":2772},{"style":1570},[2773],{"type":56,"value":1643},{"type":43,"tag":214,"props":2775,"children":2776},{"style":1564},[2777],{"type":56,"value":2275},{"type":43,"tag":214,"props":2779,"children":2780},{"style":1570},[2781],{"type":56,"value":1652},{"type":43,"tag":214,"props":2783,"children":2784},{"style":1581},[2785],{"type":56,"value":2786},"\",\"csl\":\".drop table Events ifexists\"}\n",{"type":43,"tag":214,"props":2788,"children":2789},{"class":1549,"line":1592},[2790],{"type":43,"tag":214,"props":2791,"children":2792},{"style":1570},[2793],{"type":56,"value":1889},{"type":43,"tag":44,"props":2795,"children":2796},{},[2797],{"type":43,"tag":48,"props":2798,"children":2799},{},[2800,2801,2806,2807],{"type":56,"value":2631},{"type":43,"tag":83,"props":2802,"children":2804},{"className":2803},[],[2805],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":2808,"children":2809},{"href":1171},[2810],{"type":56,"value":1165},{"type":43,"tag":1430,"props":2812,"children":2813},{},[],{"type":43,"tag":138,"props":2815,"children":2817},{"id":2816},"data-ingestion-via-cli",[2818],{"type":56,"value":1219},{"type":43,"tag":2557,"props":2820,"children":2822},{"id":2821},"inline-ingestion-testing",[2823],{"type":56,"value":2824},"Inline Ingestion (Testing)",{"type":43,"tag":1537,"props":2826,"children":2828},{"className":1539,"code":2827,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".ingest inline into table Events \u003C| 2025-01-15T10:00:00Z,Login,user1,{},0.5\\n2025-01-15T10:01:00Z,Click,user2,{},0.2\"}\nEOF\n",[2829],{"type":43,"tag":83,"props":2830,"children":2831},{"__ignoreMap":1542},[2832,2855,2879],{"type":43,"tag":214,"props":2833,"children":2834},{"class":1549,"line":1550},[2835,2839,2843,2847,2851],{"type":43,"tag":214,"props":2836,"children":2837},{"style":1596},[2838],{"type":56,"value":1817},{"type":43,"tag":214,"props":2840,"children":2841},{"style":1570},[2842],{"type":56,"value":1822},{"type":43,"tag":214,"props":2844,"children":2845},{"style":1581},[2846],{"type":56,"value":1827},{"type":43,"tag":214,"props":2848,"children":2849},{"style":1570},[2850],{"type":56,"value":1832},{"type":43,"tag":214,"props":2852,"children":2853},{"style":1570},[2854],{"type":56,"value":1837},{"type":43,"tag":214,"props":2856,"children":2857},{"class":1549,"line":1560},[2858,2862,2866,2870,2874],{"type":43,"tag":214,"props":2859,"children":2860},{"style":1581},[2861],{"type":56,"value":1846},{"type":43,"tag":214,"props":2863,"children":2864},{"style":1570},[2865],{"type":56,"value":1643},{"type":43,"tag":214,"props":2867,"children":2868},{"style":1564},[2869],{"type":56,"value":2275},{"type":43,"tag":214,"props":2871,"children":2872},{"style":1570},[2873],{"type":56,"value":1652},{"type":43,"tag":214,"props":2875,"children":2876},{"style":1581},[2877],{"type":56,"value":2878},"\",\"csl\":\".ingest inline into table Events \u003C| 2025-01-15T10:00:00Z,Login,user1,{},0.5\\n2025-01-15T10:01:00Z,Click,user2,{},0.2\"}\n",{"type":43,"tag":214,"props":2880,"children":2881},{"class":1549,"line":1592},[2882],{"type":43,"tag":214,"props":2883,"children":2884},{"style":1570},[2885],{"type":56,"value":1889},{"type":43,"tag":44,"props":2887,"children":2888},{},[2889],{"type":43,"tag":48,"props":2890,"children":2891},{},[2892,2893,2898,2899],{"type":56,"value":2631},{"type":43,"tag":83,"props":2894,"children":2896},{"className":2895},[],[2897],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":2900,"children":2901},{"href":1171},[2902],{"type":56,"value":1165},{"type":43,"tag":2557,"props":2904,"children":2906},{"id":2905},"ingest-from-storage",[2907],{"type":56,"value":2908},"Ingest from Storage",{"type":43,"tag":1537,"props":2910,"children":2912},{"className":1539,"code":2911,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".ingest into table Events (h'https:\u002F\u002Fmystorage.blob.core.windows.net\u002Fdata\u002Fevents.csv.gz;impersonate') with (format='csv', ingestionMappingReference='EventsCsvMapping', ignoreFirstRecord=true)\"}\nEOF\n",[2913],{"type":43,"tag":83,"props":2914,"children":2915},{"__ignoreMap":1542},[2916,2939,2963],{"type":43,"tag":214,"props":2917,"children":2918},{"class":1549,"line":1550},[2919,2923,2927,2931,2935],{"type":43,"tag":214,"props":2920,"children":2921},{"style":1596},[2922],{"type":56,"value":1817},{"type":43,"tag":214,"props":2924,"children":2925},{"style":1570},[2926],{"type":56,"value":1822},{"type":43,"tag":214,"props":2928,"children":2929},{"style":1581},[2930],{"type":56,"value":1827},{"type":43,"tag":214,"props":2932,"children":2933},{"style":1570},[2934],{"type":56,"value":1832},{"type":43,"tag":214,"props":2936,"children":2937},{"style":1570},[2938],{"type":56,"value":1837},{"type":43,"tag":214,"props":2940,"children":2941},{"class":1549,"line":1560},[2942,2946,2950,2954,2958],{"type":43,"tag":214,"props":2943,"children":2944},{"style":1581},[2945],{"type":56,"value":1846},{"type":43,"tag":214,"props":2947,"children":2948},{"style":1570},[2949],{"type":56,"value":1643},{"type":43,"tag":214,"props":2951,"children":2952},{"style":1564},[2953],{"type":56,"value":2275},{"type":43,"tag":214,"props":2955,"children":2956},{"style":1570},[2957],{"type":56,"value":1652},{"type":43,"tag":214,"props":2959,"children":2960},{"style":1581},[2961],{"type":56,"value":2962},"\",\"csl\":\".ingest into table Events (h'https:\u002F\u002Fmystorage.blob.core.windows.net\u002Fdata\u002Fevents.csv.gz;impersonate') with (format='csv', ingestionMappingReference='EventsCsvMapping', ignoreFirstRecord=true)\"}\n",{"type":43,"tag":214,"props":2964,"children":2965},{"class":1549,"line":1592},[2966],{"type":43,"tag":214,"props":2967,"children":2968},{"style":1570},[2969],{"type":56,"value":1889},{"type":43,"tag":44,"props":2971,"children":2972},{},[2973],{"type":43,"tag":48,"props":2974,"children":2975},{},[2976,2977,2982,2983],{"type":56,"value":2631},{"type":43,"tag":83,"props":2978,"children":2980},{"className":2979},[],[2981],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":2984,"children":2985},{"href":1171},[2986],{"type":56,"value":1165},{"type":43,"tag":2557,"props":2988,"children":2990},{"id":2989},"ingest-from-onelake",[2991],{"type":56,"value":2992},"Ingest from OneLake",{"type":43,"tag":1537,"props":2994,"children":2996},{"className":1539,"code":2995,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".ingest into table Events (h'abfss:\u002F\u002Fworkspace@onelake.dfs.fabric.microsoft.com\u002Flakehouse.Lakehouse\u002FFiles\u002Fevents.parquet;impersonate') with (format='parquet')\"}\nEOF\n",[2997],{"type":43,"tag":83,"props":2998,"children":2999},{"__ignoreMap":1542},[3000,3023,3047],{"type":43,"tag":214,"props":3001,"children":3002},{"class":1549,"line":1550},[3003,3007,3011,3015,3019],{"type":43,"tag":214,"props":3004,"children":3005},{"style":1596},[3006],{"type":56,"value":1817},{"type":43,"tag":214,"props":3008,"children":3009},{"style":1570},[3010],{"type":56,"value":1822},{"type":43,"tag":214,"props":3012,"children":3013},{"style":1581},[3014],{"type":56,"value":1827},{"type":43,"tag":214,"props":3016,"children":3017},{"style":1570},[3018],{"type":56,"value":1832},{"type":43,"tag":214,"props":3020,"children":3021},{"style":1570},[3022],{"type":56,"value":1837},{"type":43,"tag":214,"props":3024,"children":3025},{"class":1549,"line":1560},[3026,3030,3034,3038,3042],{"type":43,"tag":214,"props":3027,"children":3028},{"style":1581},[3029],{"type":56,"value":1846},{"type":43,"tag":214,"props":3031,"children":3032},{"style":1570},[3033],{"type":56,"value":1643},{"type":43,"tag":214,"props":3035,"children":3036},{"style":1564},[3037],{"type":56,"value":2275},{"type":43,"tag":214,"props":3039,"children":3040},{"style":1570},[3041],{"type":56,"value":1652},{"type":43,"tag":214,"props":3043,"children":3044},{"style":1581},[3045],{"type":56,"value":3046},"\",\"csl\":\".ingest into table Events (h'abfss:\u002F\u002Fworkspace@onelake.dfs.fabric.microsoft.com\u002Flakehouse.Lakehouse\u002FFiles\u002Fevents.parquet;impersonate') with (format='parquet')\"}\n",{"type":43,"tag":214,"props":3048,"children":3049},{"class":1549,"line":1592},[3050],{"type":43,"tag":214,"props":3051,"children":3052},{"style":1570},[3053],{"type":56,"value":1889},{"type":43,"tag":44,"props":3055,"children":3056},{},[3057],{"type":43,"tag":48,"props":3058,"children":3059},{},[3060,3061,3066,3067],{"type":56,"value":2631},{"type":43,"tag":83,"props":3062,"children":3064},{"className":3063},[],[3065],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3068,"children":3069},{"href":1171},[3070],{"type":56,"value":1165},{"type":43,"tag":2557,"props":3072,"children":3074},{"id":3073},"set-or-append-from-query",[3075],{"type":56,"value":3076},"Set-or-Append from Query",{"type":43,"tag":1537,"props":3078,"children":3080},{"className":1539,"code":3079,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".set-or-append CleanEvents \u003C| RawEvents | where IsValid == true | project Timestamp, EventType, UserId\"}\nEOF\n",[3081],{"type":43,"tag":83,"props":3082,"children":3083},{"__ignoreMap":1542},[3084,3107,3131],{"type":43,"tag":214,"props":3085,"children":3086},{"class":1549,"line":1550},[3087,3091,3095,3099,3103],{"type":43,"tag":214,"props":3088,"children":3089},{"style":1596},[3090],{"type":56,"value":1817},{"type":43,"tag":214,"props":3092,"children":3093},{"style":1570},[3094],{"type":56,"value":1822},{"type":43,"tag":214,"props":3096,"children":3097},{"style":1581},[3098],{"type":56,"value":1827},{"type":43,"tag":214,"props":3100,"children":3101},{"style":1570},[3102],{"type":56,"value":1832},{"type":43,"tag":214,"props":3104,"children":3105},{"style":1570},[3106],{"type":56,"value":1837},{"type":43,"tag":214,"props":3108,"children":3109},{"class":1549,"line":1560},[3110,3114,3118,3122,3126],{"type":43,"tag":214,"props":3111,"children":3112},{"style":1581},[3113],{"type":56,"value":1846},{"type":43,"tag":214,"props":3115,"children":3116},{"style":1570},[3117],{"type":56,"value":1643},{"type":43,"tag":214,"props":3119,"children":3120},{"style":1564},[3121],{"type":56,"value":2275},{"type":43,"tag":214,"props":3123,"children":3124},{"style":1570},[3125],{"type":56,"value":1652},{"type":43,"tag":214,"props":3127,"children":3128},{"style":1581},[3129],{"type":56,"value":3130},"\",\"csl\":\".set-or-append CleanEvents \u003C| RawEvents | where IsValid == true | project Timestamp, EventType, UserId\"}\n",{"type":43,"tag":214,"props":3132,"children":3133},{"class":1549,"line":1592},[3134],{"type":43,"tag":214,"props":3135,"children":3136},{"style":1570},[3137],{"type":56,"value":1889},{"type":43,"tag":44,"props":3139,"children":3140},{},[3141],{"type":43,"tag":48,"props":3142,"children":3143},{},[3144,3145,3150,3151],{"type":56,"value":2631},{"type":43,"tag":83,"props":3146,"children":3148},{"className":3147},[],[3149],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3152,"children":3153},{"href":1171},[3154],{"type":56,"value":1165},{"type":43,"tag":1430,"props":3156,"children":3157},{},[],{"type":43,"tag":138,"props":3159,"children":3161},{"id":3160},"policies-via-cli",[3162],{"type":56,"value":1241},{"type":43,"tag":2557,"props":3164,"children":3166},{"id":3165},"retention",[3167],{"type":56,"value":3168},"Retention",{"type":43,"tag":1537,"props":3170,"children":3172},{"className":1539,"code":3171,"language":1541,"meta":1542,"style":1542},"# Set 365-day retention\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"db\":\"MyDB\",\"csl\":\".alter table Events policy retention '{\\\"SoftDeletePeriod\\\":\\\"365.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\"}\nEOF\n",[3173],{"type":43,"tag":83,"props":3174,"children":3175},{"__ignoreMap":1542},[3176,3184,3208,3216],{"type":43,"tag":214,"props":3177,"children":3178},{"class":1549,"line":1550},[3179],{"type":43,"tag":214,"props":3180,"children":3181},{"style":1554},[3182],{"type":56,"value":3183},"# Set 365-day retention\n",{"type":43,"tag":214,"props":3185,"children":3186},{"class":1549,"line":1560},[3187,3191,3195,3199,3203],{"type":43,"tag":214,"props":3188,"children":3189},{"style":1596},[3190],{"type":56,"value":1817},{"type":43,"tag":214,"props":3192,"children":3193},{"style":1570},[3194],{"type":56,"value":1822},{"type":43,"tag":214,"props":3196,"children":3197},{"style":1581},[3198],{"type":56,"value":1827},{"type":43,"tag":214,"props":3200,"children":3201},{"style":1570},[3202],{"type":56,"value":1832},{"type":43,"tag":214,"props":3204,"children":3205},{"style":1570},[3206],{"type":56,"value":3207}," 'EOF'\n",{"type":43,"tag":214,"props":3209,"children":3210},{"class":1549,"line":1592},[3211],{"type":43,"tag":214,"props":3212,"children":3213},{"style":1581},[3214],{"type":56,"value":3215},"{\"db\":\"MyDB\",\"csl\":\".alter table Events policy retention '{\\\"SoftDeletePeriod\\\":\\\"365.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\"}\n",{"type":43,"tag":214,"props":3217,"children":3218},{"class":1549,"line":1622},[3219],{"type":43,"tag":214,"props":3220,"children":3221},{"style":1570},[3222],{"type":56,"value":1889},{"type":43,"tag":44,"props":3224,"children":3225},{},[3226],{"type":43,"tag":48,"props":3227,"children":3228},{},[3229,3230,3235,3236],{"type":56,"value":2631},{"type":43,"tag":83,"props":3231,"children":3233},{"className":3232},[],[3234],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3237,"children":3238},{"href":1171},[3239],{"type":56,"value":1165},{"type":43,"tag":2557,"props":3241,"children":3243},{"id":3242},"caching-hot-cache",[3244],{"type":56,"value":3245},"Caching (Hot Cache)",{"type":43,"tag":1537,"props":3247,"children":3249},{"className":1539,"code":3248,"language":1541,"meta":1542,"style":1542},"# Keep last 30 days in hot cache\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter table Events policy caching hot = 30d\"}\nEOF\n",[3250],{"type":43,"tag":83,"props":3251,"children":3252},{"__ignoreMap":1542},[3253,3261,3284,3308],{"type":43,"tag":214,"props":3254,"children":3255},{"class":1549,"line":1550},[3256],{"type":43,"tag":214,"props":3257,"children":3258},{"style":1554},[3259],{"type":56,"value":3260},"# Keep last 30 days in hot cache\n",{"type":43,"tag":214,"props":3262,"children":3263},{"class":1549,"line":1560},[3264,3268,3272,3276,3280],{"type":43,"tag":214,"props":3265,"children":3266},{"style":1596},[3267],{"type":56,"value":1817},{"type":43,"tag":214,"props":3269,"children":3270},{"style":1570},[3271],{"type":56,"value":1822},{"type":43,"tag":214,"props":3273,"children":3274},{"style":1581},[3275],{"type":56,"value":1827},{"type":43,"tag":214,"props":3277,"children":3278},{"style":1570},[3279],{"type":56,"value":1832},{"type":43,"tag":214,"props":3281,"children":3282},{"style":1570},[3283],{"type":56,"value":1837},{"type":43,"tag":214,"props":3285,"children":3286},{"class":1549,"line":1592},[3287,3291,3295,3299,3303],{"type":43,"tag":214,"props":3288,"children":3289},{"style":1581},[3290],{"type":56,"value":1846},{"type":43,"tag":214,"props":3292,"children":3293},{"style":1570},[3294],{"type":56,"value":1643},{"type":43,"tag":214,"props":3296,"children":3297},{"style":1564},[3298],{"type":56,"value":2275},{"type":43,"tag":214,"props":3300,"children":3301},{"style":1570},[3302],{"type":56,"value":1652},{"type":43,"tag":214,"props":3304,"children":3305},{"style":1581},[3306],{"type":56,"value":3307},"\",\"csl\":\".alter table Events policy caching hot = 30d\"}\n",{"type":43,"tag":214,"props":3309,"children":3310},{"class":1549,"line":1622},[3311],{"type":43,"tag":214,"props":3312,"children":3313},{"style":1570},[3314],{"type":56,"value":1889},{"type":43,"tag":44,"props":3316,"children":3317},{},[3318],{"type":43,"tag":48,"props":3319,"children":3320},{},[3321,3322,3327,3328],{"type":56,"value":2631},{"type":43,"tag":83,"props":3323,"children":3325},{"className":3324},[],[3326],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3329,"children":3330},{"href":1171},[3331],{"type":56,"value":1165},{"type":43,"tag":2557,"props":3333,"children":3335},{"id":3334},"streaming-ingestion",[3336],{"type":56,"value":3337},"Streaming Ingestion",{"type":43,"tag":1537,"props":3339,"children":3341},{"className":1539,"code":3340,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter table Events policy streamingingestion enable\"}\nEOF\n",[3342],{"type":43,"tag":83,"props":3343,"children":3344},{"__ignoreMap":1542},[3345,3368,3392],{"type":43,"tag":214,"props":3346,"children":3347},{"class":1549,"line":1550},[3348,3352,3356,3360,3364],{"type":43,"tag":214,"props":3349,"children":3350},{"style":1596},[3351],{"type":56,"value":1817},{"type":43,"tag":214,"props":3353,"children":3354},{"style":1570},[3355],{"type":56,"value":1822},{"type":43,"tag":214,"props":3357,"children":3358},{"style":1581},[3359],{"type":56,"value":1827},{"type":43,"tag":214,"props":3361,"children":3362},{"style":1570},[3363],{"type":56,"value":1832},{"type":43,"tag":214,"props":3365,"children":3366},{"style":1570},[3367],{"type":56,"value":1837},{"type":43,"tag":214,"props":3369,"children":3370},{"class":1549,"line":1560},[3371,3375,3379,3383,3387],{"type":43,"tag":214,"props":3372,"children":3373},{"style":1581},[3374],{"type":56,"value":1846},{"type":43,"tag":214,"props":3376,"children":3377},{"style":1570},[3378],{"type":56,"value":1643},{"type":43,"tag":214,"props":3380,"children":3381},{"style":1564},[3382],{"type":56,"value":2275},{"type":43,"tag":214,"props":3384,"children":3385},{"style":1570},[3386],{"type":56,"value":1652},{"type":43,"tag":214,"props":3388,"children":3389},{"style":1581},[3390],{"type":56,"value":3391},"\",\"csl\":\".alter table Events policy streamingingestion enable\"}\n",{"type":43,"tag":214,"props":3393,"children":3394},{"class":1549,"line":1592},[3395],{"type":43,"tag":214,"props":3396,"children":3397},{"style":1570},[3398],{"type":56,"value":1889},{"type":43,"tag":44,"props":3400,"children":3401},{},[3402],{"type":43,"tag":48,"props":3403,"children":3404},{},[3405,3406,3411,3412],{"type":56,"value":2631},{"type":43,"tag":83,"props":3407,"children":3409},{"className":3408},[],[3410],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3413,"children":3414},{"href":1171},[3415],{"type":56,"value":1165},{"type":43,"tag":1430,"props":3417,"children":3418},{},[],{"type":43,"tag":138,"props":3420,"children":3422},{"id":3421},"materialized-views-via-cli",[3423],{"type":56,"value":1263},{"type":43,"tag":1537,"props":3425,"children":3427},{"className":1539,"code":3426,"language":1541,"meta":1542,"style":1542},"# Create materialized view with backfill\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"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) }\"}\nEOF\n",[3428],{"type":43,"tag":83,"props":3429,"children":3430},{"__ignoreMap":1542},[3431,3439,3462,3486],{"type":43,"tag":214,"props":3432,"children":3433},{"class":1549,"line":1550},[3434],{"type":43,"tag":214,"props":3435,"children":3436},{"style":1554},[3437],{"type":56,"value":3438},"# Create materialized view with backfill\n",{"type":43,"tag":214,"props":3440,"children":3441},{"class":1549,"line":1560},[3442,3446,3450,3454,3458],{"type":43,"tag":214,"props":3443,"children":3444},{"style":1596},[3445],{"type":56,"value":1817},{"type":43,"tag":214,"props":3447,"children":3448},{"style":1570},[3449],{"type":56,"value":1822},{"type":43,"tag":214,"props":3451,"children":3452},{"style":1581},[3453],{"type":56,"value":1827},{"type":43,"tag":214,"props":3455,"children":3456},{"style":1570},[3457],{"type":56,"value":1832},{"type":43,"tag":214,"props":3459,"children":3460},{"style":1570},[3461],{"type":56,"value":1837},{"type":43,"tag":214,"props":3463,"children":3464},{"class":1549,"line":1592},[3465,3469,3473,3477,3481],{"type":43,"tag":214,"props":3466,"children":3467},{"style":1581},[3468],{"type":56,"value":1846},{"type":43,"tag":214,"props":3470,"children":3471},{"style":1570},[3472],{"type":56,"value":1643},{"type":43,"tag":214,"props":3474,"children":3475},{"style":1564},[3476],{"type":56,"value":2275},{"type":43,"tag":214,"props":3478,"children":3479},{"style":1570},[3480],{"type":56,"value":1652},{"type":43,"tag":214,"props":3482,"children":3483},{"style":1581},[3484],{"type":56,"value":3485},"\",\"csl\":\".create materialized-view with (backfill=true) HourlyEventCounts on table Events { Events | summarize Count = count(), LastSeen = max(Timestamp) by EventType, bin(Timestamp, 1h) }\"}\n",{"type":43,"tag":214,"props":3487,"children":3488},{"class":1549,"line":1622},[3489],{"type":43,"tag":214,"props":3490,"children":3491},{"style":1570},[3492],{"type":56,"value":1889},{"type":43,"tag":44,"props":3494,"children":3495},{},[3496],{"type":43,"tag":48,"props":3497,"children":3498},{},[3499,3500,3505,3506],{"type":56,"value":2631},{"type":43,"tag":83,"props":3501,"children":3503},{"className":3502},[],[3504],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3507,"children":3508},{"href":1171},[3509],{"type":56,"value":1165},{"type":43,"tag":1537,"props":3511,"children":3513},{"className":1539,"code":3512,"language":1541,"meta":1542,"style":1542},"# Check health\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".show materialized-view HourlyEventCounts statistics\"}\nEOF\n",[3514],{"type":43,"tag":83,"props":3515,"children":3516},{"__ignoreMap":1542},[3517,3525,3548,3572],{"type":43,"tag":214,"props":3518,"children":3519},{"class":1549,"line":1550},[3520],{"type":43,"tag":214,"props":3521,"children":3522},{"style":1554},[3523],{"type":56,"value":3524},"# Check health\n",{"type":43,"tag":214,"props":3526,"children":3527},{"class":1549,"line":1560},[3528,3532,3536,3540,3544],{"type":43,"tag":214,"props":3529,"children":3530},{"style":1596},[3531],{"type":56,"value":1817},{"type":43,"tag":214,"props":3533,"children":3534},{"style":1570},[3535],{"type":56,"value":1822},{"type":43,"tag":214,"props":3537,"children":3538},{"style":1581},[3539],{"type":56,"value":1827},{"type":43,"tag":214,"props":3541,"children":3542},{"style":1570},[3543],{"type":56,"value":1832},{"type":43,"tag":214,"props":3545,"children":3546},{"style":1570},[3547],{"type":56,"value":1837},{"type":43,"tag":214,"props":3549,"children":3550},{"class":1549,"line":1592},[3551,3555,3559,3563,3567],{"type":43,"tag":214,"props":3552,"children":3553},{"style":1581},[3554],{"type":56,"value":1846},{"type":43,"tag":214,"props":3556,"children":3557},{"style":1570},[3558],{"type":56,"value":1643},{"type":43,"tag":214,"props":3560,"children":3561},{"style":1564},[3562],{"type":56,"value":2275},{"type":43,"tag":214,"props":3564,"children":3565},{"style":1570},[3566],{"type":56,"value":1652},{"type":43,"tag":214,"props":3568,"children":3569},{"style":1581},[3570],{"type":56,"value":3571},"\",\"csl\":\".show materialized-view HourlyEventCounts statistics\"}\n",{"type":43,"tag":214,"props":3573,"children":3574},{"class":1549,"line":1622},[3575],{"type":43,"tag":214,"props":3576,"children":3577},{"style":1570},[3578],{"type":56,"value":1889},{"type":43,"tag":44,"props":3580,"children":3581},{},[3582],{"type":43,"tag":48,"props":3583,"children":3584},{},[3585,3586,3591,3592],{"type":56,"value":2631},{"type":43,"tag":83,"props":3587,"children":3589},{"className":3588},[],[3590],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3593,"children":3594},{"href":1171},[3595],{"type":56,"value":1165},{"type":43,"tag":1430,"props":3597,"children":3598},{},[],{"type":43,"tag":138,"props":3600,"children":3602},{"id":3601},"functions-and-update-policies-via-cli",[3603],{"type":56,"value":1283},{"type":43,"tag":2557,"props":3605,"children":3607},{"id":3606},"create-function",[3608],{"type":56,"value":3609},"Create Function",{"type":43,"tag":1537,"props":3611,"children":3613},{"className":1539,"code":3612,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"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) }\"}\nEOF\n",[3614],{"type":43,"tag":83,"props":3615,"children":3616},{"__ignoreMap":1542},[3617,3640,3664],{"type":43,"tag":214,"props":3618,"children":3619},{"class":1549,"line":1550},[3620,3624,3628,3632,3636],{"type":43,"tag":214,"props":3621,"children":3622},{"style":1596},[3623],{"type":56,"value":1817},{"type":43,"tag":214,"props":3625,"children":3626},{"style":1570},[3627],{"type":56,"value":1822},{"type":43,"tag":214,"props":3629,"children":3630},{"style":1581},[3631],{"type":56,"value":1827},{"type":43,"tag":214,"props":3633,"children":3634},{"style":1570},[3635],{"type":56,"value":1832},{"type":43,"tag":214,"props":3637,"children":3638},{"style":1570},[3639],{"type":56,"value":1837},{"type":43,"tag":214,"props":3641,"children":3642},{"class":1549,"line":1560},[3643,3647,3651,3655,3659],{"type":43,"tag":214,"props":3644,"children":3645},{"style":1581},[3646],{"type":56,"value":1846},{"type":43,"tag":214,"props":3648,"children":3649},{"style":1570},[3650],{"type":56,"value":1643},{"type":43,"tag":214,"props":3652,"children":3653},{"style":1564},[3654],{"type":56,"value":2275},{"type":43,"tag":214,"props":3656,"children":3657},{"style":1570},[3658],{"type":56,"value":1652},{"type":43,"tag":214,"props":3660,"children":3661},{"style":1581},[3662],{"type":56,"value":3663},"\",\"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) }\"}\n",{"type":43,"tag":214,"props":3665,"children":3666},{"class":1549,"line":1592},[3667],{"type":43,"tag":214,"props":3668,"children":3669},{"style":1570},[3670],{"type":56,"value":1889},{"type":43,"tag":44,"props":3672,"children":3673},{},[3674],{"type":43,"tag":48,"props":3675,"children":3676},{},[3677,3678,3683,3684],{"type":56,"value":2631},{"type":43,"tag":83,"props":3679,"children":3681},{"className":3680},[],[3682],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3685,"children":3686},{"href":1171},[3687],{"type":56,"value":1165},{"type":43,"tag":2557,"props":3689,"children":3691},{"id":3690},"create-update-policy",[3692],{"type":56,"value":3693},"Create Update Policy",{"type":43,"tag":1537,"props":3695,"children":3697},{"className":1539,"code":3696,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"db\":\"MyDB\",\"csl\":\".alter table ParsedEvents policy update @'[{\\\"IsEnabled\\\":true,\\\"Source\\\":\\\"RawEvents\\\",\\\"Query\\\":\\\"ParseRawEvents()\\\",\\\"IsTransactional\\\":true}]'\"}\nEOF\n",[3698],{"type":43,"tag":83,"props":3699,"children":3700},{"__ignoreMap":1542},[3701,3724,3732],{"type":43,"tag":214,"props":3702,"children":3703},{"class":1549,"line":1550},[3704,3708,3712,3716,3720],{"type":43,"tag":214,"props":3705,"children":3706},{"style":1596},[3707],{"type":56,"value":1817},{"type":43,"tag":214,"props":3709,"children":3710},{"style":1570},[3711],{"type":56,"value":1822},{"type":43,"tag":214,"props":3713,"children":3714},{"style":1581},[3715],{"type":56,"value":1827},{"type":43,"tag":214,"props":3717,"children":3718},{"style":1570},[3719],{"type":56,"value":1832},{"type":43,"tag":214,"props":3721,"children":3722},{"style":1570},[3723],{"type":56,"value":3207},{"type":43,"tag":214,"props":3725,"children":3726},{"class":1549,"line":1560},[3727],{"type":43,"tag":214,"props":3728,"children":3729},{"style":1581},[3730],{"type":56,"value":3731},"{\"db\":\"MyDB\",\"csl\":\".alter table ParsedEvents policy update @'[{\\\"IsEnabled\\\":true,\\\"Source\\\":\\\"RawEvents\\\",\\\"Query\\\":\\\"ParseRawEvents()\\\",\\\"IsTransactional\\\":true}]'\"}\n",{"type":43,"tag":214,"props":3733,"children":3734},{"class":1549,"line":1592},[3735],{"type":43,"tag":214,"props":3736,"children":3737},{"style":1570},[3738],{"type":56,"value":1889},{"type":43,"tag":44,"props":3740,"children":3741},{},[3742],{"type":43,"tag":48,"props":3743,"children":3744},{},[3745,3746,3751,3752],{"type":56,"value":2631},{"type":43,"tag":83,"props":3747,"children":3749},{"className":3748},[],[3750],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":3753,"children":3754},{"href":1171},[3755],{"type":56,"value":1165},{"type":43,"tag":1430,"props":3757,"children":3758},{},[],{"type":43,"tag":138,"props":3760,"children":3762},{"id":3761},"schema-evolution-via-cli",[3763],{"type":56,"value":1305},{"type":43,"tag":2557,"props":3765,"children":3767},{"id":3766},"safe-schema-deployment-script",[3768],{"type":56,"value":3769},"Safe Schema Deployment Script",{"type":43,"tag":48,"props":3771,"children":3772},{},[3773,3775,3781,3783,3788],{"type":56,"value":3774},"Save management commands in a ",{"type":43,"tag":83,"props":3776,"children":3778},{"className":3777},[],[3779],{"type":56,"value":3780},".kql",{"type":56,"value":3782}," file (one per line), then execute each command via ",{"type":43,"tag":83,"props":3784,"children":3786},{"className":3785},[],[3787],{"type":56,"value":544},{"type":56,"value":3789},":",{"type":43,"tag":1537,"props":3791,"children":3793},{"className":1539,"code":3792,"language":1541,"meta":1542,"style":1542},"# deploy_schema.kql contains one command per line:\n# .create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic)\n# .create-merge table ParsedEvents (Timestamp: datetime, EventType: string, UserId: string, PageName: string)\n# .alter table Events policy retention '{\\\"SoftDeletePeriod\\\":\\\"365.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\n# .alter table Events policy caching hot = 30d\n\n# Execute each command from the file (see \"Execute KQL Command\" section)\nwhile IFS= read -r cmd; do\n  [[ \"$cmd\" =~ ^\u002F\u002F ]] && continue   # skip comment lines\n  [[ -z \"$cmd\" ]] && continue        # skip blank lines\n  cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\"${cmd}\"}\nEOF\n  az rest --method POST \\\n    --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n    --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n    --headers \"Content-Type=application\u002Fjson\" \\\n    --body @\u002Ftmp\u002Fkql_body.json \\\n    | jq '.Tables[0].Rows'\ndone \u003C deploy_schema.kql\n",[3794],{"type":43,"tag":83,"props":3795,"children":3796},{"__ignoreMap":1542},[3797,3805,3813,3821,3829,3837,3844,3852,3896,3947,3989,4013,4055,4062,4086,4118,4142,4166,4182,4206],{"type":43,"tag":214,"props":3798,"children":3799},{"class":1549,"line":1550},[3800],{"type":43,"tag":214,"props":3801,"children":3802},{"style":1554},[3803],{"type":56,"value":3804},"# deploy_schema.kql contains one command per line:\n",{"type":43,"tag":214,"props":3806,"children":3807},{"class":1549,"line":1560},[3808],{"type":43,"tag":214,"props":3809,"children":3810},{"style":1554},[3811],{"type":56,"value":3812},"# .create-merge table Events (Timestamp: datetime, EventType: string, UserId: string, Properties: dynamic)\n",{"type":43,"tag":214,"props":3814,"children":3815},{"class":1549,"line":1592},[3816],{"type":43,"tag":214,"props":3817,"children":3818},{"style":1554},[3819],{"type":56,"value":3820},"# .create-merge table ParsedEvents (Timestamp: datetime, EventType: string, UserId: string, PageName: string)\n",{"type":43,"tag":214,"props":3822,"children":3823},{"class":1549,"line":1622},[3824],{"type":43,"tag":214,"props":3825,"children":3826},{"style":1554},[3827],{"type":56,"value":3828},"# .alter table Events policy retention '{\\\"SoftDeletePeriod\\\":\\\"365.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\n",{"type":43,"tag":214,"props":3830,"children":3831},{"class":1549,"line":1668},[3832],{"type":43,"tag":214,"props":3833,"children":3834},{"style":1554},[3835],{"type":56,"value":3836},"# .alter table Events policy caching hot = 30d\n",{"type":43,"tag":214,"props":3838,"children":3839},{"class":1549,"line":1694},[3840],{"type":43,"tag":214,"props":3841,"children":3842},{"emptyLinePlaceholder":1727},[3843],{"type":56,"value":1730},{"type":43,"tag":214,"props":3845,"children":3846},{"class":1549,"line":1723},[3847],{"type":43,"tag":214,"props":3848,"children":3849},{"style":1554},[3850],{"type":56,"value":3851},"# Execute each command from the file (see \"Execute KQL Command\" section)\n",{"type":43,"tag":214,"props":3853,"children":3854},{"class":1549,"line":1733},[3855,3861,3866,3870,3876,3881,3886,3891],{"type":43,"tag":214,"props":3856,"children":3858},{"style":3857},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3859],{"type":56,"value":3860},"while",{"type":43,"tag":214,"props":3862,"children":3863},{"style":1564},[3864],{"type":56,"value":3865}," IFS",{"type":43,"tag":214,"props":3867,"children":3868},{"style":1570},[3869],{"type":56,"value":1573},{"type":43,"tag":214,"props":3871,"children":3873},{"style":3872},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[3874],{"type":56,"value":3875}," read",{"type":43,"tag":214,"props":3877,"children":3878},{"style":1581},[3879],{"type":56,"value":3880}," -r",{"type":43,"tag":214,"props":3882,"children":3883},{"style":1581},[3884],{"type":56,"value":3885}," cmd",{"type":43,"tag":214,"props":3887,"children":3888},{"style":1570},[3889],{"type":56,"value":3890},";",{"type":43,"tag":214,"props":3892,"children":3893},{"style":3857},[3894],{"type":56,"value":3895}," do\n",{"type":43,"tag":214,"props":3897,"children":3898},{"class":1549,"line":1742},[3899,3904,3908,3913,3917,3922,3927,3932,3937,3942],{"type":43,"tag":214,"props":3900,"children":3901},{"style":1570},[3902],{"type":56,"value":3903},"  [[",{"type":43,"tag":214,"props":3905,"children":3906},{"style":1570},[3907],{"type":56,"value":1633},{"type":43,"tag":214,"props":3909,"children":3910},{"style":1564},[3911],{"type":56,"value":3912},"$cmd",{"type":43,"tag":214,"props":3914,"children":3915},{"style":1570},[3916],{"type":56,"value":1578},{"type":43,"tag":214,"props":3918,"children":3919},{"style":1570},[3920],{"type":56,"value":3921}," =~",{"type":43,"tag":214,"props":3923,"children":3924},{"style":1564},[3925],{"type":56,"value":3926}," ^\u002F\u002F ",{"type":43,"tag":214,"props":3928,"children":3929},{"style":1570},[3930],{"type":56,"value":3931},"]]",{"type":43,"tag":214,"props":3933,"children":3934},{"style":1570},[3935],{"type":56,"value":3936}," &&",{"type":43,"tag":214,"props":3938,"children":3939},{"style":3857},[3940],{"type":56,"value":3941}," continue",{"type":43,"tag":214,"props":3943,"children":3944},{"style":1554},[3945],{"type":56,"value":3946},"   # skip comment lines\n",{"type":43,"tag":214,"props":3948,"children":3949},{"class":1549,"line":1768},[3950,3954,3959,3963,3967,3971,3976,3980,3984],{"type":43,"tag":214,"props":3951,"children":3952},{"style":1570},[3953],{"type":56,"value":3903},{"type":43,"tag":214,"props":3955,"children":3956},{"style":1570},[3957],{"type":56,"value":3958}," -z",{"type":43,"tag":214,"props":3960,"children":3961},{"style":1570},[3962],{"type":56,"value":1633},{"type":43,"tag":214,"props":3964,"children":3965},{"style":1564},[3966],{"type":56,"value":3912},{"type":43,"tag":214,"props":3968,"children":3969},{"style":1570},[3970],{"type":56,"value":1578},{"type":43,"tag":214,"props":3972,"children":3973},{"style":1570},[3974],{"type":56,"value":3975}," ]]",{"type":43,"tag":214,"props":3977,"children":3978},{"style":1570},[3979],{"type":56,"value":3936},{"type":43,"tag":214,"props":3981,"children":3982},{"style":3857},[3983],{"type":56,"value":3941},{"type":43,"tag":214,"props":3985,"children":3986},{"style":1554},[3987],{"type":56,"value":3988},"        # skip blank lines\n",{"type":43,"tag":214,"props":3990,"children":3991},{"class":1549,"line":1794},[3992,3997,4001,4005,4009],{"type":43,"tag":214,"props":3993,"children":3994},{"style":1596},[3995],{"type":56,"value":3996},"  cat",{"type":43,"tag":214,"props":3998,"children":3999},{"style":1570},[4000],{"type":56,"value":1822},{"type":43,"tag":214,"props":4002,"children":4003},{"style":1581},[4004],{"type":56,"value":1827},{"type":43,"tag":214,"props":4006,"children":4007},{"style":1570},[4008],{"type":56,"value":1832},{"type":43,"tag":214,"props":4010,"children":4011},{"style":1570},[4012],{"type":56,"value":1837},{"type":43,"tag":214,"props":4014,"children":4015},{"class":1549,"line":1802},[4016,4020,4024,4028,4032,4037,4041,4046,4050],{"type":43,"tag":214,"props":4017,"children":4018},{"style":1581},[4019],{"type":56,"value":1846},{"type":43,"tag":214,"props":4021,"children":4022},{"style":1570},[4023],{"type":56,"value":1643},{"type":43,"tag":214,"props":4025,"children":4026},{"style":1564},[4027],{"type":56,"value":2275},{"type":43,"tag":214,"props":4029,"children":4030},{"style":1570},[4031],{"type":56,"value":1652},{"type":43,"tag":214,"props":4033,"children":4034},{"style":1581},[4035],{"type":56,"value":4036},"\",\"csl\":\"",{"type":43,"tag":214,"props":4038,"children":4039},{"style":1570},[4040],{"type":56,"value":1643},{"type":43,"tag":214,"props":4042,"children":4043},{"style":1564},[4044],{"type":56,"value":4045},"cmd",{"type":43,"tag":214,"props":4047,"children":4048},{"style":1570},[4049],{"type":56,"value":1652},{"type":43,"tag":214,"props":4051,"children":4052},{"style":1581},[4053],{"type":56,"value":4054},"\"}\n",{"type":43,"tag":214,"props":4056,"children":4057},{"class":1549,"line":1811},[4058],{"type":43,"tag":214,"props":4059,"children":4060},{"style":1570},[4061],{"type":56,"value":1889},{"type":43,"tag":214,"props":4063,"children":4064},{"class":1549,"line":1840},[4065,4070,4074,4078,4082],{"type":43,"tag":214,"props":4066,"children":4067},{"style":1596},[4068],{"type":56,"value":4069},"  az",{"type":43,"tag":214,"props":4071,"children":4072},{"style":1581},[4073],{"type":56,"value":1604},{"type":43,"tag":214,"props":4075,"children":4076},{"style":1581},[4077],{"type":56,"value":1609},{"type":43,"tag":214,"props":4079,"children":4080},{"style":1581},[4081],{"type":56,"value":1910},{"type":43,"tag":214,"props":4083,"children":4084},{"style":1564},[4085],{"type":56,"value":1619},{"type":43,"tag":214,"props":4087,"children":4088},{"class":1549,"line":1883},[4089,4094,4098,4102,4106,4110,4114],{"type":43,"tag":214,"props":4090,"children":4091},{"style":1581},[4092],{"type":56,"value":4093},"    --url",{"type":43,"tag":214,"props":4095,"children":4096},{"style":1570},[4097],{"type":56,"value":1927},{"type":43,"tag":214,"props":4099,"children":4100},{"style":1564},[4101],{"type":56,"value":1748},{"type":43,"tag":214,"props":4103,"children":4104},{"style":1570},[4105],{"type":56,"value":1652},{"type":43,"tag":214,"props":4107,"children":4108},{"style":1581},[4109],{"type":56,"value":1940},{"type":43,"tag":214,"props":4111,"children":4112},{"style":1570},[4113],{"type":56,"value":1578},{"type":43,"tag":214,"props":4115,"children":4116},{"style":1564},[4117],{"type":56,"value":1619},{"type":43,"tag":214,"props":4119,"children":4120},{"class":1549,"line":1892},[4121,4126,4130,4134,4138],{"type":43,"tag":214,"props":4122,"children":4123},{"style":1581},[4124],{"type":56,"value":4125},"    --resource",{"type":43,"tag":214,"props":4127,"children":4128},{"style":1570},[4129],{"type":56,"value":1633},{"type":43,"tag":214,"props":4131,"children":4132},{"style":1581},[4133],{"type":56,"value":1965},{"type":43,"tag":214,"props":4135,"children":4136},{"style":1570},[4137],{"type":56,"value":1578},{"type":43,"tag":214,"props":4139,"children":4140},{"style":1564},[4141],{"type":56,"value":1619},{"type":43,"tag":214,"props":4143,"children":4144},{"class":1549,"line":1917},[4145,4150,4154,4158,4162],{"type":43,"tag":214,"props":4146,"children":4147},{"style":1581},[4148],{"type":56,"value":4149},"    --headers",{"type":43,"tag":214,"props":4151,"children":4152},{"style":1570},[4153],{"type":56,"value":1633},{"type":43,"tag":214,"props":4155,"children":4156},{"style":1581},[4157],{"type":56,"value":1991},{"type":43,"tag":214,"props":4159,"children":4160},{"style":1570},[4161],{"type":56,"value":1578},{"type":43,"tag":214,"props":4163,"children":4164},{"style":1564},[4165],{"type":56,"value":1619},{"type":43,"tag":214,"props":4167,"children":4168},{"class":1549,"line":1951},[4169,4174,4178],{"type":43,"tag":214,"props":4170,"children":4171},{"style":1581},[4172],{"type":56,"value":4173},"    --body",{"type":43,"tag":214,"props":4175,"children":4176},{"style":1581},[4177],{"type":56,"value":2013},{"type":43,"tag":214,"props":4179,"children":4180},{"style":1564},[4181],{"type":56,"value":1619},{"type":43,"tag":214,"props":4183,"children":4184},{"class":1549,"line":1976},[4185,4190,4194,4198,4202],{"type":43,"tag":214,"props":4186,"children":4187},{"style":1570},[4188],{"type":56,"value":4189},"    |",{"type":43,"tag":214,"props":4191,"children":4192},{"style":1596},[4193],{"type":56,"value":1705},{"type":43,"tag":214,"props":4195,"children":4196},{"style":1570},[4197],{"type":56,"value":1710},{"type":43,"tag":214,"props":4199,"children":4200},{"style":1581},[4201],{"type":56,"value":2038},{"type":43,"tag":214,"props":4203,"children":4204},{"style":1570},[4205],{"type":56,"value":1720},{"type":43,"tag":214,"props":4207,"children":4208},{"class":1549,"line":2002},[4209,4214,4219],{"type":43,"tag":214,"props":4210,"children":4211},{"style":3857},[4212],{"type":56,"value":4213},"done",{"type":43,"tag":214,"props":4215,"children":4216},{"style":1570},[4217],{"type":56,"value":4218}," \u003C",{"type":43,"tag":214,"props":4220,"children":4221},{"style":1564},[4222],{"type":56,"value":4223}," deploy_schema.kql\n",{"type":43,"tag":2557,"props":4225,"children":4227},{"id":4226},"export-current-schema",[4228],{"type":56,"value":4229},"Export Current Schema",{"type":43,"tag":1537,"props":4231,"children":4233},{"className":1539,"code":4232,"language":1541,"meta":1542,"style":1542},"cat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".show database ${DB} schema as csl script\"}\nEOF\naz rest --method POST \\\n  --url \"${CLUSTER_URI}\u002Fv1\u002Frest\u002Fmgmt\" \\\n  --resource \"https:\u002F\u002Fkusto.kusto.windows.net\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @\u002Ftmp\u002Fkql_body.json \\\n  | jq -r '.Tables[0].Rows[][0]' > current_schema.kql\n",[4234],{"type":43,"tag":83,"props":4235,"children":4236},{"__ignoreMap":1542},[4237,4260,4300,4307,4330,4361,4384,4407,4422],{"type":43,"tag":214,"props":4238,"children":4239},{"class":1549,"line":1550},[4240,4244,4248,4252,4256],{"type":43,"tag":214,"props":4241,"children":4242},{"style":1596},[4243],{"type":56,"value":1817},{"type":43,"tag":214,"props":4245,"children":4246},{"style":1570},[4247],{"type":56,"value":1822},{"type":43,"tag":214,"props":4249,"children":4250},{"style":1581},[4251],{"type":56,"value":1827},{"type":43,"tag":214,"props":4253,"children":4254},{"style":1570},[4255],{"type":56,"value":1832},{"type":43,"tag":214,"props":4257,"children":4258},{"style":1570},[4259],{"type":56,"value":1837},{"type":43,"tag":214,"props":4261,"children":4262},{"class":1549,"line":1560},[4263,4267,4271,4275,4279,4283,4287,4291,4295],{"type":43,"tag":214,"props":4264,"children":4265},{"style":1581},[4266],{"type":56,"value":1846},{"type":43,"tag":214,"props":4268,"children":4269},{"style":1570},[4270],{"type":56,"value":1643},{"type":43,"tag":214,"props":4272,"children":4273},{"style":1564},[4274],{"type":56,"value":2275},{"type":43,"tag":214,"props":4276,"children":4277},{"style":1570},[4278],{"type":56,"value":1652},{"type":43,"tag":214,"props":4280,"children":4281},{"style":1581},[4282],{"type":56,"value":1863},{"type":43,"tag":214,"props":4284,"children":4285},{"style":1570},[4286],{"type":56,"value":1643},{"type":43,"tag":214,"props":4288,"children":4289},{"style":1564},[4290],{"type":56,"value":2275},{"type":43,"tag":214,"props":4292,"children":4293},{"style":1570},[4294],{"type":56,"value":1652},{"type":43,"tag":214,"props":4296,"children":4297},{"style":1581},[4298],{"type":56,"value":4299}," schema as csl script\"}\n",{"type":43,"tag":214,"props":4301,"children":4302},{"class":1549,"line":1592},[4303],{"type":43,"tag":214,"props":4304,"children":4305},{"style":1570},[4306],{"type":56,"value":1889},{"type":43,"tag":214,"props":4308,"children":4309},{"class":1549,"line":1622},[4310,4314,4318,4322,4326],{"type":43,"tag":214,"props":4311,"children":4312},{"style":1596},[4313],{"type":56,"value":1599},{"type":43,"tag":214,"props":4315,"children":4316},{"style":1581},[4317],{"type":56,"value":1604},{"type":43,"tag":214,"props":4319,"children":4320},{"style":1581},[4321],{"type":56,"value":1609},{"type":43,"tag":214,"props":4323,"children":4324},{"style":1581},[4325],{"type":56,"value":1910},{"type":43,"tag":214,"props":4327,"children":4328},{"style":1564},[4329],{"type":56,"value":1619},{"type":43,"tag":214,"props":4331,"children":4332},{"class":1549,"line":1668},[4333,4337,4341,4345,4349,4353,4357],{"type":43,"tag":214,"props":4334,"children":4335},{"style":1581},[4336],{"type":56,"value":1628},{"type":43,"tag":214,"props":4338,"children":4339},{"style":1570},[4340],{"type":56,"value":1927},{"type":43,"tag":214,"props":4342,"children":4343},{"style":1564},[4344],{"type":56,"value":1748},{"type":43,"tag":214,"props":4346,"children":4347},{"style":1570},[4348],{"type":56,"value":1652},{"type":43,"tag":214,"props":4350,"children":4351},{"style":1581},[4352],{"type":56,"value":1940},{"type":43,"tag":214,"props":4354,"children":4355},{"style":1570},[4356],{"type":56,"value":1578},{"type":43,"tag":214,"props":4358,"children":4359},{"style":1564},[4360],{"type":56,"value":1619},{"type":43,"tag":214,"props":4362,"children":4363},{"class":1549,"line":1694},[4364,4368,4372,4376,4380],{"type":43,"tag":214,"props":4365,"children":4366},{"style":1581},[4367],{"type":56,"value":1674},{"type":43,"tag":214,"props":4369,"children":4370},{"style":1570},[4371],{"type":56,"value":1633},{"type":43,"tag":214,"props":4373,"children":4374},{"style":1581},[4375],{"type":56,"value":1965},{"type":43,"tag":214,"props":4377,"children":4378},{"style":1570},[4379],{"type":56,"value":1578},{"type":43,"tag":214,"props":4381,"children":4382},{"style":1564},[4383],{"type":56,"value":1619},{"type":43,"tag":214,"props":4385,"children":4386},{"class":1549,"line":1723},[4387,4391,4395,4399,4403],{"type":43,"tag":214,"props":4388,"children":4389},{"style":1581},[4390],{"type":56,"value":1982},{"type":43,"tag":214,"props":4392,"children":4393},{"style":1570},[4394],{"type":56,"value":1633},{"type":43,"tag":214,"props":4396,"children":4397},{"style":1581},[4398],{"type":56,"value":1991},{"type":43,"tag":214,"props":4400,"children":4401},{"style":1570},[4402],{"type":56,"value":1578},{"type":43,"tag":214,"props":4404,"children":4405},{"style":1564},[4406],{"type":56,"value":1619},{"type":43,"tag":214,"props":4408,"children":4409},{"class":1549,"line":1733},[4410,4414,4418],{"type":43,"tag":214,"props":4411,"children":4412},{"style":1581},[4413],{"type":56,"value":2008},{"type":43,"tag":214,"props":4415,"children":4416},{"style":1581},[4417],{"type":56,"value":2013},{"type":43,"tag":214,"props":4419,"children":4420},{"style":1564},[4421],{"type":56,"value":1619},{"type":43,"tag":214,"props":4423,"children":4424},{"class":1549,"line":1742},[4425,4429,4433,4437,4441,4446,4451,4455],{"type":43,"tag":214,"props":4426,"children":4427},{"style":1570},[4428],{"type":56,"value":1700},{"type":43,"tag":214,"props":4430,"children":4431},{"style":1596},[4432],{"type":56,"value":1705},{"type":43,"tag":214,"props":4434,"children":4435},{"style":1581},[4436],{"type":56,"value":3880},{"type":43,"tag":214,"props":4438,"children":4439},{"style":1570},[4440],{"type":56,"value":1710},{"type":43,"tag":214,"props":4442,"children":4443},{"style":1581},[4444],{"type":56,"value":4445},".Tables[0].Rows[][0]",{"type":43,"tag":214,"props":4447,"children":4448},{"style":1570},[4449],{"type":56,"value":4450},"'",{"type":43,"tag":214,"props":4452,"children":4453},{"style":1570},[4454],{"type":56,"value":1822},{"type":43,"tag":214,"props":4456,"children":4457},{"style":1581},[4458],{"type":56,"value":4459}," current_schema.kql\n",{"type":43,"tag":1430,"props":4461,"children":4462},{},[],{"type":43,"tag":138,"props":4464,"children":4466},{"id":4465},"monitoring-authoring-operations",[4467],{"type":56,"value":1327},{"type":43,"tag":1537,"props":4469,"children":4472},{"className":4470,"code":4471,"language":14,"meta":1542,"style":1542},"language-kql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Recent management commands\n.show commands\n| where StartedOn > ago(1h)\n| project StartedOn, CommandType, Text = substring(Text, 0, 100), State, Duration\n| order by StartedOn desc\n\n\u002F\u002F Ingestion failures\n.show ingestion failures\n| where FailedOn > ago(24h)\n| summarize FailureCount = count() by ErrorCode, Table\n| order by FailureCount desc\n\n\u002F\u002F Materialized view health\n.show materialized-views\n| project Name, IsEnabled, IsHealthy, MaterializedTo\n",[4473],{"type":43,"tag":83,"props":4474,"children":4475},{"__ignoreMap":1542},[4476,4484,4492,4500,4508,4516,4523,4531,4539,4547,4555,4563,4570,4578,4586],{"type":43,"tag":214,"props":4477,"children":4478},{"class":1549,"line":1550},[4479],{"type":43,"tag":214,"props":4480,"children":4481},{},[4482],{"type":56,"value":4483},"\u002F\u002F Recent management commands\n",{"type":43,"tag":214,"props":4485,"children":4486},{"class":1549,"line":1560},[4487],{"type":43,"tag":214,"props":4488,"children":4489},{},[4490],{"type":56,"value":4491},".show commands\n",{"type":43,"tag":214,"props":4493,"children":4494},{"class":1549,"line":1592},[4495],{"type":43,"tag":214,"props":4496,"children":4497},{},[4498],{"type":56,"value":4499},"| where StartedOn > ago(1h)\n",{"type":43,"tag":214,"props":4501,"children":4502},{"class":1549,"line":1622},[4503],{"type":43,"tag":214,"props":4504,"children":4505},{},[4506],{"type":56,"value":4507},"| project StartedOn, CommandType, Text = substring(Text, 0, 100), State, Duration\n",{"type":43,"tag":214,"props":4509,"children":4510},{"class":1549,"line":1668},[4511],{"type":43,"tag":214,"props":4512,"children":4513},{},[4514],{"type":56,"value":4515},"| order by StartedOn desc\n",{"type":43,"tag":214,"props":4517,"children":4518},{"class":1549,"line":1694},[4519],{"type":43,"tag":214,"props":4520,"children":4521},{"emptyLinePlaceholder":1727},[4522],{"type":56,"value":1730},{"type":43,"tag":214,"props":4524,"children":4525},{"class":1549,"line":1723},[4526],{"type":43,"tag":214,"props":4527,"children":4528},{},[4529],{"type":56,"value":4530},"\u002F\u002F Ingestion failures\n",{"type":43,"tag":214,"props":4532,"children":4533},{"class":1549,"line":1733},[4534],{"type":43,"tag":214,"props":4535,"children":4536},{},[4537],{"type":56,"value":4538},".show ingestion failures\n",{"type":43,"tag":214,"props":4540,"children":4541},{"class":1549,"line":1742},[4542],{"type":43,"tag":214,"props":4543,"children":4544},{},[4545],{"type":56,"value":4546},"| where FailedOn > ago(24h)\n",{"type":43,"tag":214,"props":4548,"children":4549},{"class":1549,"line":1768},[4550],{"type":43,"tag":214,"props":4551,"children":4552},{},[4553],{"type":56,"value":4554},"| summarize FailureCount = count() by ErrorCode, Table\n",{"type":43,"tag":214,"props":4556,"children":4557},{"class":1549,"line":1794},[4558],{"type":43,"tag":214,"props":4559,"children":4560},{},[4561],{"type":56,"value":4562},"| order by FailureCount desc\n",{"type":43,"tag":214,"props":4564,"children":4565},{"class":1549,"line":1802},[4566],{"type":43,"tag":214,"props":4567,"children":4568},{"emptyLinePlaceholder":1727},[4569],{"type":56,"value":1730},{"type":43,"tag":214,"props":4571,"children":4572},{"class":1549,"line":1811},[4573],{"type":43,"tag":214,"props":4574,"children":4575},{},[4576],{"type":56,"value":4577},"\u002F\u002F Materialized view health\n",{"type":43,"tag":214,"props":4579,"children":4580},{"class":1549,"line":1840},[4581],{"type":43,"tag":214,"props":4582,"children":4583},{},[4584],{"type":56,"value":4585},".show materialized-views\n",{"type":43,"tag":214,"props":4587,"children":4588},{"class":1549,"line":1883},[4589],{"type":43,"tag":214,"props":4590,"children":4591},{},[4592],{"type":56,"value":4593},"| project Name, IsEnabled, IsHealthy, MaterializedTo\n",{"type":43,"tag":1430,"props":4595,"children":4596},{},[],{"type":43,"tag":138,"props":4598,"children":4600},{"id":4599},"must-prefer-avoid-troubleshooting",[4601],{"type":56,"value":1347},{"type":43,"tag":2557,"props":4603,"children":4605},{"id":4604},"must",[4606],{"type":56,"value":4607},"Must",{"type":43,"tag":68,"props":4609,"children":4610},{},[4611,4621,4652,4677,4687],{"type":43,"tag":72,"props":4612,"children":4613},{},[4614,4619],{"type":43,"tag":52,"props":4615,"children":4616},{},[4617],{"type":56,"value":4618},"Clarify before acting on ambiguous prompts",{"type":56,"value":4620}," — 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.",{"type":43,"tag":72,"props":4622,"children":4623},{},[4624,4629,4630,4636,4638,4644,4645,4651],{"type":43,"tag":52,"props":4625,"children":4626},{},[4627],{"type":56,"value":4628},"Use idempotent commands",{"type":56,"value":204},{"type":43,"tag":83,"props":4631,"children":4633},{"className":4632},[],[4634],{"type":56,"value":4635},".create-merge table",{"type":56,"value":4637},", ",{"type":43,"tag":83,"props":4639,"children":4641},{"className":4640},[],[4642],{"type":56,"value":4643},".create-or-alter function",{"type":56,"value":4637},{"type":43,"tag":83,"props":4646,"children":4648},{"className":4647},[],[4649],{"type":56,"value":4650},".create table ifnotexists",{"type":56,"value":2547},{"type":43,"tag":72,"props":4653,"children":4654},{},[4655,4660,4662,4668,4669,4675],{"type":43,"tag":52,"props":4656,"children":4657},{},[4658],{"type":56,"value":4659},"Verify permissions",{"type":56,"value":4661}," before authoring — must have ",{"type":43,"tag":83,"props":4663,"children":4665},{"className":4664},[],[4666],{"type":56,"value":4667},"Admin",{"type":56,"value":569},{"type":43,"tag":83,"props":4670,"children":4672},{"className":4671},[],[4673],{"type":56,"value":4674},"Ingestor",{"type":56,"value":4676}," role.",{"type":43,"tag":72,"props":4678,"children":4679},{},[4680,4685],{"type":43,"tag":52,"props":4681,"children":4682},{},[4683],{"type":56,"value":4684},"Test update policies",{"type":56,"value":4686}," by running the function independently before attaching.",{"type":43,"tag":72,"props":4688,"children":4689},{},[4690,4701],{"type":43,"tag":52,"props":4691,"children":4692},{},[4693,4695],{"type":56,"value":4694},"Include ",{"type":43,"tag":83,"props":4696,"children":4698},{"className":4697},[],[4699],{"type":56,"value":4700},"impersonate",{"type":56,"value":4702}," in storage URIs when ingesting from OneLake or Blob Storage.",{"type":43,"tag":2557,"props":4704,"children":4706},{"id":4705},"prefer",[4707],{"type":56,"value":4708},"Prefer",{"type":43,"tag":68,"props":4710,"children":4711},{},[4712,4727,4737,4758,4768],{"type":43,"tag":72,"props":4713,"children":4714},{},[4715,4725],{"type":43,"tag":52,"props":4716,"children":4717},{},[4718,4723],{"type":43,"tag":83,"props":4719,"children":4721},{"className":4720},[],[4722],{"type":56,"value":544},{"type":56,"value":4724}," with loop",{"type":56,"value":4726}," for deploying multi-command schema files.",{"type":43,"tag":72,"props":4728,"children":4729},{},[4730,4735],{"type":43,"tag":52,"props":4731,"children":4732},{},[4733],{"type":56,"value":4734},"Fabric KQL MCP server",{"type":56,"value":4736}," for agent-integrated ingestion and management workflows.",{"type":43,"tag":72,"props":4738,"children":4739},{},[4740,4748,4750,4756],{"type":43,"tag":52,"props":4741,"children":4742},{},[4743],{"type":43,"tag":83,"props":4744,"children":4746},{"className":4745},[],[4747],{"type":56,"value":4635},{"type":56,"value":4749}," over ",{"type":43,"tag":83,"props":4751,"children":4753},{"className":4752},[],[4754],{"type":56,"value":4755},".create table",{"type":56,"value":4757}," for safe schema evolution.",{"type":43,"tag":72,"props":4759,"children":4760},{},[4761,4766],{"type":43,"tag":52,"props":4762,"children":4763},{},[4764],{"type":56,"value":4765},"Materialized views",{"type":56,"value":4767}," over repeated expensive aggregation queries.",{"type":43,"tag":72,"props":4769,"children":4770},{},[4771,4776,4778,4784],{"type":43,"tag":52,"props":4772,"children":4773},{},[4774],{"type":56,"value":4775},"Script-based CI\u002FCD",{"type":56,"value":4777}," — export schema with ",{"type":43,"tag":83,"props":4779,"children":4781},{"className":4780},[],[4782],{"type":56,"value":4783},".show database DB schema as csl script",{"type":56,"value":4785},", store in git.",{"type":43,"tag":2557,"props":4787,"children":4789},{"id":4788},"avoid",[4790],{"type":56,"value":4791},"Avoid",{"type":43,"tag":68,"props":4793,"children":4794},{},[4795,4817,4839,4849,4859],{"type":43,"tag":72,"props":4796,"children":4797},{},[4798,4807,4809,4815],{"type":43,"tag":52,"props":4799,"children":4800},{},[4801],{"type":43,"tag":83,"props":4802,"children":4804},{"className":4803},[],[4805],{"type":56,"value":4806},".drop table",{"type":56,"value":4808}," without ",{"type":43,"tag":83,"props":4810,"children":4812},{"className":4811},[],[4813],{"type":56,"value":4814},"ifexists",{"type":56,"value":4816}," — fails on missing tables.",{"type":43,"tag":72,"props":4818,"children":4819},{},[4820,4829,4831,4837],{"type":43,"tag":52,"props":4821,"children":4822},{},[4823],{"type":43,"tag":83,"props":4824,"children":4826},{"className":4825},[],[4827],{"type":56,"value":4828},".alter table",{"type":56,"value":4830}," to add columns — use ",{"type":43,"tag":83,"props":4832,"children":4834},{"className":4833},[],[4835],{"type":56,"value":4836},".alter-merge table",{"type":56,"value":4838}," instead (additive only).",{"type":43,"tag":72,"props":4840,"children":4841},{},[4842,4847],{"type":43,"tag":52,"props":4843,"children":4844},{},[4845],{"type":56,"value":4846},"Ingestion without mappings",{"type":56,"value":4848}," for CSV\u002FJSON — column order or field names may not match.",{"type":43,"tag":72,"props":4850,"children":4851},{},[4852,4857],{"type":43,"tag":52,"props":4853,"children":4854},{},[4855],{"type":56,"value":4856},"Hardcoded storage URIs",{"type":56,"value":4858}," — parameterise in scripts.",{"type":43,"tag":72,"props":4860,"children":4861},{},[4862,4867],{"type":43,"tag":52,"props":4863,"children":4864},{},[4865],{"type":56,"value":4866},"Disabling materialized views",{"type":56,"value":4868}," without understanding the re-backfill cost.",{"type":43,"tag":2557,"props":4870,"children":4872},{"id":4871},"troubleshooting",[4873],{"type":56,"value":4874},"Troubleshooting",{"type":43,"tag":145,"props":4876,"children":4877},{},[4878,4894],{"type":43,"tag":149,"props":4879,"children":4880},{},[4881],{"type":43,"tag":153,"props":4882,"children":4883},{},[4884,4889],{"type":43,"tag":157,"props":4885,"children":4886},{},[4887],{"type":56,"value":4888},"Symptom",{"type":43,"tag":157,"props":4890,"children":4891},{},[4892],{"type":56,"value":4893},"Fix",{"type":43,"tag":173,"props":4895,"children":4896},{},[4897,4925,4944,4963,4997,5032],{"type":43,"tag":153,"props":4898,"children":4899},{},[4900,4910],{"type":43,"tag":180,"props":4901,"children":4902},{},[4903,4908],{"type":43,"tag":83,"props":4904,"children":4906},{"className":4905},[],[4907],{"type":56,"value":4755},{"type":56,"value":4909}," fails \"already exists\"",{"type":43,"tag":180,"props":4911,"children":4912},{},[4913,4914,4919,4920],{"type":56,"value":644},{"type":43,"tag":83,"props":4915,"children":4917},{"className":4916},[],[4918],{"type":56,"value":4635},{"type":56,"value":569},{"type":43,"tag":83,"props":4921,"children":4923},{"className":4922},[],[4924],{"type":56,"value":4650},{"type":43,"tag":153,"props":4926,"children":4927},{},[4928,4933],{"type":43,"tag":180,"props":4929,"children":4930},{},[4931],{"type":56,"value":4932},"Ingestion succeeds but table empty",{"type":43,"tag":180,"props":4934,"children":4935},{},[4936,4938],{"type":56,"value":4937},"Check data mappings: ",{"type":43,"tag":83,"props":4939,"children":4941},{"className":4940},[],[4942],{"type":56,"value":4943},".show table T ingestion csv mappings",{"type":43,"tag":153,"props":4945,"children":4946},{},[4947,4952],{"type":43,"tag":180,"props":4948,"children":4949},{},[4950],{"type":56,"value":4951},"Update policy not firing",{"type":43,"tag":180,"props":4953,"children":4954},{},[4955,4957],{"type":56,"value":4956},"Verify function runs standalone; check ",{"type":43,"tag":83,"props":4958,"children":4960},{"className":4959},[],[4961],{"type":56,"value":4962},".show table T policy update",{"type":43,"tag":153,"props":4964,"children":4965},{},[4966,4977],{"type":43,"tag":180,"props":4967,"children":4968},{},[4969,4975],{"type":43,"tag":83,"props":4970,"children":4972},{"className":4971},[],[4973],{"type":56,"value":4974},"Forbidden (403)",{"type":56,"value":4976}," on management commands",{"type":43,"tag":180,"props":4978,"children":4979},{},[4980,4982,4988,4989,4995],{"type":56,"value":4981},"Request ",{"type":43,"tag":83,"props":4983,"children":4985},{"className":4984},[],[4986],{"type":56,"value":4987},"admin",{"type":56,"value":569},{"type":43,"tag":83,"props":4990,"children":4992},{"className":4991},[],[4993],{"type":56,"value":4994},"ingestor",{"type":56,"value":4996}," database role",{"type":43,"tag":153,"props":4998,"children":4999},{},[5000,5005],{"type":43,"tag":180,"props":5001,"children":5002},{},[5003],{"type":56,"value":5004},"Materialized view stuck",{"type":43,"tag":180,"props":5006,"children":5007},{},[5008,5010,5016,5018,5024,5026],{"type":56,"value":5009},"Check ",{"type":43,"tag":83,"props":5011,"children":5013},{"className":5012},[],[5014],{"type":56,"value":5015},".show materialized-view MV statistics",{"type":56,"value":5017},"; may need ",{"type":43,"tag":83,"props":5019,"children":5021},{"className":5020},[],[5022],{"type":56,"value":5023},".disable",{"type":56,"value":5025},"\u002F",{"type":43,"tag":83,"props":5027,"children":5029},{"className":5028},[],[5030],{"type":56,"value":5031},".enable",{"type":43,"tag":153,"props":5033,"children":5034},{},[5035,5040],{"type":43,"tag":180,"props":5036,"children":5037},{},[5038],{"type":56,"value":5039},"OneLake ingest auth error",{"type":43,"tag":180,"props":5041,"children":5042},{},[5043,5045,5051,5053,5059],{"type":56,"value":5044},"Add ",{"type":43,"tag":83,"props":5046,"children":5048},{"className":5047},[],[5049],{"type":56,"value":5050},";impersonate",{"type":56,"value":5052}," to ",{"type":43,"tag":83,"props":5054,"children":5056},{"className":5055},[],[5057],{"type":56,"value":5058},"abfss:\u002F\u002F",{"type":56,"value":5060}," URI",{"type":43,"tag":1430,"props":5062,"children":5063},{},[],{"type":43,"tag":138,"props":5065,"children":5067},{"id":5066},"agentic-workflows",[5068],{"type":56,"value":1374},{"type":43,"tag":2557,"props":5070,"children":5072},{"id":5071},"exploration-before-authoring",[5073],{"type":56,"value":5074},"Exploration Before Authoring",{"type":43,"tag":48,"props":5076,"children":5077},{},[5078],{"type":56,"value":5079},"Always check for explicit intent before doing anything:",{"type":43,"tag":1537,"props":5081,"children":5085},{"className":5082,"code":5084,"language":56,"meta":1542},[5083],"language-text","Step 0 → Is the request specific? Does it name a table, operation, and\u002For schema?\n         → NO  → Ask: \"What would you like to set up? Options: create tables,\n                  configure policies, set up ingestion mappings, create materialized views.\"\n                  STOP — do not proceed until user specifies.\n         → YES → Continue to Step 1.\nStep 1 → .show tables details                        \u002F\u002F what exists?\nStep 2 → .show table \u003CTABLE> schema as json          \u002F\u002F current columns\nStep 3 → .show table \u003CTABLE> policy retention        \u002F\u002F current policies\nStep 4 → Plan changes (create-merge, alter, etc.)\nStep 5 → Execute changes\nStep 6 → Verify: .show table \u003CTABLE> schema as json  \u002F\u002F confirm changes\n",[5086],{"type":43,"tag":83,"props":5087,"children":5088},{"__ignoreMap":1542},[5089],{"type":56,"value":5084},{"type":43,"tag":2557,"props":5091,"children":5093},{"id":5092},"script-generation-workflow",[5094],{"type":56,"value":5095},"Script Generation Workflow",{"type":43,"tag":1537,"props":5097,"children":5100},{"className":5098,"code":5099,"language":56,"meta":1542},[5083],"Step 1 → Understand requirements from user\nStep 2 → Generate KQL management commands\nStep 3 → Save to .kql file\nStep 4 → Deploy via az rest (one command at a time)\nStep 5 → Verify deployed state matches intent\n",[5101],{"type":43,"tag":83,"props":5102,"children":5103},{"__ignoreMap":1542},[5104],{"type":56,"value":5099},{"type":43,"tag":1430,"props":5106,"children":5107},{},[],{"type":43,"tag":138,"props":5109,"children":5111},{"id":5110},"examples",[5112],{"type":56,"value":1396},{"type":43,"tag":2557,"props":5114,"children":5116},{"id":5115},"example-1-create-table-with-policies-and-mapping",[5117],{"type":56,"value":5118},"Example 1: Create Table with Policies and Mapping",{"type":43,"tag":1537,"props":5120,"children":5122},{"className":1539,"code":5121,"language":1541,"meta":1542,"style":1542},"# Create table\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".create-merge table SensorData (Timestamp: datetime, DeviceId: string, Temperature: real, Humidity: real, Location: dynamic)\"}\nEOF\n",[5123],{"type":43,"tag":83,"props":5124,"children":5125},{"__ignoreMap":1542},[5126,5134,5157,5181],{"type":43,"tag":214,"props":5127,"children":5128},{"class":1549,"line":1550},[5129],{"type":43,"tag":214,"props":5130,"children":5131},{"style":1554},[5132],{"type":56,"value":5133},"# Create table\n",{"type":43,"tag":214,"props":5135,"children":5136},{"class":1549,"line":1560},[5137,5141,5145,5149,5153],{"type":43,"tag":214,"props":5138,"children":5139},{"style":1596},[5140],{"type":56,"value":1817},{"type":43,"tag":214,"props":5142,"children":5143},{"style":1570},[5144],{"type":56,"value":1822},{"type":43,"tag":214,"props":5146,"children":5147},{"style":1581},[5148],{"type":56,"value":1827},{"type":43,"tag":214,"props":5150,"children":5151},{"style":1570},[5152],{"type":56,"value":1832},{"type":43,"tag":214,"props":5154,"children":5155},{"style":1570},[5156],{"type":56,"value":1837},{"type":43,"tag":214,"props":5158,"children":5159},{"class":1549,"line":1592},[5160,5164,5168,5172,5176],{"type":43,"tag":214,"props":5161,"children":5162},{"style":1581},[5163],{"type":56,"value":1846},{"type":43,"tag":214,"props":5165,"children":5166},{"style":1570},[5167],{"type":56,"value":1643},{"type":43,"tag":214,"props":5169,"children":5170},{"style":1564},[5171],{"type":56,"value":2275},{"type":43,"tag":214,"props":5173,"children":5174},{"style":1570},[5175],{"type":56,"value":1652},{"type":43,"tag":214,"props":5177,"children":5178},{"style":1581},[5179],{"type":56,"value":5180},"\",\"csl\":\".create-merge table SensorData (Timestamp: datetime, DeviceId: string, Temperature: real, Humidity: real, Location: dynamic)\"}\n",{"type":43,"tag":214,"props":5182,"children":5183},{"class":1549,"line":1622},[5184],{"type":43,"tag":214,"props":5185,"children":5186},{"style":1570},[5187],{"type":56,"value":1889},{"type":43,"tag":44,"props":5189,"children":5190},{},[5191],{"type":43,"tag":48,"props":5192,"children":5193},{},[5194,5195,5200,5201],{"type":56,"value":2631},{"type":43,"tag":83,"props":5196,"children":5198},{"className":5197},[],[5199],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":5202,"children":5203},{"href":1171},[5204],{"type":56,"value":1165},{"type":43,"tag":1537,"props":5206,"children":5208},{"className":1539,"code":5207,"language":1541,"meta":1542,"style":1542},"# Set retention\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"db\":\"MyDB\",\"csl\":\".alter table SensorData policy retention '{\\\"SoftDeletePeriod\\\":\\\"90.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\"}\nEOF\n",[5209],{"type":43,"tag":83,"props":5210,"children":5211},{"__ignoreMap":1542},[5212,5220,5243,5251],{"type":43,"tag":214,"props":5213,"children":5214},{"class":1549,"line":1550},[5215],{"type":43,"tag":214,"props":5216,"children":5217},{"style":1554},[5218],{"type":56,"value":5219},"# Set retention\n",{"type":43,"tag":214,"props":5221,"children":5222},{"class":1549,"line":1560},[5223,5227,5231,5235,5239],{"type":43,"tag":214,"props":5224,"children":5225},{"style":1596},[5226],{"type":56,"value":1817},{"type":43,"tag":214,"props":5228,"children":5229},{"style":1570},[5230],{"type":56,"value":1822},{"type":43,"tag":214,"props":5232,"children":5233},{"style":1581},[5234],{"type":56,"value":1827},{"type":43,"tag":214,"props":5236,"children":5237},{"style":1570},[5238],{"type":56,"value":1832},{"type":43,"tag":214,"props":5240,"children":5241},{"style":1570},[5242],{"type":56,"value":3207},{"type":43,"tag":214,"props":5244,"children":5245},{"class":1549,"line":1592},[5246],{"type":43,"tag":214,"props":5247,"children":5248},{"style":1581},[5249],{"type":56,"value":5250},"{\"db\":\"MyDB\",\"csl\":\".alter table SensorData policy retention '{\\\"SoftDeletePeriod\\\":\\\"90.00:00:00\\\",\\\"Recoverability\\\":\\\"Enabled\\\"}'\"}\n",{"type":43,"tag":214,"props":5252,"children":5253},{"class":1549,"line":1622},[5254],{"type":43,"tag":214,"props":5255,"children":5256},{"style":1570},[5257],{"type":56,"value":1889},{"type":43,"tag":44,"props":5259,"children":5260},{},[5261],{"type":43,"tag":48,"props":5262,"children":5263},{},[5264,5265,5270,5271],{"type":56,"value":2631},{"type":43,"tag":83,"props":5266,"children":5268},{"className":5267},[],[5269],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":5272,"children":5273},{"href":1171},[5274],{"type":56,"value":1165},{"type":43,"tag":1537,"props":5276,"children":5278},{"className":1539,"code":5277,"language":1541,"meta":1542,"style":1542},"# Set caching\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C EOF\n{\"db\":\"${DB}\",\"csl\":\".alter table SensorData policy caching hot = 7d\"}\nEOF\n",[5279],{"type":43,"tag":83,"props":5280,"children":5281},{"__ignoreMap":1542},[5282,5290,5313,5337],{"type":43,"tag":214,"props":5283,"children":5284},{"class":1549,"line":1550},[5285],{"type":43,"tag":214,"props":5286,"children":5287},{"style":1554},[5288],{"type":56,"value":5289},"# Set caching\n",{"type":43,"tag":214,"props":5291,"children":5292},{"class":1549,"line":1560},[5293,5297,5301,5305,5309],{"type":43,"tag":214,"props":5294,"children":5295},{"style":1596},[5296],{"type":56,"value":1817},{"type":43,"tag":214,"props":5298,"children":5299},{"style":1570},[5300],{"type":56,"value":1822},{"type":43,"tag":214,"props":5302,"children":5303},{"style":1581},[5304],{"type":56,"value":1827},{"type":43,"tag":214,"props":5306,"children":5307},{"style":1570},[5308],{"type":56,"value":1832},{"type":43,"tag":214,"props":5310,"children":5311},{"style":1570},[5312],{"type":56,"value":1837},{"type":43,"tag":214,"props":5314,"children":5315},{"class":1549,"line":1592},[5316,5320,5324,5328,5332],{"type":43,"tag":214,"props":5317,"children":5318},{"style":1581},[5319],{"type":56,"value":1846},{"type":43,"tag":214,"props":5321,"children":5322},{"style":1570},[5323],{"type":56,"value":1643},{"type":43,"tag":214,"props":5325,"children":5326},{"style":1564},[5327],{"type":56,"value":2275},{"type":43,"tag":214,"props":5329,"children":5330},{"style":1570},[5331],{"type":56,"value":1652},{"type":43,"tag":214,"props":5333,"children":5334},{"style":1581},[5335],{"type":56,"value":5336},"\",\"csl\":\".alter table SensorData policy caching hot = 7d\"}\n",{"type":43,"tag":214,"props":5338,"children":5339},{"class":1549,"line":1622},[5340],{"type":43,"tag":214,"props":5341,"children":5342},{"style":1570},[5343],{"type":56,"value":1889},{"type":43,"tag":44,"props":5345,"children":5346},{},[5347],{"type":43,"tag":48,"props":5348,"children":5349},{},[5350,5351,5356,5357],{"type":56,"value":2631},{"type":43,"tag":83,"props":5352,"children":5354},{"className":5353},[],[5355],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":5358,"children":5359},{"href":1171},[5360],{"type":56,"value":1165},{"type":43,"tag":1537,"props":5362,"children":5364},{"className":1539,"code":5363,"language":1541,"meta":1542,"style":1542},"# Create JSON mapping\ncat > \u002Ftmp\u002Fkql_body.json \u003C\u003C 'EOF'\n{\"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\\\"}]'\"}\nEOF\n",[5365],{"type":43,"tag":83,"props":5366,"children":5367},{"__ignoreMap":1542},[5368,5376,5399,5407],{"type":43,"tag":214,"props":5369,"children":5370},{"class":1549,"line":1550},[5371],{"type":43,"tag":214,"props":5372,"children":5373},{"style":1554},[5374],{"type":56,"value":5375},"# Create JSON mapping\n",{"type":43,"tag":214,"props":5377,"children":5378},{"class":1549,"line":1560},[5379,5383,5387,5391,5395],{"type":43,"tag":214,"props":5380,"children":5381},{"style":1596},[5382],{"type":56,"value":1817},{"type":43,"tag":214,"props":5384,"children":5385},{"style":1570},[5386],{"type":56,"value":1822},{"type":43,"tag":214,"props":5388,"children":5389},{"style":1581},[5390],{"type":56,"value":1827},{"type":43,"tag":214,"props":5392,"children":5393},{"style":1570},[5394],{"type":56,"value":1832},{"type":43,"tag":214,"props":5396,"children":5397},{"style":1570},[5398],{"type":56,"value":3207},{"type":43,"tag":214,"props":5400,"children":5401},{"class":1549,"line":1592},[5402],{"type":43,"tag":214,"props":5403,"children":5404},{"style":1581},[5405],{"type":56,"value":5406},"{\"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\\\"}]'\"}\n",{"type":43,"tag":214,"props":5408,"children":5409},{"class":1549,"line":1622},[5410],{"type":43,"tag":214,"props":5411,"children":5412},{"style":1570},[5413],{"type":56,"value":1889},{"type":43,"tag":44,"props":5415,"children":5416},{},[5417],{"type":43,"tag":48,"props":5418,"children":5419},{},[5420,5421,5426,5427],{"type":56,"value":2631},{"type":43,"tag":83,"props":5422,"children":5424},{"className":5423},[],[5425],{"type":56,"value":2283},{"type":56,"value":2638},{"type":43,"tag":189,"props":5428,"children":5429},{"href":1171},[5430],{"type":56,"value":1165},{"type":43,"tag":2557,"props":5432,"children":5434},{"id":5433},"example-2-etl-with-update-policy",[5435],{"type":56,"value":5436},"Example 2: ETL with Update Policy",{"type":43,"tag":1537,"props":5438,"children":5440},{"className":4470,"code":5439,"language":14,"meta":1542,"style":1542},"\u002F\u002F 1. Target table\n.create-merge table ParsedLogs (Timestamp: datetime, Level: string, Message: string, Source: string)\n\n\u002F\u002F 2. Transform function\n.create-or-alter function ParseRawLogs() {\n    RawLogs\n    | extend J = parse_json(RawMessage)\n    | project\n        Timestamp = todatetime(J.timestamp),\n        Level = tostring(J.level),\n        Message = tostring(J.message),\n        Source = tostring(J.source)\n}\n\n\u002F\u002F 3. Attach update policy\n.alter table ParsedLogs policy update\n@'[{\"IsEnabled\":true,\"Source\":\"RawLogs\",\"Query\":\"ParseRawLogs()\",\"IsTransactional\":true}]'\n",[5441],{"type":43,"tag":83,"props":5442,"children":5443},{"__ignoreMap":1542},[5444,5452,5460,5467,5475,5483,5491,5499,5507,5515,5523,5531,5539,5547,5554,5562,5570],{"type":43,"tag":214,"props":5445,"children":5446},{"class":1549,"line":1550},[5447],{"type":43,"tag":214,"props":5448,"children":5449},{},[5450],{"type":56,"value":5451},"\u002F\u002F 1. Target table\n",{"type":43,"tag":214,"props":5453,"children":5454},{"class":1549,"line":1560},[5455],{"type":43,"tag":214,"props":5456,"children":5457},{},[5458],{"type":56,"value":5459},".create-merge table ParsedLogs (Timestamp: datetime, Level: string, Message: string, Source: string)\n",{"type":43,"tag":214,"props":5461,"children":5462},{"class":1549,"line":1592},[5463],{"type":43,"tag":214,"props":5464,"children":5465},{"emptyLinePlaceholder":1727},[5466],{"type":56,"value":1730},{"type":43,"tag":214,"props":5468,"children":5469},{"class":1549,"line":1622},[5470],{"type":43,"tag":214,"props":5471,"children":5472},{},[5473],{"type":56,"value":5474},"\u002F\u002F 2. Transform function\n",{"type":43,"tag":214,"props":5476,"children":5477},{"class":1549,"line":1668},[5478],{"type":43,"tag":214,"props":5479,"children":5480},{},[5481],{"type":56,"value":5482},".create-or-alter function ParseRawLogs() {\n",{"type":43,"tag":214,"props":5484,"children":5485},{"class":1549,"line":1694},[5486],{"type":43,"tag":214,"props":5487,"children":5488},{},[5489],{"type":56,"value":5490},"    RawLogs\n",{"type":43,"tag":214,"props":5492,"children":5493},{"class":1549,"line":1723},[5494],{"type":43,"tag":214,"props":5495,"children":5496},{},[5497],{"type":56,"value":5498},"    | extend J = parse_json(RawMessage)\n",{"type":43,"tag":214,"props":5500,"children":5501},{"class":1549,"line":1733},[5502],{"type":43,"tag":214,"props":5503,"children":5504},{},[5505],{"type":56,"value":5506},"    | project\n",{"type":43,"tag":214,"props":5508,"children":5509},{"class":1549,"line":1742},[5510],{"type":43,"tag":214,"props":5511,"children":5512},{},[5513],{"type":56,"value":5514},"        Timestamp = todatetime(J.timestamp),\n",{"type":43,"tag":214,"props":5516,"children":5517},{"class":1549,"line":1768},[5518],{"type":43,"tag":214,"props":5519,"children":5520},{},[5521],{"type":56,"value":5522},"        Level = tostring(J.level),\n",{"type":43,"tag":214,"props":5524,"children":5525},{"class":1549,"line":1794},[5526],{"type":43,"tag":214,"props":5527,"children":5528},{},[5529],{"type":56,"value":5530},"        Message = tostring(J.message),\n",{"type":43,"tag":214,"props":5532,"children":5533},{"class":1549,"line":1802},[5534],{"type":43,"tag":214,"props":5535,"children":5536},{},[5537],{"type":56,"value":5538},"        Source = tostring(J.source)\n",{"type":43,"tag":214,"props":5540,"children":5541},{"class":1549,"line":1811},[5542],{"type":43,"tag":214,"props":5543,"children":5544},{},[5545],{"type":56,"value":5546},"}\n",{"type":43,"tag":214,"props":5548,"children":5549},{"class":1549,"line":1840},[5550],{"type":43,"tag":214,"props":5551,"children":5552},{"emptyLinePlaceholder":1727},[5553],{"type":56,"value":1730},{"type":43,"tag":214,"props":5555,"children":5556},{"class":1549,"line":1883},[5557],{"type":43,"tag":214,"props":5558,"children":5559},{},[5560],{"type":56,"value":5561},"\u002F\u002F 3. Attach update policy\n",{"type":43,"tag":214,"props":5563,"children":5564},{"class":1549,"line":1892},[5565],{"type":43,"tag":214,"props":5566,"children":5567},{},[5568],{"type":56,"value":5569},".alter table ParsedLogs policy update\n",{"type":43,"tag":214,"props":5571,"children":5572},{"class":1549,"line":1917},[5573],{"type":43,"tag":214,"props":5574,"children":5575},{},[5576],{"type":56,"value":5577},"@'[{\"IsEnabled\":true,\"Source\":\"RawLogs\",\"Query\":\"ParseRawLogs()\",\"IsTransactional\":true}]'\n",{"type":43,"tag":1430,"props":5579,"children":5580},{},[],{"type":43,"tag":138,"props":5582,"children":5584},{"id":5583},"agent-integration-notes",[5585],{"type":56,"value":1416},{"type":43,"tag":68,"props":5587,"children":5588},{},[5589,5601,5618,5636],{"type":43,"tag":72,"props":5590,"children":5591},{},[5592,5594,5599],{"type":56,"value":5593},"This skill covers ",{"type":43,"tag":52,"props":5595,"children":5596},{},[5597],{"type":56,"value":5598},"authoring operations",{"type":56,"value":5600}," — creating\u002Faltering database objects and ingesting data.",{"type":43,"tag":72,"props":5602,"children":5603},{},[5604,5606,5611,5613,5617],{"type":56,"value":5605},"For ",{"type":43,"tag":52,"props":5607,"children":5608},{},[5609],{"type":56,"value":5610},"read-only queries",{"type":56,"value":5612}," and data exploration, delegate to ",{"type":43,"tag":52,"props":5614,"children":5615},{},[5616],{"type":56,"value":1533},{"type":56,"value":2547},{"type":43,"tag":72,"props":5619,"children":5620},{},[5621,5622,5627,5629,5634],{"type":56,"value":5605},{"type":43,"tag":52,"props":5623,"children":5624},{},[5625],{"type":56,"value":5626},"cross-workload orchestration",{"type":56,"value":5628},", delegate to the ",{"type":43,"tag":52,"props":5630,"children":5631},{},[5632],{"type":56,"value":5633},"FabricDataEngineer",{"type":56,"value":5635}," agent.",{"type":43,"tag":72,"props":5637,"children":5638},{},[5639,5641,5646,5647,5652],{"type":56,"value":5640},"All management commands require elevated database roles (",{"type":43,"tag":83,"props":5642,"children":5644},{"className":5643},[],[5645],{"type":56,"value":4667},{"type":56,"value":569},{"type":43,"tag":83,"props":5648,"children":5650},{"className":5649},[],[5651],{"type":56,"value":4674},{"type":56,"value":5653},").",{"type":43,"tag":5655,"props":5656,"children":5657},"style",{},[5658],{"type":56,"value":5659},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":5661,"total":5854},[5662,5684,5705,5726,5741,5758,5769,5782,5797,5812,5829,5842],{"slug":5663,"name":5663,"fn":5664,"description":5665,"org":5666,"tags":5667,"stars":5681,"repoUrl":5682,"updatedAt":5683},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5668,5671,5674,5675,5678],{"name":5669,"slug":5670,"type":15},"Engineering","engineering",{"name":5672,"slug":5673,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":5676,"slug":5677,"type":15},"Project Management","project-management",{"name":5679,"slug":5680,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":5685,"name":5685,"fn":5686,"description":5687,"org":5688,"tags":5689,"stars":5702,"repoUrl":5703,"updatedAt":5704},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5690,5693,5696,5699],{"name":5691,"slug":5692,"type":15},".NET","net",{"name":5694,"slug":5695,"type":15},"Agents","agents",{"name":5697,"slug":5698,"type":15},"Azure","azure",{"name":5700,"slug":5701,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":5706,"name":5706,"fn":5707,"description":5708,"org":5709,"tags":5710,"stars":5702,"repoUrl":5703,"updatedAt":5725},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5711,5714,5715,5718,5721,5722],{"name":5712,"slug":5713,"type":15},"Analytics","analytics",{"name":5697,"slug":5698,"type":15},{"name":5716,"slug":5717,"type":15},"Data Analysis","data-analysis",{"name":5719,"slug":5720,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":5723,"slug":5724,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":5727,"name":5727,"fn":5728,"description":5729,"org":5730,"tags":5731,"stars":5702,"repoUrl":5703,"updatedAt":5740},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5732,5735,5736,5737],{"name":5733,"slug":5734,"type":15},"AI Infrastructure","ai-infrastructure",{"name":5697,"slug":5698,"type":15},{"name":5719,"slug":5720,"type":15},{"name":5738,"slug":5739,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":5742,"name":5742,"fn":5743,"description":5744,"org":5745,"tags":5746,"stars":5702,"repoUrl":5703,"updatedAt":5757},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5747,5748,5751,5752,5753,5756],{"name":5697,"slug":5698,"type":15},{"name":5749,"slug":5750,"type":15},"Compliance","compliance",{"name":5700,"slug":5701,"type":15},{"name":9,"slug":8,"type":15},{"name":5754,"slug":5755,"type":15},"Python","python",{"name":5738,"slug":5739,"type":15},"2026-07-18T05:14:23.017504",{"slug":5759,"name":5759,"fn":5760,"description":5761,"org":5762,"tags":5763,"stars":5702,"repoUrl":5703,"updatedAt":5768},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5764,5765,5766,5767],{"name":5712,"slug":5713,"type":15},{"name":5697,"slug":5698,"type":15},{"name":5700,"slug":5701,"type":15},{"name":5754,"slug":5755,"type":15},"2026-07-31T05:54:29.068751",{"slug":5770,"name":5770,"fn":5771,"description":5772,"org":5773,"tags":5774,"stars":5702,"repoUrl":5703,"updatedAt":5781},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5775,5778,5779,5780],{"name":5776,"slug":5777,"type":15},"API Development","api-development",{"name":5697,"slug":5698,"type":15},{"name":9,"slug":8,"type":15},{"name":5754,"slug":5755,"type":15},"2026-07-18T05:14:16.988376",{"slug":5783,"name":5783,"fn":5784,"description":5785,"org":5786,"tags":5787,"stars":5702,"repoUrl":5703,"updatedAt":5796},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5788,5789,5792,5795],{"name":5697,"slug":5698,"type":15},{"name":5790,"slug":5791,"type":15},"Computer Vision","computer-vision",{"name":5793,"slug":5794,"type":15},"Images","images",{"name":5754,"slug":5755,"type":15},"2026-07-18T05:14:18.007737",{"slug":5798,"name":5798,"fn":5799,"description":5800,"org":5801,"tags":5802,"stars":5702,"repoUrl":5703,"updatedAt":5811},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5803,5804,5807,5810],{"name":5697,"slug":5698,"type":15},{"name":5805,"slug":5806,"type":15},"Configuration","configuration",{"name":5808,"slug":5809,"type":15},"Feature Flags","feature-flags",{"name":5719,"slug":5720,"type":15},"2026-07-03T16:32:01.278468",{"slug":5813,"name":5813,"fn":5814,"description":5815,"org":5816,"tags":5817,"stars":5702,"repoUrl":5703,"updatedAt":5828},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5818,5821,5822,5825],{"name":5819,"slug":5820,"type":15},"Cosmos DB","cosmos-db",{"name":21,"slug":22,"type":15},{"name":5823,"slug":5824,"type":15},"NoSQL","nosql",{"name":5826,"slug":5827,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":5830,"name":5830,"fn":5814,"description":5831,"org":5832,"tags":5833,"stars":5702,"repoUrl":5703,"updatedAt":5841},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5834,5835,5836,5837,5838],{"name":5819,"slug":5820,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":5823,"slug":5824,"type":15},{"name":5839,"slug":5840,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":5843,"name":5843,"fn":5844,"description":5845,"org":5846,"tags":5847,"stars":5702,"repoUrl":5703,"updatedAt":5853},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5848,5849,5850,5851,5852],{"name":5697,"slug":5698,"type":15},{"name":5819,"slug":5820,"type":15},{"name":21,"slug":22,"type":15},{"name":5719,"slug":5720,"type":15},{"name":5823,"slug":5824,"type":15},"2026-05-13T06:14:17.582229",267,{"items":5856,"total":1976},[5857,5866,5887,5905,5921,5929,5942],{"slug":64,"name":64,"fn":5858,"description":5859,"org":5860,"tags":5861,"stars":26,"repoUrl":27,"updatedAt":5865},"check for Fabric skill marketplace updates","Check an installed skills-for-fabric plugin bundle or git clone for updates, show the matching changelog, and provide host-appropriate update guidance. Use when the user wants to: (1) check for skill updates, (2) see what changed, (3) verify the installed version. Triggers: \"check for updates\", \"am I up to date\", \"what version\", \"update skills\", \"show changelog\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5862,5863,5864],{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},"2026-07-24T05:41:25.892114",{"slug":5867,"name":5867,"fn":5868,"description":5869,"org":5870,"tags":5871,"stars":26,"repoUrl":27,"updatedAt":5886},"databricks-migration","migrate Databricks notebooks to Microsoft Fabric","Port Databricks notebooks and jobs to Microsoft Fabric. Provides an exhaustive dbutils to notebookutils substitution table: fs operations (runtime mounts or OneLake Shortcuts), secret scope to Key Vault URL conversion, notebook run and exit, widget replacement with parameter-tagged cells, and library install replacement with Fabric Environments. Covers Unity Catalog three-level namespace reduction to Lakehouse two-level schemas, DBFS path conversion to OneLake, Databricks Jobs to Spark Job Definitions, MLflow tracking URI removal, and Photon to Native Execution Engine substitution. Use when the user wants to: (1) replace dbutils with notebookutils, (2) collapse Unity Catalog namespaces to Lakehouse schemas, (3) convert Databricks Jobs or Delta Live Tables. Triggers: \"migrate from databricks\", \"databricks to fabric\", \"dbutils to notebookutils\", \"dbutils fabric\", \"unity catalog migration\", \"dbfs to onelake\", \"databricks notebook migration\", \"delta live tables fabric\", \"photon native execution\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5872,5875,5878,5879,5880,5883],{"name":5873,"slug":5874,"type":15},"Data Engineering","data-engineering",{"name":5876,"slug":5877,"type":15},"Databricks","databricks",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":5881,"slug":5882,"type":15},"Migration","migration",{"name":5884,"slug":5885,"type":15},"Notebooks","notebooks","2026-07-24T05:41:22.914341",{"slug":5888,"name":5888,"fn":5889,"description":5890,"org":5891,"tags":5892,"stars":26,"repoUrl":27,"updatedAt":5904},"dataflows-authoring-cli","manage Microsoft Fabric Dataflows via CLI","Create, update, delete, and refresh Fabric Dataflows Gen2 with write-side CLI via Fabric APIs. Build mashup.pq and queryMetadata.json, preview candidate M with executeQuery\u002FcustomMashupDocument, bind connections, and configure output destinations. For saved query execution or refresh-status reads, use `dataflows-consumption-cli`. If a request explicitly insists on the Dataflows consumption or read-only path for a mutation, do not route here; let consumption refuse before any separately confirmed authoring handoff. Triggers: \"create dataflow\", \"update dataflow\", \"delete dataflow\", \"trigger dataflow refresh\", \"preview Power Query M\", \"preview before save\", \"customMashupDocument\", \"create Fabric data source connection\", \"create SQL Server source REST\", \"POST \u002Fv1\u002Fconnections\", \"supportedConnectionTypes\", \"passwordReference\", \"bind connection\", \"dataflow output destination\", \"dataflow write to lakehouse\", \"dataflow write to warehouse\", \"dataflow write to ADX\", \"DataDestinations annotation\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5893,5896,5897,5900,5901],{"name":5894,"slug":5895,"type":15},"CLI","cli",{"name":5873,"slug":5874,"type":15},{"name":5898,"slug":5899,"type":15},"Data Pipeline","data-pipeline",{"name":24,"slug":25,"type":15},{"name":5902,"slug":5903,"type":15},"REST API","rest-api","2026-07-31T05:54:59.059517",{"slug":5906,"name":5906,"fn":5907,"description":5908,"org":5909,"tags":5910,"stars":26,"repoUrl":27,"updatedAt":5920},"e2e-medallion-architecture","implement Medallion Architecture in Microsoft Fabric","Plan and implement end-to-end Microsoft Fabric data platforms and Medallion Architecture (Bronze\u002FSilver\u002FGold) lakehouse patterns using PySpark, Delta Lake, Lakehouse\u002FWarehouse items, Fabric Pipelines, and semantic-model handoff. Use when the user wants to: (1) design a Bronze\u002FSilver\u002FGold data lakehouse, (2) plan an ingestion-to-semantic-model Fabric data platform, (3) set up multi-layer workspaces with lakehouses for each tier, (4) build ingestion-to-analytics pipelines with data quality enforcement, (5) orchestrate Bronze-to-Silver-to-Gold flows via notebooks. For natural-language business questions over existing Power BI report data, use `fabriciq`. Triggers: \"medallion architecture\", \"bronze silver gold\", \"lakehouse layers\", \"e2e data pipeline\", \"end-to-end lakehouse\", \"data lakehouse pattern\", \"multi-layer lakehouse\", \"build medallion\", \"setup medallion\", \"end-to-end Fabric data platform\", \"bronze silver gold platform\", \"ingestion semantic model platform\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5911,5914,5915,5916,5917],{"name":5912,"slug":5913,"type":15},"Architecture","architecture",{"name":5873,"slug":5874,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":5918,"slug":5919,"type":15},"PySpark","pyspark","2026-07-31T05:54:57.038396",{"slug":4,"name":4,"fn":5,"description":6,"org":5922,"tags":5923,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5924,5925,5926,5927,5928],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"slug":1533,"name":1533,"fn":5930,"description":5931,"org":5932,"tags":5933,"stars":26,"repoUrl":27,"updatedAt":5941},"query Fabric Eventhouse with KQL","Run KQL queries against Fabric Eventhouse for real-time intelligence and time-series analytics using `az rest` against the Kusto REST API. Covers KQL operators (where, summarize, join, render), Eventhouse schema discovery (.show tables), time-series patterns with bin(), and ingestion monitoring. Use when the user wants to:\n  1. Run read-only KQL queries against an Eventhouse or KQL Database\n  2. Discover Eventhouse table schema and metadata\n  3. Analyse real-time or time-series data with KQL operators\n  4. Monitor ingestion health and active KQL queries\n  5. Export KQL results to JSON\nTriggers: \"kql query\", \"kusto query\", \"eventhouse query\", \"kql database\", \"real-time intelligence\", \"time-series kql\", \"query eventhouse\", \"explore eventhouse\", \"show tables kql\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5934,5935,5936,5937,5938],{"name":5712,"slug":5713,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":5939,"slug":5940,"type":15},"Real-Time Intelligence","real-time-intelligence","2026-04-06T18:36:45.018807",{"slug":5943,"name":5943,"fn":5944,"description":5945,"org":5946,"tags":5947,"stars":26,"repoUrl":27,"updatedAt":5952},"eventstream-consumption-cli","monitor Fabric Eventstream ingestion pipelines","List, inspect, and monitor Fabric Eventstream real-time ingestion pipelines via the Items REST API. Discover Eventstreams across workspaces, decode base64 graph topologies tracing event flow from source through operators to destination nodes. Validate connection IDs, wiring, retention policies (1-90 days), and throughput levels. Retrieve Custom Endpoint Kafka credentials via Topology API. **Invoke this skill** to: (1) list Eventstreams, (2) inspect Eventstream topology showing sources and destinations, (3) validate Eventstream configurations, (4) check Eventstream retention policy and throughput level, (5) get connection strings. Triggers: \"list eventstreams\", \"inspect eventstream\", \"describe eventstream topology\", \"eventstream operator nodes\", \"eventstream sources and destinations\", \"eventstream health\", \"eventstream status\", \"eventstream configuration\", \"eventstream retention\", \"eventstream throughput level\", \"eventstream connection string\", \"custom endpoint credentials\", \"check eventstream\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5948,5949,5950,5951],{"name":5894,"slug":5895,"type":15},{"name":5873,"slug":5874,"type":15},{"name":24,"slug":25,"type":15},{"name":5723,"slug":5724,"type":15},"2026-07-31T05:55:03.045486"]