# Microsoft Power BI AI agent for Slack & Microsoft Teams

Viktor is an AI employee that connects to Microsoft Power BI in one click via OAuth and helps you query data and build dashboards and reports, running 15 Microsoft Power BI actions for you like Get Reports, List Reports, and List Datasets. Ask in plain English in Slack or Microsoft Teams; Viktor does the work in Microsoft Power BI and reports back. Setup takes about two minutes.

- Tool: Microsoft Power BI
- Category: Content & Media
- Connection: One-click OAuth
- Actions available: 15
- Works from: Slack and Microsoft Teams
- Page: https://viktor.com/integrations/microsoft-power-bi

## What can you ask Viktor to do in Microsoft Power BI?

- "Query Microsoft Power BI for last month's key metrics and build a quick dashboard."
- "Pull this week's numbers from Microsoft Power BI and post a summary every Monday."
- "Investigate why a metric moved in Microsoft Power BI last week and report what you find."
- "Watch a key dashboard in Microsoft Power BI for anomalies and alert me with context."

## What can Viktor do in Microsoft Power BI? (15 actions)

- **Execute DAX Query** - Execute a DAX (Data Analysis Expressions) query against a Power BI dataset (semantic model). This is the primary analytics tool — use it to answer questions about values, aggregates, or filtered rows in a dataset. Use List Datasets first to resolve a dataset name → datasetId. The query must be a single valid DAX expression starting with EVALUATE. Table discovery (standard datasets): For datasets published from Power BI Desktop, the REST GET /datasets/{id}/tables endpoint is scoped to push datasets only and will not list tables. Use EVALUATE INFO.TABLES() instead — it returns every table name in the semantic model. Typical agent flow: List Workspaces → List Datasets → Execute DAX Query (EVALUATE INFO.TABLES()) → Execute DAX Query (EVALUATE 'TableName'). Common patterns: • Discover all tables — EVALUATE INFO.TABLES() (use this before querying an unknown dataset) • List all rows of a table — EVALUATE 'Species' • Filter — EVALUATE FILTER('Species', 'Species'[dietType] = "Carnivore") • Top N by column — EVALUATE TOPN(5, 'Species', 'Species'[weightKg], DESC) • Aggregate single value — EVALUATE ROW("Total", SUMX('Species', 'Species'[weightKg])) • Peek at a table's columns — EVALUATE TOPN(0, 'Species') (returns an empty rowset with column names in the response). Limits: max 100,000 rows or 1,000,000 values per query, and DEFINE/multiple-statement queries are not supported via REST. The tenant must have 'Dataset Execute Queries REST API' enabled (admin setting) or the call returns 401/403. Pass workspaceId (from List Workspaces) or workspaceName to target a specific workspace, or omit both for My workspace.
- **Refresh Dataset** - Trigger a refresh of a Power BI dataset. Returns 202 Accepted on success; the request ID is available in the Location response header (last path segment) and x-ms-request-id header — use Get Refresh History to check status. Use List Datasets first to resolve a dataset name → datasetId. Pass workspaceId (from List Workspaces) or workspaceName to target a specific workspace, or omit both for My workspace. notifyOption controls email notifications on refresh outcome: NoNotification (default), MailOnCompletion, or MailOnFailure. Power BI Pro licenses allow up to 8 scheduled refreshes per day; Premium allows 48. Note: Push datasets accept this endpoint but the refresh is metadata-only (tile refresh), not a data refresh — no cancellable history entry is produced.
- **List Workspaces** - List the Power BI workspaces (groups) the authenticated user can access. Use this tool first whenever the user refers to a workspace by name — it returns the id you need to pass as workspaceId to other tools. Power BI has no /me endpoint, so the set of accessible workspaces is the user's primary context (the 'who am I' signal for this app). Every item in the response includes id, name, isReadOnly, isOnDedicatedCapacity, and type. Note: when a user says 'my workspace' without a name, they may mean personal My workspace (implicit — pass no workspaceId to other tools) OR a specific named workspace — ask only if ambiguous.
- **List Reports** - List Power BI reports in a workspace. Defaults to the authenticated user's personal My workspace when no workspace is specified. Pass workspaceId (preferred, from List Workspaces) OR workspaceName to scope to a specific workspace — the tool resolves the name to an ID server-side. Each report includes id, name, webUrl, embedUrl, datasetId, and reportType (PowerBIReport or PaginatedReport). Note: reports cannot be created via the REST API — they are published from Power BI Desktop.
- **List Datasets** - List Power BI datasets (semantic models) in a workspace. Defaults to the authenticated user's personal My workspace when no workspace is specified. Pass workspaceId (preferred, from List Workspaces) OR workspaceName to scope to a specific workspace. Each dataset includes id, name, webUrl, addRowsAPIEnabled (true for Push Datasets), isRefreshable, and defaultMode (Push, Streaming, PushStreaming, AsOnPrem, AsAzure). Use this tool to resolve a dataset name → ID before calling Refresh Dataset, Execute DAX Query, Get Refresh History, or Add Rows To Push Dataset. For push-dataset row inserts, call the dataset's GET tables endpoint (not exposed as a separate tool) by inspecting the dataset's name → tables are defined at dataset creation; the table name is the string configured at creation time (e.g., Species).
- **List Dashboards** - List Power BI dashboards in a workspace. Defaults to the authenticated user's personal My workspace when no workspace is specified. Pass workspaceId (preferred, from List Workspaces) OR workspaceName to scope to a specific workspace. Each dashboard includes id, displayName, isReadOnly, webUrl, and embedUrl. Note: dashboards cannot be created via the REST API — they are built interactively in the Power BI service.
- **Get Reports** - Get reports from a Power BI workspace.
- **Get Report by id** - Retrieve metadata for a single Power BI report by ID. Uses My workspace by default; set Workspace (Group) ID for a specific workspace.
- **Get Refresh History** - Get the refresh history for a Power BI dataset. Use List Datasets first to resolve a dataset name → datasetId. Pass workspaceId (from List Workspaces) or workspaceName to scope to a specific workspace, or omit both for My workspace. Each entry includes requestId, refreshType (OnDemand, Scheduled, ViaApi, etc.), startTime, endTime, status (Completed, Failed, Disabled, Cancelled, Unknown — Unknown means still in progress), and serviceExceptionJson on failures.
- **Export Report** - Export a Power BI report to a file format such as PDF, PPTX, or PNG. Requires a report ID (use List Reports to find it) and defaults to PDF if no format is given. Pass workspaceId (from List Workspaces) or workspaceName to target a specific workspace, or omit both for My workspace. Supported format values depend on the report type: Power BI reports support PDF, PPTX, PNG. Paginated reports additionally support CSV, XLSX, DOCX, XML, MHTML. This API is Premium-only: requires the workspace to be backed by Premium capacity, Premium Per User, or Embedded capacity. On shared (free) capacity it returns FixedCapacityLimitExceeded / 403. The export is asynchronous — this tool starts the export, then polls until the job reaches Succeeded or Failed (or pollTimeoutSeconds elapses), then downloads the file and returns it as base64 along with the job metadata. PNG exports only work for single-page reports. For PPTX/PDF, pass pages (array of page names, e.g., ["ReportSection", "ReportSection1"]) to limit the export.
- **Add Rows To Push Dataset** - Append rows to a table in a Power BI Push Dataset (streaming / realtime data). Only works for datasets created via the REST API with defaultMode: Push — these datasets expose addRowsAPIEnabled: true on the object returned by List Datasets. Use List Datasets first to resolve a dataset name → datasetId and inspect its tables for the exact tableName (case-sensitive). Pass workspaceId (from List Workspaces) or workspaceName to target a specific workspace, or omit both for My workspace. Rows must match the table's column schema. rows accepts either a JSON array ([{...}, {...}]) or a JSON-stringified array. Each row is an object of columnName → value. Common mistakes: (1) case mismatch on tableName returns 404 — copy the exact string from the dataset's tables array. (2) Sending values that don't match the declared column data type returns RequestedResourceNotFound or DMTSDatasourceHasNoCredentialsError. Push-dataset rows have no individual IDs and cannot be updated or deleted — only appended or bulk-cleared.
- **Get Dataset Refresh** - Triggers a refresh operation for a specified Power BI dataset.
- **Create Dataset** - Creates a new Push Dataset in Power BI.
- **Cancel Dataset Refresh** - Cancels a refresh operation for a specified dataset in Power BI.
- **Add Rows to Dataset Table** - Adds new data rows to the specified table within the specified dataset from My workspace.

