TOM Compatibility Levels

The missing documentation.
Ever since the convergence of Analysis Services (Tabular) and Power BI (Premium) has started, the Analysis Services API surface has evolved rapidly. New versions of the TOM client libraries are being released frequently, and new Power BI (Premium) features introduce new TOM Compatibility Levels which must be configured at the database in order to enable certain features in the underlying engine.
However, official documentation of those feature sets and the corresponding compatibility levels and NuGet versions is very sparse.
Using the reflection approach described in this article, this page provides "The Missing Documentation" - a chronological listing of TOM features by compatibility level. Major features are annotated with related articles and blog posts.

1601 (new in 19.49 - 19-Sep-2022)

Introduces FormatStringDefinition to measures. Previously, those only existed on Calculation Items.

API Additions in 19.48 - 15-Aug-2022

1572 (new in 19.46 - 11-Jul-2022)

1571 (new in 19.42 - 20-Jun-2022)

1570 (new in 19.42 - 20-Jun-2022)

API Additions in 19.39 - 13-Apr-2022

1569 (new in 19.36 - 01-Mar-2022)

1568 (new in 19.36 - 01-Mar-2022)

  • Model.MaxParallelismPerRefresh: Determines the max possible number of parallel tasks in data refresh, within the resource constraints of the hosting service.

1567 (new in 19.34 - 10-Feb-2022)

1566 (new in 19.27 - 10-Nov-2021)

1565 (new in 19.26 - 08-Sep-2021)

Hybrid Tables in PBI Premium
API Additions
    • RefreshPolicyMode.Import: Creates import partitions during incremental refresh.
    • RefreshPolicyMode.Hybrid: Creates import and DirectQuery partitions during incremental refresh.

1564 (new in 19.22 - 02-Jun-2021)

1563 (new in 19.20 - 07-Apr-2021)

  • PartitionSourceType.Inferred: The data in this partition is populated by executing a query generated by the system.
  • InferredPartitionSource: Represents a Partition that its data will be populated by executing a query generated by the system.
  • ParquetPartitionSource: Represents a Partition that its data will be populated by executing a query generated by the system.

1562 (new in 19.16 - 15-Jan-2021)

Auto Aggregations
API Additions
  • Table.SystemManaged: A boolean value that indicates whether the table is managed by the system. The system takes ownership of creation and deletion of such tables.

1561 (new in 19.14 - 08-Dec-202)

1560 (new in 19.12 - 12-Oct-2020)

1550 (new in 19.9 - 10-Aug-2020)

  • SourceLineageTag (Column, Hierarchy, Level, Measure, NamedExpression, Table): A tag that represents the lineage of the source for the object.

1545 (new 19.6 - 14-Jul-2020)

  • NamedExpression.ParameterValuesColumn: Client tools apply filters to this column using M parameter. The presence of this property indicates model owner allows Dax queries to override this parameter, and columns data type must match the type specified in the meta tag of the parameter.

1540 (new 19.4 - 16-Jun-2020)

  • LineageTag (Column, Hierarchy, Level, Measure, NamedExpression, Table): A tag that represents the lineage of the object.

1535 (new in 19.2 - 01-Jun-2020)

1520 (max level in 18.4)

1510

  • Model.DataSourceDefaultMaxConnections: DataSourceDefaultMaxConnections will be used for connections to a data source if MaxConnections is set to -1 on the data source object or if there is no corresponding data source object for the data source.

1500

1480

QueryGroups
  • Model.QueryGroups: Gets the collection object of all querygroups in the current Model.
  • NamedExpression.QueryGroup: QueryGroup associated with the expression.
  • Partition.QueryGroup: QueryGroup associated with the partition.
  • Table.ExcludeFromModelRefresh: A boolean value that indicates whether the table is excluded from model refresh. When this is true, a refresh operation on the model would not trigger a refresh on the partitions of the table if they were already processed.

1475

1470

Calculation Groups
API Additions

1465

"Enhanced Metadata Format"
API Additions

1460

  • SummarizationType (Enum: GroupBy, Sum, Count, Min, Max): Specifies the Summarization type to be used by alternative sources' columns.
  • AlternateOf: Represents a AlternativeSource object. It is a child of either a Table or a Column object.
    • Column.AlternateOf: Defines the AlternateOf reference source BaseTable or BaseColumn, and the Summarization.
  • Table.AlternateSourcePrecedence: The ranking or precedence used to select the alternate source table in case more than one match is found.

1455

Dual Storage Mode
API Additions
  • ModeType.Dual: Allows support for dual mode of Import as well as DirectQuery.
  • Measure.DataCategory: Specifies the type of data contained in the measure so that you can add custom behaviors based on measure type.

1450

Incremental Refresh Policy (Import)
API Additions

Earlier Versions

  • 1100, 1103, 1200, 1400