Automatically invoke this skill whenever the user asks about Fabric tenant settings or Power BI tenant settings or auditing tenant settings. You can use this skill if the user mentions "Fabric administration".
日本語の概要は準備中です。原文の説明を表示しています。
Query Microsoft Fabric and Power BI semantic models with DAX (and Fabric SQL endpoints with T-SQL) to feed a Claude Dashboard or any dashboard built from a Fabric connector or MCP server. Use this skill whenever you build, extend or debug a dashboard, KPI card, chart or table on top of a semantic model, call a tool like run_dax_query, get_model_schema or list_models, or the user asks for numbers "from Fabric", "from the model" or "from Power BI", even if they never say DAX. Covers reusing the model's measures instead of writing new ones, KPI design with a target and a trend, crossfiltering between visuals, DAX query syntax and time intelligence, and an execute-inspect-fix test loop.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
A dashboard is only as trustworthy as its queries. The semantic model already holds the business's agreed definitions of its metrics: the measures. A dashboard that reuses them shows the same numbers as every Power BI report on that model; a dashboard that recomputes them shows numbers that look right and quietly disagree. So the work here is mostly finding the right measures and slicing them well, not writing DAX formulas.
Three rules shape every dashboard this skill builds:
reuse measures: every number comes from an existing model measure; no new measure logic in the queries
kpi contract: every KPI shows its value, a target, and a trend
crossfiltering: selecting a mark in one visual filters every other visual
list_models or find_items (type SemanticModel); resolve_item for a URL. Confirm
the model with the user when several look alike (dev, test and prod copies are common).get_model_schema with part Measures, then Columns and
Relationships for the tables you will slice by. Read measure descriptions, display folders, format strings
and expressions. See Reusing the model's measures.EVALUATE per visual; see
references/dax-query-patterns.md.run_dax_query before the dashboard uses it. See Testing.Measures are the governed definitions. Use them by name, [Measure], and let the dashboard decide only how
the measure is sliced: which columns group it, which filters apply, which period it covers.
do:
- reference model measures directly: "Turnover", [Turnover]
- prefer an existing variant over deriving one: use [Turnover 1YP] or [Budget YTD] when the model has them
- shift or filter an existing measure when no variant exists: CALCULATE([Turnover], DATEADD('Date'[Date], -1, YEAR))
- keep the model's format strings (FormatString or FormatStringDefinition in the schema) for display
avoid:
- re-aggregating raw columns when a measure exists: SUM('Sales'[Amount]) next to an existing [Total Sales]
- DEFINE MEASURE blocks that re-implement business logic (margins, rates, OTD %, conversions)
- ratios computed in the dashboard from two measures when the model has the ratio measure
- averaging or summing a ratio measure client-side; ask the model for the ratio at the grain you need
Why this matters: a model's [Turnover] may add surcharges, subtract fees and convert currency; a
SUM('Invoices'[Net Value]) returns a plausible figure that matches no report. Users notice when two tools
disagree, and they stop trusting both.
When the question needs a metric the model does not have:
Many enterprise models have measures that return BLANK unless a slicer table has one value selected: a
reporting currency, a value unit, a selected metric or period. Their expressions start with HASONEVALUE,
SELECTEDVALUE or IF.EAGER(HASONEVALUE(...)), and good models say so in the description. A dashboard that
ignores this shows empty cards. Worse, a measure that reads MAX ( 'Exchange Rate'[Rate] ) or sums across a
currency table returns a number with no selection, just the wrong one: several times too high, with nothing to
say so.
Selected Unit, Exchange Rate, Selected Period)TREATAS({"EUR"}, 'Exchange Rate'[Currency]), and show that choice
in the dashboard (a currency switch, or a label stating the currency)get_model_schema returns empty expressions when the user may not read them. Rely on names, descriptions,
display folders and format strings, and test the measure at a known grain before relying on it.
A number on its own does not tell anyone whether to act. Every KPI in the dashboard carries three things:
value: the measure for the selected period and filters
target: what the value is judged against, from the model, with the variance to it
trend: the same measure over time, so the reader sees direction, not just position
Read references/kpi-design.md for finding targets, choosing the trend grain and the query shapes. The short version:
[Budget vs. Turnover (%)]) when they existEvery visual is also a filter. Clicking a bar, a row or a point sets a selection, and every other visual re-queries with that selection applied; clicking again clears it. This is what makes a dashboard an analysis tool rather than a poster.
'Customers'[Key Account])@account) and apply it with a filter that is a no-op when
nothing is selectedRead references/crossfiltering.md for the tested DAX patterns.
Query rules that prevent most errors:
references: columns fully qualified with quoted table names, 'Table'[Column]; measures unqualified, [Measure]
evaluate: EVALUATE takes a table expression; wrap scalars in ROW(...)
define: one DEFINE block; VAR and MEASURE separated by new lines, no commas
grouping: SUMMARIZECOLUMNS(group-by columns, then filter tables, then "Name", [Measure] pairs)
filters: filter arguments to SUMMARIZECOLUMNS are tables: TREATAS({...}, 'T'[C]) or FILTER(ALL('T'[C]), ...)
ordering: ORDER BY for any multi-row result, so results are stable between runs
no sql: no SELECT, WHERE, HAVING or method chaining inside DAX
blanks: let measures return BLANK; adding + 0 or DIVIDE(x, y, 0) makes SUMMARIZECOLUMNS return every combination
dates: derive "current" periods from the data (MAX of the fact date) or the model's date flags, not hard-coded years
formatting: return raw numbers and format in the dashboard; FORMAT() turns numbers into text that cannot be charted or sorted
A typical dashboard query:
DEFINE
VAR _Region = TREATAS ( { "EMEA" }, 'Geography'[Region] )
VAR _Years = TREATAS ( { 2024, 2025 }, 'Date'[Year] )
EVALUATE
SUMMARIZECOLUMNS (
'Date'[Year],
'Date'[Month Number],
_Region,
_Years,
"Total Sales", [Total Sales],
"Total Sales PY", [Total Sales PY],
"Sales Target", [Sales Target]
)
ORDER BY 'Date'[Year], 'Date'[Month Number]
Every column in it is a model measure; the query only decides the grain and the filters.
References, read when you need them:
When the data lives only in a warehouse, lakehouse SQL endpoint or SQL database, use get_sql_schema and
run_sql_query (one read-only SELECT, parameters as @name). There are no measures there, so the
measure-reuse rule becomes: reuse the views and columns the data owners publish (a gold or reporting schema)
before writing aggregations, and ask whether a semantic model already covers the question. A semantic model,
when one exists, is the better source for a dashboard because its definitions are shared.
run_dax_query (model, query, parameters, maxRows)Results are capped by maxRows (1000 by default), and some connectors also cut a response by its size, so a
wide result can stop short of maxRows; both are flagged with truncated: true. A dashboard visual rarely
needs that many rows: aggregate in DAX to the visual's grain, or use TOPN, rather than raising the cap. Queries
run as the signed-in user, so row-level security applies; two users can see different numbers, which is
correct.
model not found: list_models with part of the name; use workspace/model to disambiguate
blank KPI or empty result: measure needs a slicer selection, or a filter hits a column with no matching values
numbers differ from report: query re-aggregates raw columns, or misses a filter the report applies (page, report
or slicer default); compare against the report's filters
every combination returned: a measure in the query never returns BLANK (+ 0, COALESCE, DIVIDE with 0)
time intelligence wrong: no date context in the query, or the model's date table is not marked; see
references/dax-time-intelligence.md
syntax error near VAR: commas between VARs, or a second DEFINE
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Automatically invoke this skill whenever the user asks about Fabric tenant settings or Power BI tenant settings or auditing tenant settings. You can use this skill if the user mentions "Fabric administration".
日本語の概要は準備中です。原文の説明を表示しています。
Interactive BPA rule generation for Power BI semantic models; guided discovery, model investigation, and expert rule authoring. Automatically invoke when the user mentions "BPA rule", "Best Practice Analyzer", or asks to "create a BPA rule", "audit BPA rules", "recommend BPA rules", "set up BPA for my team", "check model for best practices", "validate BPA rules", "improve a BPA expression".
日本語の概要は準備中です。原文の説明を表示しています。
Writing and executing C# scripts and macros against Power BI semantic models using Tabular Editor 2/3. Automatically invoke when the user mentions "C# script", "Tabular Editor script", "TOM scripting", "MacroActions.json", "XMLA", or asks to "automate model changes", "bulk update measures", "create calculation groups", "write a macro", "format DAX expressions", "manage model metadata".
日本語の概要は準備中です。原文の説明を表示しています。
TOM and ADOMD.NET guidance via PowerShell for connecting to Power BI Desktop's local Analysis Services instance. Covers model enumeration, DAX queries, metadata modification, annotations, calendar definitions, field parameters, query tracing, DAX library package management (daxlib.org), and the Desktop Bridge for reloading and screenshotting the report canvas. Automatically invoke when the user mentions "Power BI Desktop", "Analysis Services port", "TOM", "ADOMD", "daxlib", "DAX library", "DAX UDF package", or asks to "connect to PBI Desktop", "query PBI Desktop with DAX", "modify PBI Desktop model", "add a measure to PBI", "capture visual queries", "create a field parameter", "validate DAX", "intercept DAX queries", "install daxlib", "add DAX SVG", "add IBCS", "reload the report canvas", "screenshot a report page", "Desktop Bridge", or to work with the model and report in Power BI Desktop together.
日本語の概要は準備中です。原文の説明を表示しています。
Step-by-step workflow for creating complete Power BI reports from scratch using pbir CLI. Covers model discovery, report creation, page layout, theme setup, visual placement, field binding, filtering, formatting, validation, and publishing. Automatically invoke when the user asks to "create a new report", "build a report from scratch", "make a dashboard", "set up a report with KPIs", "create an executive dashboard", "add pages and visuals to a new report".
日本語の概要は準備中です。原文の説明を表示しています。
Design and revise Claude Dashboards that people trust and can read at a glance, and handle the comments people leave on them. Use this skill whenever you create, restyle or change a dashboard, answer or act on a dashboard comment (including @Claude mentions in a comment thread), or the user asks for a dashboard to look better, cleaner or more professional. Covers comment etiquette (never resolve comments yourself, reply in short bullets) and visual style following Stephen Few and Edward Tufte.
日本語の概要は準備中です。原文の説明を表示しています。