How to create conversational filters in Power BI Copilot
Learn how to create conversational filters in Power BI Copilot so users can filter reports using natural language. This is useful to make reports more accessible and reduce the need to create multiple manual slicers. With a simple implementation you can allow a question like "Mostrar receitas no Norte no último trimestre" to automatically apply filters to visuals and present coherent results.
Prerequisites
- Account with a license that includes Copilot in Power BI and access to the report to edit. Confirm that you have edit permissions in the workspace where the report is published.
- Power BI report (.pbix) published in a workspace with OneLake/Power BI Service. Ideally the model is up to date and with automatic refresh configured (e.g.: daily refresh).
- Data model with well-defined columns (e.g.: Product, Region, Date). Key columns should have clean data: for example, Region with fewer than 50 unique values makes mapping easier.
Step 1: Identify fields that should be filterable by natural language
Choose which fields users will typically ask about in natural language (e.g.: Category, Region, Segment). Create a short list to start — many complex filters make the experience confusing. For example, identify 3 to 5 critical fields (Region, ProductCategory, SalesChannel). If your model has 200 columns, focus on the 10 most used in reports: these usually account for 80% of interactions.
Step 2: Create synonym mapping tables in the model
So Copilot understands variations (e.g.: "vendas na zona norte", "Norte", "Zona Norte"), create a simple table in Power BI with synonyms. This table lets you map free-text terms to canonical values and reduces interpretation failures. You can keep this table small (100–500 rows) and expand it based on feedback.
// Exemplo de tabela Synonyms criada em Power Query (M)
let
Source = Table.FromRecords({
[Canonical="Norte", Synonym="Norte"],
[Canonical="Norte", Synonym="Zona Norte"],
[Canonical="Norte", Synonym="N."],
[Canonical="Sul", Synonym="Sul"],
[Canonical="Sul", Synonym="Zona Sul"]
}),
Renamed = Table.RenameColumns(Source,{{"Canonical","RegionCanonical"},{"Synonym","RegionSynonym"}})
in
Renamed
Practical example: if your report covers 4 regions (Norte, Centro, Sul, Ilhas), the table can have 12–20 synonyms to capture abbreviations, local names and common mistakes.
Step 3: Relate the synonyms table to the main dimension
Create a relationship between the canonical column of the synonyms table and the Region dimension in the model. Use a Many-to-One relationship (many synonyms → 1 region) so filtering works correctly. Set the filter direction so context flows from the main dimension to fact tables; typically the relationship is Single direction and active.
Step 4: Expose metadata and useful descriptions for Copilot
Add descriptions to important columns (Model view -> Column tools -> Description). Explain terms and synonyms so Copilot can interpret intentions like "faturação" = "Revenue". For example, in the Revenue column put the description "Faturação em euros, deduz devoluções". These descriptions help Copilot map natural language to technical fields and reduce ambiguities when there are similarly named fields.
Step 5: Create support measures for conversational filtering
Create a measure that returns values when a conversational filter is applied. This helps Copilot know that a region was selected from the synonym mapping. Measures can also provide context in cards and dynamic titles.
// Exemplo DAX: SelectedRegionName
SelectedRegionName =
VAR sel = SELECTEDVALUE('Region'[RegionName])
RETURN IF(NOT(ISBLANK(sel)), sel, "Todas")
You can complement with a measure that counts occurrences or displays a quick summary, for example: "TotalRevenueSelected" that shows the total filtered by conversational inputs. These measures help the user confirm the filter was applied (for example, showing "Norte — €1.2M" in the report title).
Step 6: Test prompts in Copilot with practical examples
Open Copilot in Power BI Service and test prompts such as: "Mostrar receitas no Norte no último trimestre" or "Filtra por Zona Norte". Observe whether Copilot applies the correct filter and uses the measure to present context. Test variations: with and without diacritics, with abbreviations and full phrases. For example:
- "Receita Norte Q2"
- "Mostrar vendas N."
- "Filtra por Zona Sul e por Produto = 'A'"
Step 7: Adjust mappings and train with examples
Record the phrases users use most and add them to the synonyms table. If Copilot misinterprets, add descriptions or expand the table. This is iterative: more examples improve accuracy. Ideally collect 50–200 real examples in the first month and adjust the dictionary. Maintain a monthly review process to add new synonyms and remove ambiguities.
Verify the result
Confirm that Copilot correctly applies filters requested via natural language: try several variations (e.g.: "vendas Norte", "zona norte", "N.") and verify that visuals update and that the SelectedRegionName measure shows the expected value. Performance: validate that queries do not make the report slow; if necessary optimize relationships or queries in Power Query.
Conclusion
By creating synonym tables, adding descriptions and creating support measures, you turn Power BI Copilot into a more robust natural-language filtering tool. Next steps: automate synonym import from a file or integrate user feedback to expand the dictionary. Tip: start with a few critical entities and expand as you receive common errors or repeated requests. With regular iteration, you can reduce misinterpreted queries by 30–50% and increase user satisfaction.