Fabric Analytics SDK
The Fabric Analytics SDK for Python provides programmatic access to Microsoft Fabric Analytics services. It allows interaction with datasets, lakehouses, and warehouses within Fabric. The current version is 0.0.3.post1. Given its early 0.0.x versioning and the release patterns typical for new Microsoft SDKs, frequent updates and potential breaking changes are expected.
Warnings
- breaking As a pre-release library (version 0.0.x), the API surface is considered unstable. Breaking changes, renames, and removals can occur in any minor or patch release without prior deprecation warnings. Applications using this SDK should be prepared for frequent updates and potential rewrites.
- gotcha Authenticating with Azure services requires proper setup of `DefaultAzureCredential`. This often involves setting environment variables (`AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`), logging in via Azure CLI (`az login`), or configuring Managed Identities. Incorrect setup is a common cause of `AuthenticationFailedError` or similar credential errors.
- gotcha Even with correct authentication, operations will fail if the authenticated principal lacks the required permissions (e.g., 'Fabric Admin', 'Contributor', 'Viewer', or specific item permissions) within the specific Fabric workspace or item. Errors like `ResourceNotFoundError` or `Unauthorized` can stem from insufficient permissions.
- gotcha The PyPI package name is `fabric-analytics-sdk`, but the top-level import for the library is `fabric_analytics`. This difference in naming convention can sometimes lead to confusion for new users trying to import modules.
Install
-
pip install fabric-analytics-sdk
Imports
- AnalyticsClient
from fabric_analytics.analytics_client import AnalyticsClient
- DefaultAzureCredential
from azure.identity import DefaultAzureCredential
- ResourceNotFoundError
from azure.core.exceptions import ResourceNotFoundError
Quickstart
import os
from fabric_analytics.analytics_client import AnalyticsClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import ResourceNotFoundError
# IMPORTANT: Ensure your environment is configured for Azure authentication.
# For local development, set environment variables like AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET
# or use Azure CLI/VS Code login. More info: https://learn.microsoft.com/en-us/azure/developer/python/authentication/managed-identity-sdk-azure-cli
try:
# Initialize DefaultAzureCredential. It attempts various authentication methods.
credential = DefaultAzureCredential()
# Replace with your actual Fabric workspace ID and item ID.
# For a runnable example, ensure these environment variables are set.
workspace_id = os.environ.get("FABRIC_WORKSPACE_ID", "<YOUR_FABRIC_WORKSPACE_ID>")
item_id = os.environ.get("FABRIC_ITEM_ID", "<YOUR_FABRIC_ITEM_ID>")
item_type = os.environ.get("FABRIC_ITEM_TYPE", "Lakehouse") # e.g., "Lakehouse", "Warehouse", "Dataset"
if workspace_id == "<YOUR_FABRIC_WORKSPACE_ID>" or item_id == "<YOUR_FABRIC_ITEM_ID>":
print("Please set FABRIC_WORKSPACE_ID and FABRIC_ITEM_ID environment variables, or replace placeholders in the code.")
exit(1)
client = AnalyticsClient(credential=credential)
print(f"Attempting to get item: {item_id} of type {item_type} in workspace {workspace_id}")
# Example: Get a specific Fabric item (e.g., Lakehouse, Warehouse, Dataset)
item_info = client.get_item(workspace_id=workspace_id, item_id=item_id, item_type=item_type)
print(f"Successfully retrieved item: {item_info.display_name} (ID: {item_info.id})")
print(f"Description: {item_info.description or 'No description'}")
# Example: List items in a workspace
print(f"\nListing first 3 items in workspace {workspace_id}:")
items_list_response = client.list_items(workspace_id=workspace_id)
if items_list_response.value:
for i, item in enumerate(items_list_response.value):
if i >= 3:
break
print(f"- {item.display_name} (Type: {item.type}, ID: {item.id})")
else:
print("No items found or insufficient permissions.")
except ResourceNotFoundError as e:
print(f"Error: Resource not found. Please check workspace ID, item ID, item type, and permissions. Details: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
print("Ensure your Azure environment is set up correctly and you have sufficient permissions in Fabric.")