Open-source project
microsoft/Analysis-Services avatar
microsoft/Analysis-Services

Analysis-Services and the reality of running a tabular model in production

Git repo for Analysis Services samples and community projects

735 stars434 forksC#MIT

At a glance

What is it?
The Microsoft Analysis-Services repository is a shelf of samples and community projects for SQL Server Analysis Services: autoscaling for QPU, partition management, memory monitoring, trace capture, schema diffing and a curated best practice rule set. Reading it is a good way to learn what running a semantic model actually involves.
Who is it for?
Analysis-Services suits an engineer or administrator who has a tabular model in production and needs help with the operational side, partition processing, memory pressure, capacity and model design review, since each sample in the repository targets one of those problems concretely.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 107 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A repository of answers to operational questions

The Analysis-Services repository is described as a Git repo for Analysis Services samples and community projects, and that description is the key to reading it. This is not a library, not an SDK and not a tool with a command line.

It is a shelf of small projects, each aimed at one specific question that comes up once a tabular model is in production rather than in a notebook. The top-level directory names give the shape of the shelf: AASAutoScale, ASJobGraphEvents, ASTabularScalabilityDesign, AlmToolkit, AsPartitionProcessing, AsPerfMon, AsTrace, AsXEventSample, BestPracticeRules, BismNormalizer, BlogArticleUploads, DeltaAnalyzer, MetadataTranslator, RestApiSample, SetUpAggs, UsqlScripts, pbidevmode, along with fix-cefsharp.ps1.

Look at the names and the coverage is obvious. Capacity, partition management, memory, tracing, event collection, model design rules, schema diffing, a REST API sample, aggregation setup. These are the concerns of somebody who already has the model working and now has to keep it working at three in the morning when memory pressure hits.

The primary language of the repository is C#, the licence is MIT, and the default branch is master. The last push was on 2026-07-08.

AASAutoScale and SetUpAggs answer the capacity question

Two of the samples deal with the resource question, and they approach it from opposite ends.

AASAutoScale is described as a customisable QPU autoscaling solution for AAS that supports scale up and down as well as in and out. The distinction inside that phrase is the interesting part. Scaling up and down means changing how much capacity an existing instance has, while scaling in and out means changing how many instances exist. A cost model that only handles the first cannot respond to a workload that needs horizontal capacity, and one that only handles the second cannot fine-tune a single instance.

SetUpAggs sits at the other end of the same problem, on the model design side. Aggregation is the mechanism that makes a large table answer fast queries, and configuring it by hand for a wide set of measures is exactly the kind of tedious work a script exists to do. The name is terse, which is typical of the whole repository.

Taken together with ASTabularScalabilityDesign, which is named for a scalability design document rather than a program, these three entries suggest the repository treats capacity as a design-time and a run-time problem at once. That is a reasonable position for a semantic model, where the partitioning and aggregation decisions made at build time determine what the capacity has to be at run time.

AsPartitionProcessing and AsPerfMon cover the two things that page you

Two samples map neatly onto the two routine operational problems.

AsPartitionProcessing is automated partition management of Analysis Services tabular models. Partitions are how a large fact table is divided, and once a model has many partitions with different processing schedules, managing them by hand becomes a recurring chore. Automating that is a small, well-defined job with a large payoff in consistency.

AsPerfMon is real-time monitoring of Analysis Services memory usage, broken out by database. The database breakout is what makes it useful rather than a dashboard. Memory pressure in a server instance is not evenly distributed, and a single instance-wide number tells you that something is wrong without telling you which model is responsible. Splitting by database is the difference between a monitor and a diagnostic tool.

Neither of these is exotic. That is the point of the repository. A model that runs fine on a test server and badly on a shared instance usually fails for reasons that are not about the model logic at all, and these are the tools for the reasons that are actually common.

Both are also the kind of thing that a deployment team writes for itself and then shares, which is exactly what a community projects repository is for.

AsTrace and AsXEventSample cover diagnosis, one without a GUI

When something is wrong, the question is what the server is actually doing, and the two event-related samples answer that from different angles.

AsTrace is described as capturing a Profiler trace and writing it to a SQL Server table without requiring a GUI. The without requiring a GUI clause is the whole reason it exists. A Profiler trace is what you want when the model is slow in a way the log does not explain, and if the only way to capture one is to open a desktop tool, then on a headless server or a container you cannot do it at all. Writing the trace into a SQL Server table instead makes the output queryable, which turns the analysis into a SQL problem rather than a file you have to move to a workstation.

AsXEventSample is a sample showing how to collect streaming xEvents. Extended events are the server's own instrumentation, and streaming them means handling them as they arrive rather than after the fact. The two samples together are a division of labour: one is heavy and retrospective, the other is lighter and continuous.

The other entries support the same aim of making a running server legible. ASJobGraphEvents is a Python script to reassemble job graph events from Analysis Services, and DeltaAnalyzer and BismNormalizer sit in the same family of working with what the server produced.

AlmToolkit and the Best Practice Rules set are the model review tools

Not every problem here is a server problem. Some are problems with the model itself, and the repository covers those too.