## How does Viktor work with Microsoft Power BI?

1. Add Viktor to Slack or Microsoft Teams.
2. Connect Microsoft Power BI with one-click OAuth - Viktor handles authentication.
3. Ask in plain English. Viktor runs the Microsoft Power BI actions, chains them with your other tools when needed, and reports back. Sensitive actions wait for your approval.

## What is a Microsoft Power BI AI agent?

A Microsoft Power BI AI agent is an AI that connects to your Microsoft Power BI account and completes work in it - it doesn't just answer questions about Microsoft Power BI, it takes the actions. Viktor is that agent: an AI employee that works in Microsoft Power BI on your behalf and delivers the finished result in Slack or Microsoft Teams.

Unlike workflow builders such as Zapier or Make, there is nothing to configure - no triggers to map, no workflows to maintain. You describe the outcome in plain English, and Viktor picks the right Microsoft Power BI actions, chains them with the other 3,200+ tools it connects to, and asks for approval before anything sensitive runs.

### About Microsoft Power BI

Visualize any data and integrate the visuals into the apps you use every day with Power BI, a unified platform for self-service and business intelligence.

## Security and permissions

- One-click OAuth - Viktor never sees your password, and you can revoke access at any time.
- Review-first approvals: sensitive Microsoft Power BI actions wait for your sign-off before they run.
- Isolated compute per team, encrypted in transit and at rest - and your data is never used to train models.
- SOC 2 Type 1 compliant, with Type 2 and ISO 27001 in progress.

