Microsoft Fabric Activator のアラートルールやデータソース、条件、Teams・メール通知を作成・確認し、既存の定義内容も読み解きます。
- しきい値を超えたら通知するルールを作りたいとき
- 既存アラートの条件やデータソースを調べたいとき
- Teamsやメールへの通知先を設定したいとき
Microsoft Fabric OneLakeのカタログを監査・管理し、権限に応じてドメインやワークスペースを整えたり、項目名・説明・タグやテーブル情報を見直したりします。
Governs and curates the Microsoft Fabric OneLake catalog through Fabric Admin, Core and Power BI REST APIs. Use for tenant or data-owner governance audits and guarded remediation of domains, workspace assignment, capacity, labels, tag definitions, workspace tags, certification, refresh and item identity, and for owners curating an item's description, name, tags and table and column descriptions. Item discovery belongs to search-consumption-cli.
実行スコア 未検証
インストール方法を見るMicrosoft Fabric OneLakeのカタログを、利用者の権限に応じて監査・管理します。テナント管理者向けには、ドメイン、ワークスペース、容量、ラベル、タグ定義などのガバナンス状況を確認し、許可された範囲で是正を支援します。データ所有者向けには、管理するワークスペースの状態確認や、ドメイン・容量への割り当て、ワークスペースのタグ、更新、項目の所有者情報などを扱います。また、特定の項目の説明や表示名、タグを見直し、OneLake Tablesフォルダーを持つ項目ではテーブルや列の説明も整えます。項目を探す作業は別のスキルの範囲です。
OneLakeカタログの管理状況を把握したい管理者や、自分が担当するデータのカタログ情報を改善したい所有者に向いています。監査だけを行うモードは読み取り専用です。変更を行う場合は、対象と変更内容を確認し、必要な権限と明示的な承認を得て進めます。
Fabric REST APIを利用します。API呼び出しには認証済みのアクセスが必要で、操作できる範囲はFabric上の権限によって異なります。変更は提案内容ごとの明示的な承認後に行います。項目の検索・発見は対象外です。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Telemetry — MANDATORY. Every
api.fabric.microsoft.comcall must carryx-ms-fabric-skill: onelake-catalog-cli(az rest:--headers "x-ms-fabric-skill=onelake-catalog-cli"), including every LRO poll,fabric_lroand retry. Snippets omit it — add it anyway.
CRITICAL NOTES
- To find the workspace ID from its name, one call:
az rest --method get --resource "https://api.fabric.microsoft.com" --url "https://api.fabric.microsoft.com/v1/workspaces" --query "value[?displayName=='<name>'] | [0].id" -o tsv(followcontinuationTokenonly if it isn't on the first page; details in COMMON-CLI.md § Finding Workspaces and Items in Fabric).- To find an item's ID, one call: the same on
.../v1/workspaces/{ws}/items?type=<Type>with--query "value[?displayName=='<name>'] | [0].id".- Write-gated skill — never call a write API before its gate below has passed. For curation that means the owner reviewed every proposed change and explicitly confirmed — not even a "test" write to check whether a change is allowed or what is already applied.
- The item list and Get Item both return an item's
tags. An item with no tags has notagsfield — that absence means untagged.
One skill for the OneLake catalog. Govern (catalog health, protection and trust: audits and guarded remediation, by permission tier) and curate (an owner improving specific items' discoverability metadata) are modes, each detailed in a reference loaded on demand. This file picks the mode, holds every write gate, and indexes the references.
| Mode | Use when | Load | Writes |
|---|---|---|---|
| curate | An owner wants specific items easier to find: a description, a clearer display name, tags, or table and column descriptions (items with a OneLake Tables folder) — one item, an explicit list, or one named workspace's weakly-described items | references/curate.md | ✅ after the owner approves each suggestion |
| dataowner-audit | A non-admin workspace or domain owner wants governance posture for workspaces they administer (widen to accessible on request; Core API) | references/dataowner-audit.md | ❌ |
| dataowner-remediate | A data owner who is also a domain / workspace / capacity admin fixes a governance finding — single-workspace domain or capacity assignment, workspace tags, refresh, item identity (Core & Power BI APIs, no tenant admin), including dry runs of these | references/dataowner-remediate.md | ✅ self-service |
| admin-audit | A Fabric tenant admin wants tenant-wide governance posture (/v1/admin/*) | references/admin-audit.md; any tenant count starts from admin-audit-scope.md | ❌ |
| admin-remediate | A Fabric tenant admin makes tenant-wide writes — domains, bulk assignment, domain roles, bulk labels, tenant tag definitions, tenant settings | references/admin-remediate.md | ✅ |
Govern is a 2×2 grid — tier (which API surface the caller can reach) × action (audit vs
remediate) — covering the health, protect and trust pillars. Choose the tier by API surface,
not job title: the admin-* modes need the Fabric tenant administrator role (Fabric admin /
Power Platform admin / M365 global admin); domain, capacity and workspace admins who are not
tenant admins live entirely in the dataowner-* modes.
dataowner-remediate; bulk assignment
is admin-remediate.search-consumption-cli. Looking up
a workspace or domain by name, or an item by name inside a known workspace, is not discovery:
use the lookups in CRITICAL NOTES and don't load search-consumption-cli for it.⚠️ Known Fabric gap. A domain or workspace admin who is not a tenant admin has no API for their scoped governance posture:
/v1/admin/*rejects them and the Core API can't list a domain's workspaces.dataowner-auditcovers only workspaces the caller can access — say so up front rather than routing into anadmin-*mode that will 401/403.
Reading a reference, drafting suggestions or building a dry run is NOT completing a write. Each writing mode ends with the state-changing call(s) below, issued only after the gate for that write passes. If you did not issue it, nothing changed — say so rather than reporting success.
| Mode | Terminal write |
|---|---|
curate | PATCH /v1/workspaces/{ws}/items/{id} (description; display name in a separate call), POST .../items/{id}/applyTags or unapplyTags, and for a table POST https://onelake.table.fabric.microsoft.com/common/v1/{ws}/{item}/schemas/{schema}/tables/{table}/additionalMetadata with the complete set from a fresh read — only for suggestions the owner accepted |
dataowner-remediate | POST /v1/workspaces/{id}/assignToDomain / unassignFromDomain (synchronous 200), assignToCapacity (202 — poll to a terminal state), POST /v1/workspaces/{id}/applyTags / unapplyTags (workspace tags), item identity, semantic model refresh |
admin-remediate | /v1/admin/* writes — domains, bulk workspace assignment, domain roles, labels, tenant tag definitions, tenant settings |
dataowner-audit, admin-audit | none — read-only |
Before reporting a write done, confirm an explicit success (200/201, or a terminal LRO
success for a 202) and read the result back.
| Write | Mode | Gate |
|---|---|---|
| Any curation write | curate | The owner saw a numbered current → proposed preview of every suggestion and explicitly approved; "apply all" covers only what was shown. Approving an audit or picking a remediation never approves text the owner hasn't seen. |
| Table and column descriptions | curate | A write replaces the table's whole additional metadata: re-read, change only the approved descriptions, send the complete set in the same command, read again. The API has no concurrency check — never claim concurrent edits were preserved. A shortcut table is written on its source — name it and get explicit confirmation. |
| Delete a domain | admin | Check subdomains (parentDomainId) and assigned-workspace counts for the domain and every subdomain; if workspaces would be orphaned, STOP and get explicit confirmation naming them. The API has no cascade-block. See domain-crud.md. |
| Delete a tag definition | admin | Report how many items carry it first — deletion detaches it everywhere with no undo. |
| Bulk-assign workspaces to a domain | admin | Check each target's current domainId and warn before silently overriding an assignment. Dry-run the target list first. |
| Remove a principal from a domain role | admin | Confirm it will not leave the domain ownerless; name the principal being removed. |
| Bulk sensitivity-label change | admin | Dry-run: show the affected items and before/after label, get confirmation. No service principal / managed identity — the call will fail. |
| Write a tenant setting | admin | Read and show the current value, then the proposed value — tenant-wide blast radius. |
| Assign / unassign one workspace to a domain | dataowner | A move is a reassignment — confirm the current domainId and name the domain it leaves. Needs domain contributor and workspace Admin; say which is missing on failure. |
| Reassign item ownership (item identity, preview) | dataowner | Assigns to the caller only; needs Write on the item and its children. Confirm the intended identity. |
| Assign a workspace to a capacity | dataowner | Needs workspace Admin plus capacity Contributor/Admin. 202 is not success — poll to a terminal state. |
| Apply / remove a workspace tag (preview) | dataowner | Needs workspace Admin. Name the workspace and the tags, and confirm. Removing an applied tag is not deleting its definition. |
Don't promise a write that has no API. Endorsement, DLP policies, an owner changing a sensitivity label, and tenant-admin item deletion have no write route — say so and name who can act (no-write-api-escalation.md). A SQL Database's display name is fixed at creation: never send a rename for it, even when the owner asks for one — say it can't be renamed and offer the description and tags instead.
az rest (always pass --resource) ·
OneLake via curl (Storage-audience token) ·
OneLake shortcuts.202) — never poll it in separate calls. It waits as long as
Fabric's Retry-After asks (often 20–30 s), so give the command up to 3 minutes: if your shell
tool has a wait or timeout setting, raise it rather than letting the command move to the
background. Only for types with a definition: Warehouse, SQL Database, SQL analytics endpoint,
ML model/experiment and Datamart have none — read their schema instead. PowerShell 7 (bash:
fabric_lro in COMMON-CLI.md):
$h = @{ Authorization = "Bearer $(az account get-access-token --resource https://api.fabric.microsoft.com --query accessToken -o tsv)"; 'x-ms-fabric-skill' = 'onelake-catalog-cli' }
$st = @{ n = 0; end = (Get-Date).AddMinutes(3) }
# Waits the full Retry-After (202 and 429); backs off 2-30 s only when the header is missing or invalid.
function Wait-RetryAfter($r) { $ra = 0
if (-not [int]::TryParse("$(@($r.Headers['Retry-After'])[0])", [ref]$ra) -or $ra -lt 1) { $ra = [Math]::Min(30, [Math]::Pow(2, ++$st.n)) }
if ((Get-Date).AddSeconds($ra) -gt $st.end) { throw "Definition read did not finish within 3 minutes." }
Start-Sleep -Seconds $ra }
while (($r = Invoke-WebRequest -Method Post -Uri "https://api.fabric.microsoft.com/v1/workspaces/$WS_ID/items/$ITEM_ID/getDefinition" -Headers $h -SkipHttpErrorCheck).StatusCode -eq 429) { Wait-RetryAfter $r }
if ($r.StatusCode -ge 400) { throw "getDefinition returned $($r.StatusCode): $($r.Content)" }
$def = if ($r.StatusCode -eq 202) {
$op = [string]$r.Headers['Location']; $res = $r; $s = ''
while ($s -notin 'Succeeded', 'Failed') {
Wait-RetryAfter $res; $res = Invoke-WebRequest $op -Headers $h -SkipHttpErrorCheck
if ($res.StatusCode -eq 200) { $s = ($res.Content | ConvertFrom-Json).status } elseif ($res.StatusCode -ne 429) { throw "Polling returned $($res.StatusCode): $($res.Content)" } }
if ($s -ne 'Succeeded') { throw "Definition read failed: $($res.Content)" }
while (($res = Invoke-WebRequest "$op/result" -Headers $h -SkipHttpErrorCheck).StatusCode -eq 429) { Wait-RetryAfter $res }
if ($res.StatusCode -ge 400) { throw "Definition result returned $($res.StatusCode): $($res.Content)" }
$res.Content | ConvertFrom-Json
} else { $r.Content | ConvertFrom-Json }
$dir = New-Item -ItemType Directory -Force -Path (Join-Path ([IO.Path]::GetTempPath()) "def-$ITEM_ID")
foreach ($p in $def.definition.parts) {
$t = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($p.payload)); $f = Join-Path $dir ($p.path -replace '[\\/:]', '_'); Set-Content -LiteralPath $f -Value $t
"== $($p.path) ($($t.Length) chars)"; if ($t.Length -le 4000) { $t } else { $t.Substring(0, 4000); "[first 4000 of $($t.Length) chars; full text in $f]" } }
A part cut at 4,000 characters is saved in full: read the rest (one call) if what's shown isn't enough.401 or 403 is never permission to bypass RBAC.202 as completion.Each reference is one hop from this index; after loading one, return here when another is needed.
Curate
Govern — shared
Govern — modes
Govern — admin audit procedures: domain health · workspace health · capacity health · item inventory · item health · protect coverage · trust curation
Govern — admin remediation procedures: domain lifecycle · bulk workspace assignment (tenant admin) · domain roles · tag definitions · item sensitivity labels · domain default labels · trust remediation · no-write escalation
I'm curating my items for the OneLake catalog. Propose a better description for the semantic model Sales Model in the Finance workspace.
Make the lakehouse LSEGDemo more discoverable — describe its tables and columns too.
Audit our tenant's OneLake catalog governance posture and prioritize the findings.
Which workspaces I administer are not assigned to a domain?
Show a dry run for assigning these workspaces to the Finance domain, including current assignments.
Find unlabeled items tenant-wide and explain which remediations require a tenant admin versus a data owner.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Microsoft Fabric Activator のアラートルールやデータソース、条件、Teams・メール通知を作成・確認し、既存の定義内容も読み解きます。
Azure Monitor、Application Insights、Log Analytics の監視データを Fabric に取り込み、業務データと関連付けて、売上への影響分析やダッシュボード作成につなげます。
DatabricksのノートブックやジョブをMicrosoft Fabric向けに移行し、API、シークレット、データパス、カタログ構成などの置き換え方を整理します。
Microsoft Fabric Dataflow Gen2の作成やPower Query Mの編集、接続・出力先の設定、定義や更新履歴の確認、Gen1からの移行を扱います。
Microsoft Fabricのデプロイメントパイプラインを管理し、開発・テスト・本番の各段階やワークスペースを設定して、項目の昇格を進めます。
Spark、SQL、Power BIなどの利用状況をもとにFabric容量のSKUを検討し、予約・従量課金・Spark自動スケールの料金を比較するスキルです。