Identifying Semantic Model Storage Mode in Fabric
Principal Program Manager, Microsoft Fabric CAT helping users and organizations build scalable, insightful, secure solutions. Blogs, opinions are my own and do not represent my employer.
Search for a command to run...
Principal Program Manager, Microsoft Fabric CAT helping users and organizations build scalable, insightful, secure solutions. Blogs, opinions are my own and do not represent my employer.
No comments yet. Be the first to comment.
Last week Microsoft released an open-source text embedding model called Harrier in three sizes- 270M, 0.6B and 27B. I have been testing it in my RAG pipeline and so far it has crushed all my metrics.
For Power BI Copilot and Data agents with semantic models, you must use Prep Data for AI configuration to ground the responses in the context added in Prep for AI. In this blog, I will show you how yo
At FabCon Atlanta last week, the updated notebook Copilot for data engineering and data science was announced. It brings agentic capabilities to the Copilot and is much more intelligent and Fabric-awa
Using Fabric data agent Python SDK
Use workspace monitoring to monitor MCP server use
With the latest addition of Direct Lake as a storage mode in Power BI, the range of available storage modes continues to expand. If you look at the semantic models in the workspace, except for the Push Semantic Model, it's not possible to identify if a semantic model is in import, DirectQuery, Direct Lake, Dual storage mode. So I wrote the below script to do that.
Build Semantic Model Catalog:
!pip install semantic-link swifter --q
import requests
import pandas as pd
import sempy.fabric as fabric
def build_dataset_catalog():
'''
Sandeep Pawar | Fabric.guru
Build dataset (semnatic model) catalog in Fabric
'''
url = "https://analysis.windows.net/powerbi/api"
token = mssparkutils.credentials.getToken(url)
headers = {"Authorization": "Bearer " + token}
response = requests.get("https://api.powerbi.com/v1.0/myorg/groups", headers=headers)
premium_workspaces = pd.DataFrame(response.json()['value']).query('isOnDedicatedCapacity==True')[["name", "id"]]
# premium_workspaces = pd.DataFrame(response.json()['value'])[["name", "id"]]
dfs = [
fabric.list_datasets(ws).assign(workspace=ws)
for ws in premium_workspaces['name']
]
catalog = pd.concat(dfs, ignore_index=True)
cols = ['workspace'] + [col for col in catalog.columns if col != 'workspace']
return catalog.reindex(columns=cols)
datasets = build_dataset_catalog()[["workspace","Dataset Name","Dataset ID"]]
datasets
Use Semantic Link To Identify Partition Modes

Note here that the default semantic model is not a storage mode but I am still identifying it because it may be useful. Also, note that, Mode/Type returned here is a Python set of all modes in that semantic model. e.g. a semantic model may have two tables, one in import mode and another in DirectQuery. In that case, Mode/Type will show {'import','directquery'}. {'import'} means all partitions in this semantic model are in import mode.