## FAQ

### Does Viktor integrate with Microsoft Power BI?

Yes. Microsoft Power BI is one of the 3,200+ tools Viktor connects to, via a managed connector. Once connected, anyone on your team can put Viktor to work in Microsoft Power BI from Slack or Microsoft Teams - no workflow builder, no code.

### How do I connect Microsoft Power BI to Viktor?

Ask Viktor in Slack or Microsoft Teams to connect Microsoft Power BI, then approve the one-click OAuth prompt. Viktor never sees your password, handles authentication itself, and starts working right away. Setup takes about two minutes, and you can revoke access at any time.

### What can Viktor do in Microsoft Power BI?

Viktor can run 15 Microsoft Power BI actions, including Get Reports, List Reports, and List Datasets - and chain them with other tools in a single request. In practice that means Viktor helps you query data and build dashboards and reports. If a task spans several actions, Viktor plans the sequence itself and reports back when the work is done.

### Do I need to build workflows to automate Microsoft Power BI?

No. Viktor isn't a workflow builder - there are no triggers to map and no workflows to maintain. You ask for the outcome in plain English in Slack or Microsoft Teams, and Viktor decides which Microsoft Power BI actions to take, runs them, and reports back.

### Is my Microsoft Power BI data secure with Viktor?

Yes. Viktor connects to Microsoft Power BI in one click via OAuth, runs in an isolated environment per team, and never trains models on your data. Sensitive actions wait for your approval, and you can revoke access at any time. Viktor is SOC 2 Type 1 compliant, with Type 2 and ISO 27001 in progress.

### How much does the Microsoft Power BI integration cost?

Nothing extra - every integration, including Microsoft Power BI, is available on every plan. You can start free with up to $100 in credits, no credit card required; paid plans start at $50/month.

### Can Viktor use Microsoft Power BI together with my other tools?

Yes - that's the point. Viktor connects to 3,200+ tools and works across them in a single run: it can pull data from Microsoft Power BI, cross-reference it with another tool - for example Slack or Gmail, and deliver the finished result in Slack or Microsoft Teams.

## Viktor uses Microsoft Power BI together with

- [Slack](https://viktor.com/integrations/slack)
- [Gmail](https://viktor.com/integrations/gmail)
- [Google Sheets](https://viktor.com/integrations/google-sheets)
- [HubSpot](https://viktor.com/integrations/hubspot)
- [Notion](https://viktor.com/integrations/notion)
- [Salesforce](https://viktor.com/integrations/salesforce)

## More Content & Media integrations

- [Webflow](https://viktor.com/integrations/webflow)
- [Mboum](https://viktor.com/integrations/mboum)
- [Wix](https://viktor.com/integrations/wix)
- [Spotify](https://viktor.com/integrations/spotify)
- [Connectwise PSA](https://viktor.com/integrations/connectwise-psa)
- [Twitch](https://viktor.com/integrations/twitch)
- [Mode](https://viktor.com/integrations/mode)
- [WordPress.org](https://viktor.com/integrations/wordpress-org)

## Get started

Viktor is free to start - up to $100 in credits, no credit card required. All 3,200+ integrations are included on every plan. Sign up at https://viktor.com or browse all integrations at https://viktor.com/integrations.