AlmToolkit is a schema diff tool for tabular models. Schema diffing sounds mundane until you have two versions of a semantic model and need to know what changed between them, because the alternative is comparing by hand and hoping you catch the one measure that disappeared. The release history shows this project is actively worked on, with a series of pre-release tags, 5.1.15-PreRelease and 5.1.14-PreRelease among them, and a 5.1.20 release dated 2025-11-05.

The Best Practice Rules entry is a curated set of rules covering best practices for tabular model performance and design, and it has a specific integration: the rules can be run from Tabular Editor's Best Practice Analyzer. That last detail is what turns a document into a tool. A curated rule set that a well-known external editor can execute is a checklist you can apply to a model in minutes, and a curated rule set that is only prose is a document people read once.

The Best Practice Analyzer is a separate product, which is worth noting for anyone assessing support. You can apply a community rule set through it, but the engine is not part of this repository.

The ALM Toolkit's own release cadence is the one documented here, since it is the only project in the repository with named releases.

MetadataTranslator and the smaller entries widen the scope

The remaining samples show how varied the shelf is.

MetadataTranslator translates the names, descriptions and display folders of the metadata objects in a semantic model using Azure Cognitive Services. This is the least obviously infrastructural item in the repository and one of the most interesting, because it addresses a real problem in a specific way. A semantic model with hundreds of measures is unusable if the names are abbreviations and the descriptions are empty, and translating that metadata is a mechanical job a language model service can do.

The other entries are more specialised. RestApiSample suggests a sample of calling the server over its REST interface. BlogArticleUploads suggests a publishing workflow for articles. pbidevmode and fix-cefsharp.ps1 look like tooling around Power BI and a C# build. UsqlScripts holds sample U-SQL scripts that demonstrate how to process a TPC-DS data set in Azure Data Lake, which is a different data platform entirely and is included because the same tabular modelling ideas apply there.

The presence of UsqlScripts in an Analysis Services repository is a good illustration of the collection's character. It is not a strict boundary around one product, it is a set of things that happened to be built by people working with these models.

What this repository is not, and how to read it honestly

The honest framing is that this is a samples and community repository, and most of what is in it is not a supported product. The top-level description says samples and community projects, the code of conduct is the Microsoft Open Source Code of Conduct, and there is a SECURITY.md at the root alongside the MIT LICENSE.

So the questions worth asking before adopting anything from it are ordinary ones. How old is it, does it match the version of Analysis Services you run, and does it assume a particular hosting arrangement. The last push was on 2026-07-08 and the newest listed release is 5.1.20 from 2025-11-05, which is a reasonable spread of activity rather than an abandoned tree.

The alternative to using these samples is to write the same scripts yourself, which for AsPartitionProcessing or a QPU autoscaler is real work that you would probably not do well the first time. That is the value proposition, and it is a solid one for operational tooling where the alternative is a spreadsheet.

The one thing to be careful about is treating the repository as a product. There is no compatibility matrix, no release train for the collection, and the individual folders are independent. If you take one sample, you take responsibility for that sample, and the top-level index is a menu rather than a supported surface.

There is no install command to run, because there is nothing to install. You clone the repository and open the folder that matches the problem you have.

Editorial conclusion

Analysis-Services suits an engineer or administrator who has a tabular model in production and needs help with the operational side, partition processing, memory pressure, capacity and model design review, since each sample in the repository targets one of those problems concretely. It does not suit a developer looking for a library to call, because the repository is samples rather than a product, and it does not suit anyone who wants supported tooling, since most of what is here is community work. Before relying on any of it, read the individual sample folders rather than the top-level list, note that the newest listed release is 5.1.20 dated 2025-11-05 for the ALM Toolkit, and remember that the last push to the repository was on 2026-07-08.

Frequently asked questions

What is the Microsoft Analysis-Services repository?

It is a Git repo for Analysis Services samples and community projects, not a library. It holds separate projects for QPU autoscaling, partition processing, memory monitoring, trace capture, xEvent collection, schema diffing, best practice rules, metadata translation and a set of smaller samples.

Which Analysis-Services sample handles QPU autoscaling?

AASAutoScale, described as a customisable QPU autoscaling solution for AAS that supports scale up and down as well as in and out. Capacity design is also covered by the ASTabularScalabilityDesign folder, while SetUpAggs handles the model side by configuring aggregations.

How do I monitor Analysis Services memory usage with these samples?

AsPerfMon is the sample for that, and it monitors memory usage in real time broken out by database rather than per instance, so you can tell which model is responsible. For deeper diagnosis, AsTrace captures a Profiler trace into a SQL Server table without requiring a GUI.

What does the ALM Toolkit do in the Analysis-Services repo?

It is a schema diff tool for tabular models, so you can see what changed between two versions of a semantic model. It is the only project in the repository with named releases, the newest listed being 5.1.20 dated 2025-11-05.

How do the Best Practice Rules get applied to a tabular model?

The rules are a curated set covering tabular model performance and design, and they can be run from Tabular Editor's Best Practice Analyzer. The analyzer itself is a separate product, so the rule set is the part that lives in this repository.

Official sources

  1. Issues
  2. License: MIT
  3. microsoft/Analysis-Services on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/microsoft-analysis-services.svg)](https://hysenlabs.com/projects/microsoft-analysis-services)

Was this useful?