Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
Hi All,
I’m working with a Sales table in DirectQuery mode from Oracle DB using Power BI Desktop April 2025, which has millions of rows.
Requirement:
I have id and name amt etc columns in the Sales table.
I want two typable text slicers for id and name where I can type a value and press Enter.
Based on the typed values, a table visual below should display
If no value is entered, the table should remain empty.
The query behind should effectively behave like:
Since there are millions of records, the slicers must not preload all IDs or names, but filter directly in SQL only for the entered values.
I attempted Dynamic M Query Parameters, but it doesn’t behave like typable text slicers. It either fails or doesn’t update the visual as expected.
Is there a way in Power BI Desktop (April 2025) to have typable text slicers for id and name that work with Oracle DirectQuery and only fetch the row for the entered values?
Or is there another efficient approach for millions of rows to simulate a “type ID and Name, then press Enter” experience without preloading the whole columns?
Thanks in advance for your guidance!
Solved! Go to Solution.
Hi @prabavathym ,
Thank you for highlighting this important challenge.
In DirectQuery mode, standard Power BI slicers are not intended for free text input or on-demand filtering, as they attempt to retrieve all possible values from the backend, which is impractical for large datasets.
While Dynamic M Query Parameters are available within Power BI, they do not provide the same experience as slicers and lack the ability for users to type and filter directly. This is expected functionality.
To achieve a typable text slicer that passes values directly into the SQL query without preloading, I recommend using a custom visual from AppSource, such as Smart Filter Pro or Text Filter. These visuals support direct text input and are more suitable for DirectQuery scenarios, as they do not attempt to preload all column values.
In summary:
This approach is currently the most effective solution for large-scale Oracle DB with DirectQuery.
Best regards,
Tejaswi
Community Support Team
@prabavathym Hey
I will follow below steps
1) Create two parameters in Power BI: one for Id and one for Name. Make these parameters typable with default values set to empty or null. - Modify the M query to use these parameters as variables within your SQL query:
let
Source = Oracle.Database("YourOracleServer", [Query=
"SELECT * FROM Sales WHERE Id = '" & Text.From(ParamId) & "' AND Name = '" & Text.From(ParamName) & "'"])
in
Source
I will Bind these parameters within Power BI such that they serve as input fields.
i will also use the "What If Parameter" feature to simulate input boxes where you enter values for Id and Name
I will also follow few precaution
Set the visuals to refresh only when changes occur in these parameters, ensuring that Power BI executes the SQL with real-time entry
Use appropriate indexing and Oracle database optimization to ensure efficient querying.
or I will also use this
Leverage custom SQL execution using advanced Power BI scripting or embedding scripts that process upon entry.
Thanks
Harish M
Thank you so much for sharing this approach 🙏 It’s really helpful.
I tried setting it up as you mentioned, but I’m running into an issue — I’m not able to make the parameter work as a typable input. Could you kindly explain how you achieved that part?
Also, if it’s possible, would you be able to share a small sample Power BI file (.pbix) showing the setup? That would really help me (and probably others in the community too) understand the exact implementation.
Thanks again for your guidance!
Hi @prabavathym ,
Thank you for highlighting this important challenge.
In DirectQuery mode, standard Power BI slicers are not intended for free text input or on-demand filtering, as they attempt to retrieve all possible values from the backend, which is impractical for large datasets.
While Dynamic M Query Parameters are available within Power BI, they do not provide the same experience as slicers and lack the ability for users to type and filter directly. This is expected functionality.
To achieve a typable text slicer that passes values directly into the SQL query without preloading, I recommend using a custom visual from AppSource, such as Smart Filter Pro or Text Filter. These visuals support direct text input and are more suitable for DirectQuery scenarios, as they do not attempt to preload all column values.
In summary:
This approach is currently the most effective solution for large-scale Oracle DB with DirectQuery.
Best regards,
Tejaswi
Community Support Team
Hi @prabavathym ,
I wanted to follow up and see if you had a chance to review the information shared. If you have any further questions or need additional assistance, feel free to reach out.
Thank you.
Thank you so much for sharing this approach . It’s really helpful.
I tried setting it up as you mentioned, but I’m running into an issue — I’m not able to make the parameter work as a typable input. Could you kindly explain how you achieved that part?
Also, if it’s possible, would you be able to share a small sample Power BI file (.pbix) showing the setup? That would really help me (and probably others in the community too) understand the exact implementation.
Thanks again for your guidance!
Hi @prabavathym ,
you can create typable text slicers for a large DirectQuery table in Power BI without preloading the data. The most effective solution involves using a custom visual called Text Filter from the marketplace, creating small disconnected tables to capture user input, and then using a DAX measure to apply the filter dynamically. This approach ensures that a highly efficient SQL query is sent directly to your Oracle database.
First, you'll need to add the "Text Filter" custom visual from AppSource. You can find it by clicking the three dots in the Visualizations pane and selecting "Get more visuals". Once added, you must create two small, disconnected tables to hold the user's input. Use the "Enter data" feature on the Home tab to create a table named IdParameter with a single column IdValue, and a second table named NameParameter with a column NameValue. It's crucial that these tables have no relationships to your main Sales table.
On your report canvas, add two of the new "Text Filter" visuals. For the first, use the IdParameter[IdValue] field, and for the second, use NameParameter[NameValue]. Next, add a standard Table visual and populate it with the id, name, and amt columns from your Sales table. This results table will appear empty initially, which is the correct behavior.
The logic connecting the inputs to the data is handled by a DAX measure. Right-click your Sales table, select "New measure," and enter the following formula. This code captures the typed values using SELECTEDVALUE and returns a value of 1 only when the current row in the Sales table matches both inputs.
Filter Sales Table =
VAR SelectedID = SELECTEDVALUE ( IdParameter[IdValue] )
VAR SelectedName = SELECTEDVALUE ( NameParameter[NameValue] )
RETURN
IF (
NOT ( ISBLANK ( SelectedID ) ) && NOT ( ISBLANK ( SelectedName ) ),
IF (
MAX ( Sales[id] ) = SelectedID && MAX ( Sales[name] ) = SelectedName,
1,
0
),
0
)
To activate this logic, select your results table visual. Drag the [Filter Sales Table] measure into the "Filters on this visual" section of the Filters pane. Set the filter's condition to is 1 and click "Apply filter". Now, the table will remain empty until you type values into both text boxes and press Enter, at which point it will display the matching record.
This method is highly performant because it leverages query folding. The Text Filter visuals do not load millions of records; they are just simple input boxes. When you enter text, Power BI translates the DAX measure into an optimized native SQL query with a precise WHERE clause, ensuring your Oracle database does all the heavy lifting and returns only the specific data you requested.
SELECT "id", "name", "amt"
FROM "Sales"
WHERE "id" = 'user_typed_id' AND "name" = 'user_typed_name'
Best regards,
Thank you for the guidance. I have done as you mentioned. But in text slicer it works as search option, value is not passing. I have tested using selected value measure. So value is not passing.
Hi @prabavathym ,
Thanks for reaching out to the Microsoft fabric community forum.
Power BI’s default slicers don’t support free text entry or direct filtering to Oracle in DirectQuery mode, as they always attempt to load all distinct values which isn’t practical with large datasets. The most effective built-in option is Dynamic M Query Parameters, though they don’t allow free-text input.
To achieve the “type ID and Name, then press Enter” functionality, I recommend exploring a custom visual like Smart Filter Pro or Text Filter from AppSource, as these support text entry and are better suited for DirectQuery scenarios. The default slicer cannot deliver this specific capability.
Best Regards,
Tejaswi.
Community Support
Thanks @v-tejrama, that clarifies it. I’ll try Smart Filter Pro / Text Filter from AppSource since default slicers + Dynamic M Query Parameters won’t fit this use case. Appreciate the guidance!
Hi @prabavathym ,
Thank you for providing the details.
The behavior you're experiencing is normal, as Power BI’s default slicers are built to retrieve all distinct column values, which isn’t practical in DirectQuery mode with large tables. That’s why your SELECTEDVALUE test is returning blank the slicer isn’t passing a typed value into the query.
To achieve the functionality of typing an ID or Name and retrieving that specific record from Oracle, I recommend using a text input custom visual, such as Text Filter or Smart Filter Pro from AppSource, rather than the default slicer.
These visuals act as input boxes and don’t preload the entire column. You can then create two small, disconnected parameter tables for Id and Name using “Enter Data,” link them to the custom visuals, and write a DAX measure to compare the entered values with the Sales table.
Apply this measure as a visual-level filter, so the table remains blank until values are entered, and then the query efficiently returns results from Oracle using a WHERE clause for the typed Id and Name.
This approach leverages direct database filtering, preventing any performance issues from loading millions of distinct values into Power BI.
Thank you,
Tejaswi.
Hi @prabavathym ,
I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions.
Thank you.
Hi @prabavathym ,
I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions.
Thank you,
Tejaswi.
Hi @prabavathym ,
I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions.
Thank you,
Tejaswi.
@prabavathym , You have use isfiltered or hasonevalue
New Measure =
var _sel = calculate(isfiltered(Table[Column]), allselected())
return
If( _sel, [Meausre], blank())
HasOneValue , Isfiltered:
https://www.youtube.com/watch?v=cyWVzAQF9YU&t=37959s
https://www.youtube.com/watch?v=hXg3kRFSGjA&list=PLPaNVDMhUXGaaqV92SBD5X2hk3TMNlHhb&index=38
https://youtu.be/cN8AO3_vmlY?t=10120
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!