This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreDid you hear? There's a new SQL AI Developer certification (DP-800). Start preparing now and be one of the first to get certified. Register now
In our earlier announcement, we shared that newly created data warehouses, lakehouses and other items in Microsoft Fabric would no longer automatically generate default semantic models. This change allows customers to have more control over their modeling experience and to explicitly choose when and how to create semantic models.
Starting end of October 2025, Microsoft began decoupling Power BI default semantic models to regular semantic models. The rollout will occur gradually across regions and should be completed by the end of November 2025.
The script below demonstrates how to use the Fabric API to retrieve all decoupled default semantic models in a workspace and delete the ones that are empty.
You’ll need:
A valid Fabric access token - You can get a valid token from the developer tools in the browser, or you can setup authentication and authorization in your scripts.
The workspace ID
import requestsworkspace_id = "" migratedsemanticmodels_url = f"https://api.fabric.microsoft.com/v1.0/myorg/groups/{workspace_id}/datawarehouses/migratedSemanticModels"
payload = "" headers = { "User-Agent": "delete-default-semantic-models-script/1.0", "Authorization": "Bearer {token}" }
response = requests.request("GET", migratedsemanticmodels_url, headers=headers) response.raise_for_status()
models = response.json().get("value", []) print(f"Found {len(models)} semantic models.")
for model in models: model_id = model.get("modelObjectId") is_empty = model.get("isEmpty") delete_url = f"https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/semanticModels/{model_id}" if is_empty: print(f"Would delete (empty): ({model_id}) - URL: {delete_url}") delete_response = requests.delete(delete_url, headers=headers) if delete_response.status_code == 200: print(f"Deleted: ({model_id})") elif delete_response.status_code == 404: print(f"Not found or already deleted: ({model_id})") else: print(f"Failed to delete ({model_id}): {delete_response.status_code}") else: print(f"Skipping non-empty model: ({model_id})")
API References - Items - Delete Semantic Model - REST API (Semantic Model)
The decoupling of default semantic models marks another step toward a more modular and transparent data modeling experience in Microsoft Fabric. By providing explicit control over semantic model lifecycle, you can now better manage, optimize, or remove unused models — keeping your workspace clean, consistent, and efficient.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.