cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
guibovo Frequent Visitor
Frequent Visitor

Power BI Embedded Tracking visual filters (slicers)

Hello, I would like to know if there is a way to track visual filters (slicers) that are being applied in my embedded reports.

 

If there is, could some one tell me if there is a documentation about that? 

 

Or if there is no documentantion about that, please, how could I do this?

 

Thank you.

1 ACCEPTED SOLUTION

Accepted Solutions
guibovo Frequent Visitor
Frequent Visitor

Re: Power BI Embedded Tracking visual filters (slicers)

I have found a way to do that, not as beatiful as I want, but still a nice solution.

 

To those who are interested in this same case scenario, I have used PowerBI Javascript API, and with this API  to get all pages (report.getPages()) and run it to find the active page (page.isActive), then I get all visuals (page.getVisuals()) and filter it by slicers (visual.type === 'slicer'), by there I get a list of all slicers in my page, to get values of filtered slicers I simply check if the slicer has filters (it is an array), and if it do, I add to an array to save it later.

 

Long story short :

User PowerBI Javascript API -> get all pages of report -> get active page -> get all visuals in page -> filter by slicer -> get all slicers that have been filtered -> get slicer state to know what have been done to this filter -> do whatever you need with it.

 

const isSlicer = visual => visual.type === 'slicer';

const isPageActive = page => page.isActive;

...
  let embeddedReport = powerbi.embed(dashboardContainer, config);
  embeddedReport.on('rendered', function (event) {
    embeddedReport.getPages().then(pages => {
      activePage = pages.filter(isPageActive)[0];
      activePage.getVisuals().then(visuals => {
        slicers = visuals.filter(isSlicer);
        filteredSlicers = [];
        slicers.forEach(async slicer => {
          slicer.getSlicerState().then(slicerState => {
            if(slicerState.filters.length > 0) filteredSlicers.push(slicerState)
          })
        })
      });
    });
....

View solution in original post

3 REPLIES 3
Super User II
Super User II

Re: Power BI Embedded Tracking visual filters (slicers)

Hi @guibovo ,

 

I don't think there is such a capability to track the slicers which applied on the runtime.

 

You can post that in the Idea Forum https://ideas.powerbi.com/forums/265200-power-bi-ideas

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




guibovo Frequent Visitor
Frequent Visitor

Re: Power BI Embedded Tracking visual filters (slicers)

I have found a way to do that, not as beatiful as I want, but still a nice solution.

 

To those who are interested in this same case scenario, I have used PowerBI Javascript API, and with this API  to get all pages (report.getPages()) and run it to find the active page (page.isActive), then I get all visuals (page.getVisuals()) and filter it by slicers (visual.type === 'slicer'), by there I get a list of all slicers in my page, to get values of filtered slicers I simply check if the slicer has filters (it is an array), and if it do, I add to an array to save it later.

 

Long story short :

User PowerBI Javascript API -> get all pages of report -> get active page -> get all visuals in page -> filter by slicer -> get all slicers that have been filtered -> get slicer state to know what have been done to this filter -> do whatever you need with it.

 

const isSlicer = visual => visual.type === 'slicer';

const isPageActive = page => page.isActive;

...
  let embeddedReport = powerbi.embed(dashboardContainer, config);
  embeddedReport.on('rendered', function (event) {
    embeddedReport.getPages().then(pages => {
      activePage = pages.filter(isPageActive)[0];
      activePage.getVisuals().then(visuals => {
        slicers = visuals.filter(isSlicer);
        filteredSlicers = [];
        slicers.forEach(async slicer => {
          slicer.getSlicerState().then(slicerState => {
            if(slicerState.filters.length > 0) filteredSlicers.push(slicerState)
          })
        })
      });
    });
....

View solution in original post

andyparkerson Frequent Visitor
Frequent Visitor

Re: Power BI Embedded Tracking visual filters (slicers)

You can go one further and look at the table in the filters in the slicer states. I do this and grab all of the ones whose tables are 'DimDate'. Those are the date slicers.

Then I can set the value to any desired date via slicer.setSlicerState().

This enables me to use a bootstrap javascript date picker instead of the radio button slicer.

Helpful resources

Announcements
Exclusive LIVE Community Event #3 – Ask Arun Anything

Exclusive LIVE Community Event #3 – Ask Arun Anything

Join us in the third Triple A event!

Meet the 2020 Season 1 Power BI Super Users!

Meet the 2020 Season 1 Power BI Super Users!

It’s the start of a new Super User season! Learn all about the new Super Users and brand-new tiered recognition system.

Super User Challenge: Can You Solve These?

Super User Challenge: Can You Solve These?

We're celebrating the start of the New Super User season with our first ever Super User 'Can You Solve These?' challenge.

January 2020 Community Highlights

January 2020 Community Highlights

Make sure you didn't miss any of the things that happened in the community in January!

Top Solution Authors
Top Kudoed Authors