Forum Discussion
Power BI Custom Connector
I'm building a Power BI custom connector for an OData API and would appreciate some guidance from the community.
My connector currently allows users to select a table/entity and load data successfully. However, I'd like to enhance the user experience with two additional capabilities:
Filter Selection Dropdown
Similar to the Advanced Options available in the built-in Web connector, I want to provide users with a dropdown (or similar UI control) to select predefined filter values before the data is loaded.
Ideally, the selected value would be passed as an OData filter parameter to the API request.
Is there a supported way to create dropdowns or dynamic parameter selection screens in a custom connector?
Back Navigation / Re-selection of Table
After a user selects a table/entity, I'd like to provide a way for them to go back and choose a different table without having to restart the connection process.
Is there any concept of a "Back" button or navigation flow within Power Query custom connectors?
If not, what is the recommended approach for handling multi-step selection scenarios?
I've reviewed the custom connector documentation but haven't found clear examples covering these UI/navigation requirements.
If anyone has implemented something similar or can point me to relevant documentation, sample connectors, or best practices, I'd be very grateful.
Thanks in advance!
3 Replies
- v-aatheequeCommunity Support
Hi KeyurPatel14
The requirements can be handled using the standard Power Query custom connector patterns, although there are some UI limitations.- Filter dropdown: You can expose predefined filter values through a connector function parameter using Documentation.AllowedValues. This allows Power Query to present the values as a selection list, and the selected value can then be used to construct the OData $filter query. However, custom connectors don't provide a general framework for creating arbitrary UI controls.
Back/re-selection: Custom connectors don't expose an API to add a custom Back button or control the Navigator's navigation flow. The recommended approach is to return a Navigation Table containing the available entities/tables. Users can then select the required entity from the Navigator rather than restarting the connection.Useful Links : https://learn.microsoft.com/en-us/power-query/handling-navigation-tables
https://learn.microsoft.com/en-us/power-query/handling-resource-path
https://learn.microsoft.com/en-us/power-query/samples-directory
Hope this helps !!
Thank You.
- Filter dropdown: You can expose predefined filter values through a connector function parameter using Documentation.AllowedValues. This allows Power Query to present the values as a selection list, and the selected value can then be used to construct the OData $filter query. However, custom connectors don't provide a general framework for creating arbitrary UI controls.
- ShivekMaharajImpactful Individual
Hi KeyurPatel14,
The Community Support answer covers the main pattern, but I would make one distinction between predefined and dynamically discovered values.
For a known set of filter values, Documentation.AllowedValues is a good fit. Microsoft's function documentation guidance confirms that providing Documentation.AllowedValues changes the normal parameter textbox into a dropdown, so you can take the selected value and use it when constructing your OData $filter.
If the choices themselves need to be retrieved dynamically from the API, I would look at a dynamic navigation table instead.
Microsoft's navigation table guidance supports nested and dynamically generated navigation tables. That lets you model something like:
Filter/category → entity → table
inside the normal Navigator experience.
That also gives you a cleaner answer to the Back/re-selection requirement. Custom connectors don't expose a general UI framework for creating your own Back button or multi-step wizard, but nested navigation tables let the Power Query Navigator handle moving between levels and selecting a different entity.
One thing to watch with dynamic navigation is evaluation. Microsoft notes that navigation nodes are lazy by default, so I would build the tree so API calls happen only as the relevant node is expanded/selected rather than loading every entity up front.
So I would use:
- predefined values → Documentation.AllowedValues
- API-driven/dynamic choices → dynamic navigation table
- multi-step selection → nested navigation tables
That keeps the connector within the Power Query UI patterns rather than trying to build a separate custom interface. - v-aatheequeCommunity Support
We wanted to follow up to check if you’ve had an opportunity to review the previous responses. If you require further assistance, please don’t hesitate to let us know.