[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BPMZPX2HAQ290YFX4FR3Z":3,"skill-same:01M69BPMZPX2HAQ290YFX4FR3Z":86},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M69BPMZPX2HAQ290YFX4FR3Z","dax-authoring",null,"Write and test DAX queries against Power BI semantic models. Covers DAX syntax rules, query patterns, time intelligence, and an iterative test workflow using the Fabric CLI query command.","microsoft\u002FConsumptionCentral-for-Microsoft-Copilot","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BPCQSM5NG6P493H2Q9APZ",33,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fdax-authoring\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"authoring","dax","dax authoring","syntax","bi","time","query","queries","models","power","write","command","cli","Rules","semantic models","fabric","power bi","fabric cli","test","workflow","2026-11-10 10:12:30",false,"---\nname: dax-authoring\ndescription: >\n  Write and test DAX queries against Power BI semantic models.\n  Covers DAX syntax rules, query patterns, time intelligence,\n  and an iterative test workflow using the Fabric CLI query command.\n---\n\n# DAX Authoring\n\n## Table of Contents\n\n| Task | Reference | Notes |\n|---|---|---|\n| Must\u002FPrefer\u002FAvoid | [SKILL.md: Must\u002FPrefer\u002FAvoid](#must--prefer--avoid) | Guardrails for DAX query generation |\n| Generating DAX Queries | [SKILL.md: Generating DAX Queries](#generating-dax-queries) | Core rules, inline examples, EVALUATE\u002FDEFINE patterns |\n| DAX Query Structure & Syntax | [dax-query-patterns.md: Query Structure](.\u002Freferences\u002Fdax-query-patterns.md#query-structure) | DEFINE \u002F EVALUATE \u002F ORDER BY \u002F START AT |\n| DAX Query Key Components | [dax-query-patterns.md: Key Components](.\u002Freferences\u002Fdax-query-patterns.md#key-components) | DEFINE VAR, DEFINE MEASURE, table expressions |\n| DAX Query Worked Examples | [dax-query-patterns.md: Common Patterns](.\u002Freferences\u002Fdax-query-patterns.md#common-patterns) | 11 annotated examples from simple aggregation to cross-table joins |\n| DAX Query Anti-Patterns | [dax-query-patterns.md: Anti-Patterns](.\u002Freferences\u002Fdax-query-patterns.md#anti-patterns) | What to avoid in DAX queries |\n| CALCULATE & CALCULATETABLE | [dax-core-reference.md: CALCULATE & CALCULATETABLE](.\u002Freferences\u002Fdax-core-reference.md#calculate--calculatetable) | Context transition, filter types, boolean restrictions, common patterns |\n| SUMMARIZECOLUMNS | [dax-core-reference.md: SUMMARIZECOLUMNS](.\u002Freferences\u002Fdax-core-reference.md#summarizecolumns) | Argument order, auto-blank elimination, filter args, vs SUMMARIZE |\n| ALL & ALLEXCEPT | [dax-core-reference.md: ALL & ALLEXCEPT](.\u002Freferences\u002Fdax-core-reference.md#all--allexcept) | CALCULATE modifier vs table function; percentage patterns |\n| TREATAS | [dax-core-reference.md: TREATAS](.\u002Freferences\u002Fdax-core-reference.md#treatas) | Virtual relationships, multi-column filtering |\n| DAX Syntax Rules | [dax-core-reference.md: DAX Syntax Rules](.\u002Freferences\u002Fdax-core-reference.md#dax-syntax-rules) | EVALUATE, CALCULATE, naming, SQL keywords, DEFINE rules |\n| Common Mistakes | [dax-core-reference.md: Common Mistakes](.\u002Freferences\u002Fdax-core-reference.md#common-mistakes) | Variable naming, quoting, escaping, scalar EVALUATE, multi-table SUMMARIZECOLUMNS |\n| BLANK Semantics | [dax-core-reference.md: BLANK Semantics](.\u002Freferences\u002Fdax-core-reference.md#blank-semantics) | BLANK vs NULL, propagation, equality, ISBLANK, DIVIDE, non-empty semantics |\n| Time Intelligence Patterns | [SKILL.md: Time Intelligence](#time-intelligence) | When to consult TI reference |\n| Date Table Prerequisites | [dax-time-intelligence.md: Prerequisites](.\u002Freferences\u002Fdax-time-intelligence.md#prerequisites) | Date table requirements, mark as date table |\n| YTD \u002F QTD \u002F MTD | [dax-time-intelligence.md: Period-to-Date](.\u002Freferences\u002Fdax-time-intelligence.md#period-to-date) | TOTALYTD, DATESYTD, DATESINPERIOD patterns |\n| Year-over-Year \u002F Period Comparisons | [dax-time-intelligence.md: Period Comparisons](.\u002Freferences\u002Fdax-time-intelligence.md#period-comparisons) | SAMEPERIODLASTYEAR, DATEADD, PARALLELPERIOD |\n| Rolling Windows | [dax-time-intelligence.md: Rolling Windows](.\u002Freferences\u002Fdax-time-intelligence.md#rolling-windows) | DATESINPERIOD rolling 12-month patterns |\n| Opening\u002FClosing Balances | [dax-time-intelligence.md: Balances](.\u002Freferences\u002Fdax-time-intelligence.md#balances) | Semi-additive measures, LASTDATE, LASTNONBLANK |\n| TI in DAX Queries (Critical Rules) | [dax-time-intelligence.md: Critical Rules for TI in Queries](.\u002Freferences\u002Fdax-time-intelligence.md#critical-rules-for-ti-in-dax-queries) | CALCULATETABLE + TREATAS pattern for query context |\n| TI Common Mistakes | [dax-time-intelligence.md: Common Mistakes](.\u002Freferences\u002Fdax-time-intelligence.md#common-mistakes) | Missing date table, wrong granularity, fiscal calendar |\n| Testing & Iteration | [SKILL.md: Testing & Iteration](#testing--iteration) | Execute → inspect → fix → re-test workflow |\n\n## Must \u002F Prefer \u002F Avoid\n\n### Must\n- Always test generated DAX via `npx fabric-app-data query \u003Calias> --query '\u003CDAX>'` before using in app code\n- Use fully-qualified `'Table'[Column]` for column references\n- Use simple `[Measure]` for measure references\n- Use DEFINE for VAR and local MEASURE declarations (single DEFINE block, no commas)\n- Prefer existing model measures over re-aggregating raw data\n\n### Prefer\n- SUMMARIZECOLUMNS as the primary grouping function for queries\n- TREATAS for filter arguments in SUMMARIZECOLUMNS\n- Variables (VAR) to improve readability and avoid repeated calculations\n\n### Avoid\n- SQL keywords (SELECT, WHERE, HAVING, etc.) within DAX expressions\n- EVALUATE with scalar functions directly (wrap in ROW or table function)\n\n## Generating DAX Queries\n\n### DAX Syntax Rules\n\n- Measures are named objects in the semantic model. They specify how to aggregate data. **Measures should be used first** to answer user requests before a new DAX formula is used to aggregate data.\n- **EVALUATE Statement**: Not a function but a statement. It must always precede a table expression. Avoid pairing EVALUATE with scalar functions like CONCATENATEX, SUMX, DISTINCTCOUNT, etc.\n- Use the fully-qualified name `'Table'[Column]` for column references, and the simple name `[Measure]` for measure references.\n- CALCULATE takes a scalar expression as its first argument. CALCULATETABLE takes a table expression as its first argument.\n- SUMMARIZECOLUMNS requires a specific order: groupby columns, then filters, then aggregations\u002Fmeasures.\n- Do not use SUMMARIZECOLUMNS when there is no aggregation and the groupby columns belong to more than one table; use VALUES, SUMMARIZE, or SELECTCOLUMNS instead.\n- When using SELECTCOLUMNS or CALCULATETABLE, include any columns needed downstream (ORDER BY, FILTER).\n- Filters propagate across relationships based on unidirectional or bidirectional settings.\n- INTERSECT, UNION, EXCEPT require identical column counts in both inputs.\n- For current date\u002Ftime, use TODAY() or NOW().\n\n### Inline Examples\n\n**Simple filtered aggregation:**\n```dax\n\u002F\u002F Total sales for red products\nEVALUATE\n  ROW(\"Total Sales Amount\", CALCULATE([Total Amount], 'Product'[Color] == \"Red\"))\n```\n\n**Multi-filter grouping with SUMMARIZECOLUMNS:**\n```dax\nDEFINE\n  VAR _Filter1 = TREATAS({\"Consumer Electronics\"}, 'Product'[Category])\n  VAR _Filter2 = FILTER(ALL('Calendar'[Year]), 'Calendar'[Year] >= 2022 && 'Calendar'[Year] \u003C= 2023)\n\nEVALUATE\n  SUMMARIZECOLUMNS(\n    'Calendar'[Year],\n    'Calendar'[Month],\n    _Filter1,\n    _Filter2,\n    \"Total Quantity\", SUM('Sales'[Order Quantity]),\n    \"Discount\", [Total Discount]\n  )\n```\n\n**TopN with filtering:**\n```dax\nDEFINE\n  VAR _Filter = TREATAS({\"Red\", \"Black\"}, 'Product'[Color])\n  VAR _Core = SUMMARIZECOLUMNS('Product'[Name], _Filter, \"Total Sales\", [Total Amount])\n\nEVALUATE\n  TOPN(10, _Core, [Total Sales], DESC)\n```\n\nFor full syntax reference, worked examples, and anti-patterns, see [dax-query-patterns.md](.\u002Freferences\u002Fdax-query-patterns.md).\nFor function details, see [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md).\n\n## Time Intelligence\n\nTime intelligence functions enable period-based analysis (YTD, YoY, rolling windows, etc.). They require a properly configured Date table.\n\nConsult [dax-time-intelligence.md](.\u002Freferences\u002Fdax-time-intelligence.md) whenever the user's request involves:\n- Period-to-date calculations (YTD, QTD, MTD)\n- Period comparisons (Year-over-Year, Month-over-Month)\n- Rolling windows (last 12 months, last 30 days)\n- Opening\u002Fclosing balances\n- Custom date ranges\n\n## Testing & Iteration\n\n1. Generate the DAX query expression\n2. Execute via `npx fabric-app-data query \u003Calias> --query '\u003CDAX>'`\n3. Inspect results: check column names, data types, row counts, and actual data values\n4. If error: consult [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md), fix, and re-test\n5. Iterate until the query returns expected results\n\n## Query Execution\n\nUse `npx fabric-app-data query \u003Calias> --query '\u003CDAX>'` to run queries. This uses the same SDK pipeline as the running app, so results are identical to what the app produces at runtime. To re-test an existing `.dax` file without copying the query text, use `--file`: `npx fabric-app-data query \u003Calias> --file src\u002Fqueries\u002Frevenue.dax`. For full CLI options (profiles, result limits), see the `fabric-cli` skill.\n\n**Result trimming:** The CLI returns at most 1000 rows by default. When the result is trimmed, the output includes a `_cliWarning` field (e.g., `\"Result trimmed to first 1000 of 5000 rows\"`). This is a CLI-only limitation — the full dataset is available in the running app. If you need to see more data, refine your DAX with filters or aggregations.\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| CLI `query` fails with \"not signed in\" | Run `az login` to sign in to Azure CLI |\n| CLI `query` fails with \"Azure CLI is not installed\" | Install from https:\u002F\u002Faka.ms\u002Finstall-azure-cli |\n| CLI `query` fails with \"alias not found\" | Run `npx fabric-app-data list` to check available aliases, then `npx fabric-app-data add` to register |\n| DAX syntax errors | Consult [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md) — check reserved keywords, quoting rules, EVALUATE\u002Fscalar mistakes |\n| Unexpected query results | Check filter context, relationship direction, BLANK handling in [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md#blank-semantics) |\n| Time intelligence returns wrong values | Check date table prerequisites and critical rules in [dax-time-intelligence.md](.\u002Freferences\u002Fdax-time-intelligence.md) |\n","# DAX Authoring\n\n## Table of Contents\n\n| Task | Reference | Notes |\n|---|---|---|\n| Must\u002FPrefer\u002FAvoid | [SKILL.md: Must\u002FPrefer\u002FAvoid](#must--prefer--avoid) | Guardrails for DAX query generation |\n| Generating DAX Queries | [SKILL.md: Generating DAX Queries](#generating-dax-queries) | Core rules, inline examples, EVALUATE\u002FDEFINE patterns |\n| DAX Query Structure & Syntax | [dax-query-patterns.md: Query Structure](.\u002Freferences\u002Fdax-query-patterns.md#query-structure) | DEFINE \u002F EVALUATE \u002F ORDER BY \u002F START AT |\n| DAX Query Key Components | [dax-query-patterns.md: Key Components](.\u002Freferences\u002Fdax-query-patterns.md#key-components) | DEFINE VAR, DEFINE MEASURE, table expressions |\n| DAX Query Worked Examples | [dax-query-patterns.md: Common Patterns](.\u002Freferences\u002Fdax-query-patterns.md#common-patterns) | 11 annotated examples from simple aggregation to cross-table joins |\n| DAX Query Anti-Patterns | [dax-query-patterns.md: Anti-Patterns](.\u002Freferences\u002Fdax-query-patterns.md#anti-patterns) | What to avoid in DAX queries |\n| CALCULATE & CALCULATETABLE | [dax-core-reference.md: CALCULATE & CALCULATETABLE](.\u002Freferences\u002Fdax-core-reference.md#calculate--calculatetable) | Context transition, filter types, boolean restrictions, common patterns |\n| SUMMARIZECOLUMNS | [dax-core-reference.md: SUMMARIZECOLUMNS](.\u002Freferences\u002Fdax-core-reference.md#summarizecolumns) | Argument order, auto-blank elimination, filter args, vs SUMMARIZE |\n| ALL & ALLEXCEPT | [dax-core-reference.md: ALL & ALLEXCEPT](.\u002Freferences\u002Fdax-core-reference.md#all--allexcept) | CALCULATE modifier vs table function; percentage patterns |\n| TREATAS | [dax-core-reference.md: TREATAS](.\u002Freferences\u002Fdax-core-reference.md#treatas) | Virtual relationships, multi-column filtering |\n| DAX Syntax Rules | [dax-core-reference.md: DAX Syntax Rules](.\u002Freferences\u002Fdax-core-reference.md#dax-syntax-rules) | EVALUATE, CALCULATE, naming, SQL keywords, DEFINE rules |\n| Common Mistakes | [dax-core-reference.md: Common Mistakes](.\u002Freferences\u002Fdax-core-reference.md#common-mistakes) | Variable naming, quoting, escaping, scalar EVALUATE, multi-table SUMMARIZECOLUMNS |\n| BLANK Semantics | [dax-core-reference.md: BLANK Semantics](.\u002Freferences\u002Fdax-core-reference.md#blank-semantics) | BLANK vs NULL, propagation, equality, ISBLANK, DIVIDE, non-empty semantics |\n| Time Intelligence Patterns | [SKILL.md: Time Intelligence](#time-intelligence) | When to consult TI reference |\n| Date Table Prerequisites | [dax-time-intelligence.md: Prerequisites](.\u002Freferences\u002Fdax-time-intelligence.md#prerequisites) | Date table requirements, mark as date table |\n| YTD \u002F QTD \u002F MTD | [dax-time-intelligence.md: Period-to-Date](.\u002Freferences\u002Fdax-time-intelligence.md#period-to-date) | TOTALYTD, DATESYTD, DATESINPERIOD patterns |\n| Year-over-Year \u002F Period Comparisons | [dax-time-intelligence.md: Period Comparisons](.\u002Freferences\u002Fdax-time-intelligence.md#period-comparisons) | SAMEPERIODLASTYEAR, DATEADD, PARALLELPERIOD |\n| Rolling Windows | [dax-time-intelligence.md: Rolling Windows](.\u002Freferences\u002Fdax-time-intelligence.md#rolling-windows) | DATESINPERIOD rolling 12-month patterns |\n| Opening\u002FClosing Balances | [dax-time-intelligence.md: Balances](.\u002Freferences\u002Fdax-time-intelligence.md#balances) | Semi-additive measures, LASTDATE, LASTNONBLANK |\n| TI in DAX Queries (Critical Rules) | [dax-time-intelligence.md: Critical Rules for TI in Queries](.\u002Freferences\u002Fdax-time-intelligence.md#critical-rules-for-ti-in-dax-queries) | CALCULATETABLE + TREATAS pattern for query context |\n| TI Common Mistakes | [dax-time-intelligence.md: Common Mistakes](.\u002Freferences\u002Fdax-time-intelligence.md#common-mistakes) | Missing date table, wrong granularity, fiscal calendar |\n| Testing & Iteration | [SKILL.md: Testing & Iteration](#testing--iteration) | Execute → inspect → fix → re-test workflow |\n\n## Must \u002F Prefer \u002F Avoid\n\n### Must\n- Always test generated DAX via `npx fabric-app-data query \u003Calias> --query '\u003CDAX>'` before using in app code\n- Use fully-qualified `'Table'[Column]` for column references\n- Use simple `[Measure]` for measure references\n- Use DEFINE for VAR and local MEASURE declarations (single DEFINE block, no commas)\n- Prefer existing model measures over re-aggregating raw data\n\n### Prefer\n- SUMMARIZECOLUMNS as the primary grouping function for queries\n- TREATAS for filter arguments in SUMMARIZECOLUMNS\n- Variables (VAR) to improve readability and avoid repeated calculations\n\n### Avoid\n- SQL keywords (SELECT, WHERE, HAVING, etc.) within DAX expressions\n- EVALUATE with scalar functions directly (wrap in ROW or table function)\n\n## Generating DAX Queries\n\n### DAX Syntax Rules\n\n- Measures are named objects in the semantic model. They specify how to aggregate data. **Measures should be used first** to answer user requests before a new DAX formula is used to aggregate data.\n- **EVALUATE Statement**: Not a function but a statement. It must always precede a table expression. Avoid pairing EVALUATE with scalar functions like CONCATENATEX, SUMX, DISTINCTCOUNT, etc.\n- Use the fully-qualified name `'Table'[Column]` for column references, and the simple name `[Measure]` for measure references.\n- CALCULATE takes a scalar expression as its first argument. CALCULATETABLE takes a table expression as its first argument.\n- SUMMARIZECOLUMNS requires a specific order: groupby columns, then filters, then aggregations\u002Fmeasures.\n- Do not use SUMMARIZECOLUMNS when there is no aggregation and the groupby columns belong to more than one table; use VALUES, SUMMARIZE, or SELECTCOLUMNS instead.\n- When using SELECTCOLUMNS or CALCULATETABLE, include any columns needed downstream (ORDER BY, FILTER).\n- Filters propagate across relationships based on unidirectional or bidirectional settings.\n- INTERSECT, UNION, EXCEPT require identical column counts in both inputs.\n- For current date\u002Ftime, use TODAY() or NOW().\n\n### Inline Examples\n\n**Simple filtered aggregation:**\n```dax\n\u002F\u002F Total sales for red products\nEVALUATE\n  ROW(\"Total Sales Amount\", CALCULATE([Total Amount], 'Product'[Color] == \"Red\"))\n```\n\n**Multi-filter grouping with SUMMARIZECOLUMNS:**\n```dax\nDEFINE\n  VAR _Filter1 = TREATAS({\"Consumer Electronics\"}, 'Product'[Category])\n  VAR _Filter2 = FILTER(ALL('Calendar'[Year]), 'Calendar'[Year] >= 2022 && 'Calendar'[Year] \u003C= 2023)\n\nEVALUATE\n  SUMMARIZECOLUMNS(\n    'Calendar'[Year],\n    'Calendar'[Month],\n    _Filter1,\n    _Filter2,\n    \"Total Quantity\", SUM('Sales'[Order Quantity]),\n    \"Discount\", [Total Discount]\n  )\n```\n\n**TopN with filtering:**\n```dax\nDEFINE\n  VAR _Filter = TREATAS({\"Red\", \"Black\"}, 'Product'[Color])\n  VAR _Core = SUMMARIZECOLUMNS('Product'[Name], _Filter, \"Total Sales\", [Total Amount])\n\nEVALUATE\n  TOPN(10, _Core, [Total Sales], DESC)\n```\n\nFor full syntax reference, worked examples, and anti-patterns, see [dax-query-patterns.md](.\u002Freferences\u002Fdax-query-patterns.md).\nFor function details, see [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md).\n\n## Time Intelligence\n\nTime intelligence functions enable period-based analysis (YTD, YoY, rolling windows, etc.). They require a properly configured Date table.\n\nConsult [dax-time-intelligence.md](.\u002Freferences\u002Fdax-time-intelligence.md) whenever the user's request involves:\n- Period-to-date calculations (YTD, QTD, MTD)\n- Period comparisons (Year-over-Year, Month-over-Month)\n- Rolling windows (last 12 months, last 30 days)\n- Opening\u002Fclosing balances\n- Custom date ranges\n\n## Testing & Iteration\n\n1. Generate the DAX query expression\n2. Execute via `npx fabric-app-data query \u003Calias> --query '\u003CDAX>'`\n3. Inspect results: check column names, data types, row counts, and actual data values\n4. If error: consult [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md), fix, and re-test\n5. Iterate until the query returns expected results\n\n## Query Execution\n\nUse `npx fabric-app-data query \u003Calias> --query '\u003CDAX>'` to run queries. This uses the same SDK pipeline as the running app, so results are identical to what the app produces at runtime. To re-test an existing `.dax` file without copying the query text, use `--file`: `npx fabric-app-data query \u003Calias> --file src\u002Fqueries\u002Frevenue.dax`. For full CLI options (profiles, result limits), see the `fabric-cli` skill.\n\n**Result trimming:** The CLI returns at most 1000 rows by default. When the result is trimmed, the output includes a `_cliWarning` field (e.g., `\"Result trimmed to first 1000 of 5000 rows\"`). This is a CLI-only limitation — the full dataset is available in the running app. If you need to see more data, refine your DAX with filters or aggregations.\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| CLI `query` fails with \"not signed in\" | Run `az login` to sign in to Azure CLI |\n| CLI `query` fails with \"Azure CLI is not installed\" | Install from https:\u002F\u002Faka.ms\u002Finstall-azure-cli |\n| CLI `query` fails with \"alias not found\" | Run `npx fabric-app-data list` to check available aliases, then `npx fabric-app-data add` to register |\n| DAX syntax errors | Consult [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md) — check reserved keywords, quoting rules, EVALUATE\u002Fscalar mistakes |\n| Unexpected query results | Check filter context, relationship direction, BLANK handling in [dax-core-reference.md](.\u002Freferences\u002Fdax-core-reference.md#blank-semantics) |\n| Time intelligence returns wrong values | Check date table prerequisites and critical rules in [dax-time-intelligence.md](.\u002Freferences\u002Fdax-time-intelligence.md) |\n",{"name":5,"description":7},"main","4eb01f698385c9827be8933d718ec3502f2f7179","fabric-app\u002F.agents\u002Fskills\u002Fdax-authoring",14,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-11 17:54:38",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add microsoft\u002FConsumptionCentral-for-Microsoft-Copilot --skill dax-authoring",{"tool":64,"command":65},"bunx","bunx skills add microsoft\u002FConsumptionCentral-for-Microsoft-Copilot --skill dax-authoring",{"tool":67,"command":68},"pnpm","pnpm dlx skills add microsoft\u002FConsumptionCentral-for-Microsoft-Copilot --skill dax-authoring","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fdax-authoring\u002FSKILL.md",true,[72,78,82],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fdax-core-reference.md","REFERENCE","参考文档",26595,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fdax-authoring\u002Freferences\u002Fdax-core-reference.md",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fdax-query-patterns.md",8671,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fdax-authoring\u002Freferences\u002Fdax-query-patterns.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fdax-time-intelligence.md",9342,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fdax-authoring\u002Freferences\u002Fdax-time-intelligence.md",[87,114,137,170,190,210],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":44},"01M69BQ4G68QF9WX539PV9CQC4","visuals","Use when user wants to incorporate charts, graphs, data grid,  or other visual representations of data into their project. Use VegaVisual and DataGrid components to create these visuals,  utilizing the shared DataTable input, formatting, theme, and interactivity. Covers the VisualContainer chrome every visual gets by default, the onInteraction selection\u002Fclick events host apps consume, named multi-table data input for layered overlays and reference lines, and Vega-Lite native selections.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fvisuals\u002FSKILL.md",[],[89,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113],"chrome","components","create","data","Charts","table","default","selection","shared","project","formatting","click","host","apps","input","events","theme","native","overlays","when",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":44},"01M69BQ2DG181SZM4CXHJ2TM25","schema-discovery","Explore Power BI semantic model schemas using DAX INFO functions. Progressive metadata discovery strategy, scope estimation, and narrowing techniques for tables, columns, measures, and relationships.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fschema-discovery\u002FSKILL.md",[],[121,122,123,25,40,124,125,126,33,127,128,129,130,131,28,132,133,134,135,136],"schema discovery","discovery","schema","explore","model","strategy","functions","info","relationships","estimation","scope","columns","tables","techniques","for","progressive",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":154,"publishedAt":44},"01M69BPZR4PVY2F64XG4GT3V37","query-design","Separates DAX data-fetching from TypeScript presentation. Guides when to use  DAX vs. TypeScript vs. Vega-Lite for aggregation, total rows, FORMAT(), SELECTCOLUMNS,  BLANK handling, filtering, multi-grain queries, cross-filtering and cross-highlight subset\u002Foverlay queries, and format strings.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fquery-design\u002FSKILL.md",[143,146,149],{"categoryNo":144,"categoryName":145,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":147,"categoryName":148,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":150,"categoryName":151,"taxonomyType":152,"taxonomyTypeDesc":153},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[155,156,30,157,25,97,158,159,160,161,31,162,163,164,165,166,135,167,168,169,113],"design","query design","typescript","aggregation","format","filtering","use","data-fetching","guides","multi","presentation","strings","when to use","overlay","grain",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":177,"publishedAt":44},"01M69BPWKVSN65SQWXRJ6DFD2V","playwright-cli","Automate browser interactions, test web pages and work with Playwright tests.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Fplaywright-cli\u002FSKILL.md",[176],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[36,178,179,42,180,181,182,183,184,185,186,61,187,188,189,172],"playwright","playwright cli","web","browser","npm","Bash","automate","work","test web","tests","pages","with",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":196,"publishedAt":44},"01M69BPSWZATNRKZWSZ7N61DJJ","fabric-sdk","How to use @microsoft\u002Ffabric-app-data to connect web applications to Fabric data sources at runtime. Build browser-based apps that query semantic models via DAX using the FabricClient API.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Ffabric-sdk\u002FSKILL.md",[],[197,198,39,180,9,25,199,200,38,181,97,201,202,203,161,30,204,205,107,206,207,208,209],"sdk","fabric sdk","connect","fabric data","applications","api","how","runtime","app","how to","sources","at","data sources",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":44},"01M69BPQHW7FYGYFRCJ8ARWECK","fabric-cli","How to use fabric-app-data CLI to manage Fabric data source connections. Maintain workspace\u002Fitem IDs in a fabric.yaml file with profiles, add connections by ID or Fabric portal URL, and generate TypeScript config for use with @microsoft\u002Ffabric-app-data.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FConsumptionCentral-for-Microsoft-Copilot\u002Fblob\u002Fmain\u002Ffabric-app\u002F.agents\u002Fskills\u002Ffabric-cli\u002FSKILL.md",[],[36,41,39,157,9,217,218,200,97,219,203,220,221,222,205,206,223,224,225,135,226],"config","generate","ids","manage","maintain","connections","add","URL","profiles","source"]