Tabular Editor Tricks – Object State

Written by Daniel Otykier | Mar 19, 2019 8:00:00 AM

Key Takeaways

  • A partial refresh leaves some objects un-processed: Running a data-only refresh on a table does not recalculate its calculated columns, hierarchies, or relationships, so they stay out of a Ready state.
  • The filter box finds every un-ready object at once: Typing :State<>"Ready" and enabling the Flat list option lists all objects across the model that still need processing.
  • The filter box can query any object property: Prefixing a search with a colon enables Dynamic LINQ filtering, so you can search the explorer tree on any property, not just State.

Finding objects that aren't ready

If you’re refreshing different parts of your Tabular Model at different times of the day, you may need to know what the current refresh state is, across all objects of the model. For example, running a “dataOnly” refresh on a table, does not automatically refresh calculated columns, hierarchies or relationships.

To know which objects are not in a “Ready” state, simply open Tabular Editor, load the model from your Analysis Services instance, and write the following in the Filter textbox at the top right corner of the screen:

:State<>"Ready"

Make sure to toggle the “Flat list” search result option (the right-most button on the toolbar). This should produce a result like the following:

In general, the Filter text box can be used to search across all object properties using Dynamic LINQ syntax. To enable Dynamic LINQ filtering in Tabular Editor, make sure to put a colon (:) at the front of your search query.

For further reading

In conclusion

A partial or data-only refresh can quietly leave parts of your model un-processed, and those objects keep returning stale or empty results until they are recalculated. Tabular Editor makes them easy to find: connect to the model, type :State<>"Ready" in the filter box, switch on the Flat list option, and every object that still needs processing shows up in one place. The same colon-prefixed Dynamic LINQ trick works against any property, so it is worth keeping in your toolkit well beyond refresh troubleshooting.