"Control" of Power BI Visuals - Use a "GO" button and Limit Displayed Results

Hi,

Admittedly, some of these items may not be addressed through DAX calculations, but the items are related to one PBI report page. We have a Power BI report as a company “Directory” of projects and personnel. It is here where the Enterprise DNA community shines in detailing precisely how to accomplish each item.

Item #1 - there is no obvious default value for any slicer to filter the table display of resulting personnel, and the display of every personnel member in the company has no value. Thus, what is the “best practice” or a recommended approach to NOT display results in visualizations before the user makes some form of selection to limit results? This may or may not include a “GO” button. We do see approaches to add measures for each slicer’s “SELECTEDVALUE” (we have 8 slicers) which, in turn, become a filter for the resulting table visualization leading us to think a GO button makes more sense.

Item #2 - Impacted by the volume of rows of staff members in a visual display, a profile photo is being introduced. A table visualization of all personnel will not render for all rows (see #1).
a) Easy one: We will introduce a Toggle button to allow the user to choose whether or not to include profile photos in the results. We’d really like to establish a standard toggle button. Is their a standard toggle icon available & recommended? note: We understand how to use a Toggle button to impact visuals, but want to establish a toggle button look&feel standard.
b) Hard one: Is there a recommended way to control the number of rows which a table visualization renders (with a photo)? For example, 100 rows display or are returned at a time before some action (ex. scrolling or a “next set” arrow button) gets the next series of 100; thereby ensuring proper performance?

I look forward to seeing some great feedback here. I’m sure some effective videos exist, but haven’t quite found the right ones.

Best regards,
Kevin

1 Like

I can pass along that I’ve reasonably addressed having a standard toggle button with bookmarks. Thus, item #1 is effectively complete.

The two questions asked in item #2 remain of great interest, and am still seeking guidance - specific examples, ‘how to’ videos, best practice - in regards to 1) forcing a user selection before results render, and 2) limiting # rows in a table display.

Thanks,
Kevin

@kkieger There are few things that you can do here.

Creating a measure that RANKX each row and then in the Filters Pane you can say [Measure] < 100

Slicers have an apply button that you can use to prevent query execution until you click apply.

2 Likes

Hi @kkieger,
In point 1) force a user selection before the representation of results, do you mean that initially when the slicers have an All value that the data does not appear until the user selects a value?
In the second point 2) limit # rows in a table screen, it may be worth limiting the number of records in the fact table according to a parameter, for example, the first 100, the first 200…
Regards,

I appreciate the responses.

Let’s just address the issue of not displaying any results when one navigates to the report page.
The results render in a table visualization of company employees.
There are seven separate slicers where seldom does a user need to select values from multiple - one or two values from a single slicer will suffice. Columns used as slicers include first name, last name, job title, job location (city), department, operating unit, and project.

When the report page renders, all 5000 employees display which adds no value. We don’t want any employee rows to display in the table visualization until the user provide some slicer value of interest. Thus, adding the “Apply” button to the slicers does not solve this particular issue.

RANKX with a filter [Measure < some limit] for the table visualization got me thinking about record/row counts as a measure. Although RANKX wasn’t a great fit for “ranking” employee team members, I am now using this measure as a filter on the table visual.
ReportCountRows = calculate(countrows(‘Person TeamMember Info’),ALLSELECTED(‘Person TeamMember Info’))

I may still be looking for more recommend ways to both handle and describe what is happening for the report consumer - and would welcome further feedback, but the primary issue is resolved.

Thank you,
Kevin

Hi @kkieger,
In order to ensure that no value is displayed in the table object until the user has selected at least one value in some slicer, you can create a measure for each slicer that counts the number of selected records and then create another measure with the sum of all of these steps above. Finally, you assign this last measure as a filter to the visual object so that it shows the values ​​when it is <> 0.

In this example, I have two slicers on the Products table: By Product Name and By Product ID.

1.) We count the selected Product Names:

Number of Product Name Selected =

VAR _SelectedProductName = CALCULATE (

COUNTROWS ( FILTERS ( Dim_Products[Product Name] ) ),

ALLSELECTED ( Dim_Products )

)

VAR _AllProductName = CALCULATE (

COUNTROWS ( FILTERS ( Dim_Products[Product Name] ) ),

ALL ( Dim_Products )

)

VAR _Result = IF( _SelectedProductName = _AllProductName , 0, _SelectedProductName )

RETURN _Result

2.) We count the selected Product IDs:

Number of Product ID Selected =
VAR _SelectedProductID = CALCULATE (

COUNTROWS ( FILTERS ( Dim_Products[Product ID] ) ),

ALLSELECTED ( Dim_Products )
)

VAR _AllProductID = CALCULATE (

COUNTROWS ( FILTERS ( Dim_Products[Product ID] ) ),

ALL ( Dim_Products )
)
VAR _Result = IF( _SelectedProductID = _AllProductID , 0, _SelectedProductID )

RETURN _Result

3.) We add the previous measure:

View Data = [Number of Product Name Selected] + [Number of Product ID Selected]

4.) We put this measure as a filter in the visual object.

I hope it can be useful to you.

Regards

1 Like

Hello @kkieger, just following up if the response above help you solve your inquiry?

We’ve noticed that no response has been received from you since a few days ago. In case there won’t be any activity on it in the next few days, we’ll be tagging this post as Solved.

Hi @kkieger, due to inactivity, a response on this post has been tagged as “Solution”. If you have any concern related to this topic, you can create a new thread.