This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
I have smilar issue but When I am adding Filter I have multiple parameter so if one of them is blank or null its not throwing filter at all.
following is prototype of my code
<script src="https://npmcdn.com/es6-promise@3.2.1"></script>
<script src="~/localpath/scripts/powerbi.js"></script>
<script>
const filter1= {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Table1",
column: "column1",
},
operator: "In",
values: [$("#val1").val()]
};
const filter2 = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Table2",
column: "column2",
},
operator: "In",
values: [$("#val12").val()],
};
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: models.Permissions.All,
filters: [filter1, filter2],
settings: {
filterPaneEnabled: false,
navContentPaneEnabled: false
}
};
var reportContainer = $('#DivContainer')[0];
// Embed the report and display it within the div container.
var report = powerbi.embed(reportContainer, config);
report.setFilters([filter1, filter2]);
</script>
so If filter2 is blank or null its not filtering Filter1 my charts ges blanks after this
Why dont you just put an if statement around the whole thing? Check the values before even creating the filter object?
<script>
if($("#val1").val() && $("#val12").val()] {
const filter1= {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Table1",
column: "column1",
},
operator: "In",
values: [$("#val1").val()]
};
const filter2 = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Table2",
column: "column2",
},
operator: "In",
values: [$("#val12").val()],
};
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: models.Permissions.All,
filters: [filter1, filter2],
settings: {
filterPaneEnabled: false,
navContentPaneEnabled: false
}
};
var reportContainer = $('#DivContainer')[0];
// Embed the report and display it within the div container.
var report = powerbi.embed(reportContainer, config);
report.setFilters([filter1, filter2]);
}
</script>
You can aslo check that the .val() != "" if you wanted too. If you want filter1 to run even if filter2 is not valid then
<script>
let filter1 = null;
let filter2 = null;
if($("#val1").val() && $("#val1").val() != "") {
filter1= {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Table1",
column: "column1",
},
}
operator: "In",
values: [$("#val1").val()]
};
if($("#val12").val() && && $("#val2").val() != "") {
filter2 = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Table2",
column: "column2",
},
operator: "In",
values: [$("#val12").val()],
};
}
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: models.Permissions.All,
settings: {
filterPaneEnabled: false,
navContentPaneEnabled: false
}
};
var reportContainer = $('#DivContainer')[0];
// Embed the report and display it within the div container.
var report = powerbi.embed(reportContainer, config);
if(filter1 && filter2) {
report.setFilters([filter1, filter2]);
} else if(filter1) {
report.setFilters([filter1]);
} else if(filter2) {
report.setFilters([filter2]);
}
</script>The main thing is to set those only if there are values available, do not set the fitlers in the config, and instead set them where you are below, but make sure the filter does not equal null before adding it. Hope that helps.
Soooo, in theroy.
According to the Wiki https://github.com/Microsoft/PowerBI-JavaScript/wiki/Filters
report.removeFilters();
Will remove the filter, but have never managed to get that to work ?!?!
Also you shouldn't need this line in your code, as you have already applied it in the config
report.setFilters([filter1, filter2]);
So leading into that, you should be able to remove the filters from the config before pulling the report, saving more qureys to PowerBI Embedded
Just after var config{}
Stupid code
if ($("#val1").val() == "" && $("#val12").val() == "") {
config.filters = [];
} else if ($("#val1").val() == "") {
config.filters = [filter2];
} else if ($("#val12").val() == "") {
config.filters = [filter1];
}
Haven't tested or know if syntax is correct lol.
If it works solution it! if you change comment in what you did so others can learn!
Check out the April 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 10 | |
| 8 | |
| 3 | |
| 3 | |
| 2 |