plugins/analytics/skills/ssas/SKILL.md
Expert coverage of SQL Server Analysis Services (SSAS) across all versions. Provides deep expertise in Tabular and Multidimensional models, VertiPaq engine, DAX/MDX, processing strategies, and deployment. WHEN: "SSAS", "Analysis Services", "Tabular model", "Multidimensional model", "VertiPaq", "DAX query", "DAX measure", "MDX query", "OLAP cube", "DirectQuery", "calculation group", "SSAS processing", "SSAS partition", "row-level security RLS", "XMLA endpoint", "Azure Analysis Services", "AAS", "semantic model", "TMSL", "Tabular Editor", "DAX Studio", "MOLAP", "ROLAP".
npx skillsauth add chrishuffman5/domain-expert ssasInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill covers SQL Server Analysis Services (SSAS) across all supported versions (2019, 2022, 2025):
When a question is version-specific, read the matching file under references/versions/. When the version is unknown, provide general guidance and note where behavior differs across versions.
Classify the request:
references/diagnostics.md for DAX Studio analysis, DMVs, performance issues, processing failuresreferences/architecture.md for VertiPaq internals, storage modes, processing mechanics, connectivity, securityreferences/best-practices.md for star schema design, DAX optimization, memory management, deployment/CI/CDIdentify version -- Determine which SSAS version or compatibility level the user runs. Features like calculation groups (2019+), OLS (2022+), and Horizontal Fusion (2025+) are version-gated. If version is unclear, ask.
Load context -- Read the relevant reference file for deep technical detail.
Analyze -- Apply SSAS-specific reasoning. Consider model type (Tabular vs. Multidimensional), storage mode (VertiPaq vs. DirectQuery), and platform variant.
Recommend -- Provide actionable guidance with DAX/MDX examples, TMSL scripts, or configuration changes.
Verify -- Suggest validation steps (DAX Studio Server Timings, VertiPaq Analyzer, DMV queries, processing test).
SSAS operates in one of two mutually exclusive modes, selected at install time:
┌─────────────────────────────────────┐
│ SSAS Instance │
│ (one mode per instance) │
└────────────┬────────────────────────┘
│
┌──────────────────┼──────────────────────┐
│ │
┌─────────▼──────────┐ ┌────────────▼─────────┐
│ Tabular Mode │ │ Multidimensional │
│ │ │ Mode │
│ - VertiPaq engine │ │ - MOLAP/ROLAP/HOLAP │
│ - DAX queries │ │ - MDX queries │
│ - DirectQuery │ │ - Cubes/dimensions │
│ - Flat tables │ │ - Aggregation design│
│ - Star schema │ │ - Actions/writeback │
└────────────────────┘ └──────────────────────┘
Choose Tabular when:
Choose Multidimensional when:
The in-memory columnar engine powering Tabular models:
Translates DAX into SQL sent directly to the source relational database:
| Mode | Data Location | Aggregations | Best For | |------|--------------|--------------|----------| | MOLAP | SSAS proprietary store | SSAS proprietary store | Query performance priority | | ROLAP | Source database | Source database (indexed views) | Very large dimensions, real-time | | HOLAP | Source database | SSAS proprietary store | Fast summaries, acceptable detail latency |
| Protocol/Library | Purpose | |------------------|---------| | XMLA | XML for Analysis -- standard protocol for all SSAS communication (queries, processing, admin) | | ADOMD.NET | Managed .NET client library for querying SSAS | | AMO/TOM | Analysis Management Objects / Tabular Object Model -- .NET library for admin operations | | MSOLAP (OLE DB) | Used by Excel, SSRS, and COM-based clients | | TMSL | Tabular Model Scripting Language (JSON-based) for Tabular models at compatibility level 1200+ |
XMLA is the universal protocol. All tools (DAX Studio, SSMS, Tabular Editor, ALM Toolkit, Power BI) communicate via XMLA.
Understanding evaluation contexts is the foundation of DAX:
The most important DAX function. It:
VAR/RETURN to cache intermediate results and avoid redundant calculationsSUMMARIZECOLUMNS is the most optimized aggregation functionMDX navigates cube dimensional structures using members, tuples, and sets:
[Date].[Calendar].[2024]([Date].[Calendar].[2024], [Product].[Category].[Bikes]){[Product].[Category].[Bikes], [Product].[Category].[Clothing]}MDX is the query language for Multidimensional models. Tabular models can also respond to MDX queries (the engine translates MDX to DAX internally), but DAX is the native language for Tabular.
| Type | Effect | When to Use | |------|--------|-------------| | Process Full | Drop + reload + rebuild indexes | Initial load, schema changes | | Process Data | Load data only, no index rebuild | Followed by Process Index | | Process Index | Rebuild indexes/aggregations only | After Process Data | | Process Add | Append new rows only | Incremental loads (no updates) | | Process Update | Reload data + update aggregations | Modified source rows | | Process Clear | Drop all data | Before clean reload |
Best practice: Process Data + Process Index separately is faster than Process Full, reduces server stress, and makes data available sooner.
Microsoft is consolidating analytical platforms toward Power BI/Fabric:
Strategic guidance:
Migration from Multidimensional to Tabular:
| Version | Compat Level | Reference | What's Version-Specific |
|---------|-------------|-----------|--------------|
| SSAS 2019 | 1500 | references/versions/2019.md | Calculation groups, many-to-many relationships, query interleaving |
| SSAS 2022 | 1600 | references/versions/2022.md | Parallel DirectQuery, composite models, OLS, MDX Fusion |
| SSAS 2025 | 1700 | references/versions/2025.md | Horizontal Fusion, selection expressions, LINEST/LINESTX, binary XML |
FILTER(ALL(Table), ...) when a direct column filter in CALCULATE sufficesreferences/architecture.md -- VertiPaq engine internals, storage modes, processing mechanics, connectivity protocols, security modelreferences/best-practices.md -- Star schema design, DAX performance, processing optimization, memory management, deployment/CI/CDreferences/diagnostics.md -- DAX Studio, Extended Events, DMVs, VertiPaq Analyzer, common performance issues, processing failuresReady-made DMV queries in scripts/, numbered by investigation order. Deliver them verbatim (they are read-only); each header explains how to run it and how to interpret output. All also work against Azure AS and Power BI Premium XMLA endpoints.
scripts/01-active-sessions.sql -- Active sessions with user, duration, CPU, last commandscripts/02-current-commands.sql -- Commands executing right now (query vs processing, waiting vs computing)scripts/03-object-memory.sql -- Objects ranked by memory (find the column eating the instance)scripts/04-storage-by-table.sql -- Table/partition sizes and row counts for the current modelscripts/05-connections.sql -- Client connections (tool audit, connection leaks)scripts/06-locks-and-blocking.sql -- Lock grants/waits (processing-commit blocking queries)overview skill, this plugin -- cross-platform BI questionssql-server skill, database plugin -- SQL Server context for source database optimization, DirectQuery tuningtools
kubectl command-line usage and scripting: kubeconfig and context management, output formats (jsonpath, custom-columns, go-template), all major verbs (get, describe, apply, delete, exec, logs, port-forward, rollout, scale, drain), workload resources, config/storage, networking, RBAC, node management, debugging (CrashLoopBackOff, ImagePullBackOff, OOMKilled), and scripting patterns (dry-run, diff, wait, jq, kustomize). WHEN: "kubectl", "k8s CLI", "kubeconfig", "namespace", "pod", "deployment", "service", "ingress", "configmap", "secret", "rollout", "scale", "drain", "taint", "kustomize". Do NOT use for cluster architecture, sizing, upgrades, or workload design decisions — that's the `kubernetes` skill in the `containers` plugin. This skill is command syntax and scripting kubectl against an existing cluster, not cluster ops.
tools
Bash 5.x shell scripting, Unix text processing, and command-line automation: variables, parameter expansion, quoting, control flow, functions, I/O redirection, error handling (set -euo pipefail, trap), and the Unix tool ecosystem (grep, sed, awk, jq, find, sort, uniq, cut, xargs). Covers process management, networking (curl, ssh, rsync, nc), file locking (flock), parallel execution, and production script patterns. WHEN: "Bash", "bash", "shell", "sh", ".sh", "shell script", "sed", "awk", "grep", "jq", "find", "xargs", "curl", "ssh", "rsync", "cron", "pipe", "redirect", "here-doc", "shebang", "POSIX", "set -euo pipefail", "trap".
tools
Azure CLI (az) command syntax and scripting: authentication (interactive, service principal, managed identity, SSO), output formats and JMESPath queries, resource groups, VMs, storage accounts/blobs, networking (VNets, NSGs, load balancers, DNS), Entra ID, AKS, App Service, Functions, databases (SQL, Cosmos DB, MySQL, PostgreSQL), Key Vault, Monitor/alerting, and infrastructure scripting patterns. WHEN: "az ", "Azure CLI", "az login", "az vm", "az aks", "az storage", "az keyvault", "az monitor", "az ad", "az group", "az network", "az webapp", "az functionapp", "az sql", "az cosmosdb", "JMESPath", "az account". Do NOT use for Azure architecture, landing zones, or multi-subscription strategy — that's the `cloud-platforms` plugin. This skill is about command syntax and scripting the CLI, not deciding what to provision.
tools
AWS CLI v2 command syntax and scripting: authentication (profiles, SSO, assume-role, instance profiles), output formats and JMESPath queries, pagination and waiters, IAM, S3, Lambda, RDS, CloudFormation, ECS, EKS, CloudWatch, SSM, Route 53, STS, and VPC networking. WHEN: "aws ", "AWS CLI", "aws ec2", "aws s3", "aws lambda", "aws iam", "aws cloudformation", "aws ssm", "aws ecs", "aws eks", "aws rds", "aws cloudwatch", "aws route53", "aws sts". Do NOT use for AWS architecture, service selection, multi-account strategy, or FinOps — that's the `cloud-platforms` plugin. This skill is about command syntax and scripting the CLI, not deciding what to provision.