Process SSAS Tabular Tables and Partitions with TMSL


  1. Just one note: using TMSL is good for small static scripts. Generating dynamic TMSL and/or large scripts is very bad for performance, using TOM from PowerShell or other languages is much better (and simpler).

    1. Author

      That’s great to know. Thanks, Marco!

  2. Hi Chris/ Russo,

    I have a tabular model with more than 1 billion records and we need a daily full load processing. Is there any way I can achieve parallel partition processing using PowerShell script?

    1. Author

      Sanjeet, SSAS Tabular 2016 will process multiple table partitions in parallel by default if processed in the same operation. You can observe this behavior in SSMS if you select multiple table partitions and perform a process data or process full.

      See here – Sequence command (TMSL)

  3. Is there anyway I can dynamically refer to a Partition. I have one partition by quarter and I want to refresh the last 2 quarters whatever those maybe in a name formatted like YYYYQ# (ex 2018Q1).

  4. Hello,

    I have a Tabular model and having been trying to get the data to refresh from the queries through TMSL in a SQL Agent job so that I can view updated data. I’ve tried the above with no luck. Any tips on how I can achieve this goal?

    1. Author

      Are you getting an error? Have you tested the TMSL script directly in SSMS? If you can isolate the problem to the SQL Agent, perhaps it’s a permissions issue? The account used to run the SQL Agent job needs to have sufficient permissions to process SSAS models.

  5. Hello,

    I have two TMSL refresh full script to refresh two separated objects in a Tabular cube :
    Let’s say TMSL1 to refresh full a dimension/partition A and TMSL2 to refresh a dimension/partition B (data independant objects).

    When i run TMSL1 and TMSL2 at the same time, one wait for the other to finish then it process.

    We have tabular 2016 and we know that Tabular 2016 do parallel but only if all tables/partitions are in the same TMSL refresh command.
    We cannot do that because TMSL1 and TMSL2 are executed from different locations (international context to feed a tabular model from different hubs).

    Do you have an idea on how to fix that ? is there any configuration that could be setted up in server to enable that ?

    Many thanks for your retrun,

    Lhoussine EL OMARI

Leave a Reply (Markdown formatting available)

This site uses Akismet to reduce spam. Learn how your comment data is processed.