Back to Blog
2 min read

Power BI External Tools: Extending Desktop Capabilities

Power BI Desktop’s External Tools feature enables integration with third-party applications, extending its capabilities for professional development workflows.

essential_tools:
  dax_studio:
    purpose: DAX query and performance analysis
    features:
      - Query execution
      - Performance tracing
      - Documentation queries

  tabular_editor:
    purpose: Advanced model editing
    features:
      - Batch editing
      - Best Practice Analyzer
      - Scripting

  bravo:
    purpose: Format dates, export data
    features:
      - Date table generation
      - Data export
      - Model documentation

  alm_toolkit:
    purpose: Schema comparison
    features:
      - Compare models
      - Deploy changes
      - Track differences

Installing External Tools

// Tool definition file: C:\Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools\mytool.pbitool.json
{
    "version": "1.0",
    "name": "My Custom Tool",
    "description": "Description of the tool",
    "path": "C:\\Tools\\mytool.exe",
    "arguments": "\"%server%\" \"%database%\"",
    "iconData": "data:image/png;base64,..."
}

DAX Studio Usage

-- Performance analysis
EVALUATE
SUMMARIZECOLUMNS(
    'Date'[Year],
    'Product'[Category],
    "Total Sales", [Total Sales]
)

-- Server timings analysis
-- Enable Server Timings before running query
-- Analyze Formula Engine vs Storage Engine time

Creating Custom External Tools

// Simple external tool that connects to the model
using Microsoft.AnalysisServices.AdomdClient;

class Program
{
    static void Main(string[] args)
    {
        var server = args[0];  // localhost:port
        var database = args[1]; // model name

        var connectionString = $"Data Source={server};Initial Catalog={database}";

        using var connection = new AdomdConnection(connectionString);
        connection.Open();

        // Your tool logic here
        Console.WriteLine($"Connected to {database}");
    }
}

Tool Registration

# Register external tool
$toolConfig = @{
    version = "1.0"
    name = "Custom Analysis Tool"
    description = "Analyze Power BI models"
    path = "C:\Tools\analyzer.exe"
    arguments = '"%server%" "%database%"'
} | ConvertTo-Json

$toolPath = "C:\Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools"
$toolConfig | Out-File "$toolPath\analyzer.pbitool.json"

Best Practices

workflow:
  - Use DAX Studio for query development
  - Use Tabular Editor for bulk changes
  - Use ALM Toolkit for deployments
  - Document tool configurations

team_standards:
  - Standardize tool versions
  - Share BPA rules
  - Create reusable scripts
  - Document workflows

Conclusion

External Tools transform Power BI Desktop into a professional development environment:

  • Enhanced DAX development
  • Better performance analysis
  • Automated workflows
  • Team collaboration

Resources

Michael John Peña

Michael John Peña

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