Back to Blog
2 min read

Power BI Copilot: Natural Language Analytics for Business Users

Power BI Copilot transforms how business users interact with data. Instead of learning DAX formulas or visualization best practices, users ask questions in natural language and get instant insights. Here’s how to prepare your data models for optimal Copilot experiences.

Optimizing Semantic Models

Well-structured semantic models produce better Copilot responses:

// Add clear descriptions to measures
MEASURE Sales[Total Revenue] =
    SUM(Transactions[Amount])

// Set description in model properties
// Description: "The sum of all transaction amounts in the selected period"

// Create user-friendly synonyms
MEASURE Sales[Total Sales] = [Total Revenue]  // Synonym for discoverability

// Add calculated columns with business context
COLUMN Customers[Customer Segment] =
    SWITCH(
        TRUE(),
        Customers[Lifetime Value] > 10000, "Enterprise",
        Customers[Lifetime Value] > 1000, "Mid-Market",
        "SMB"
    )
// Description: "Customer classification based on lifetime value"

// Create explicit date hierarchies
COLUMN 'Date'[Fiscal Quarter] =
    "FY" & YEAR('Date'[Date]) & " Q" & QUARTER('Date'[Date])

Enabling Copilot Features

Configure your workspace for Copilot integration:

# Power BI REST API configuration
import requests

def enable_copilot_features(workspace_id: str, dataset_id: str, token: str):
    headers = {"Authorization": f"Bearer {token}"}

    # Enable Q&A linguistic schema
    qa_config = {
        "linguisticSchema": {
            "version": "1.1.0",
            "synonyms": [
                {"term": "revenue", "synonyms": ["sales", "income", "earnings"]},
                {"term": "customers", "synonyms": ["clients", "accounts", "buyers"]}
            ],
            "examples": [
                "What was our revenue last quarter?",
                "Show me top 10 customers by sales",
                "Compare this year vs last year"
            ]
        }
    }

    response = requests.patch(
        f"https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}/datasets/{dataset_id}",
        headers=headers,
        json=qa_config
    )
    return response.status_code == 200

Best Practices for Copilot Success

Use descriptive table and column names that match business terminology. Add measure descriptions explaining what each calculation represents. Create question examples that demonstrate common query patterns. The more context you provide in your model, the more accurate Copilot’s responses become.

Test Copilot with actual business questions your users ask and refine your model based on the results.

Michael John Peña

Michael John Peña

Senior Data Engineer based in Sydney. Writing about data, cloud, and technology.