我在更新报表上的数据集参数时遇到麻烦。
过程本身非常简单:
这是我正在使用的代码:
function getDataset_Report(accessToken) {
xmlHttp.open("GET",getReportIDUrl,true);
xmlHttp.setRequestHeader('Authorization', 'Bearer '+accessToken);
xmlHttp.responseType = "json";
xmlHttp.onload = function () {
if (xmlHttp.readyState === xmlHttp.DONE) {
if (xmlHttp.status === 200) {
var d = xmlHttp.response.datasets;
var r = xmlHttp.response.reports;
if (r != 0 && d != 0) {
console.log('---------------start updating parameter----------------')
reportId = r[0].id;
console.log(reportId);
datasetId = d[0].id;
console.log(datasetId);
embUrl = r[0].embedUrl;
clearInterval(set_interval_id);
var changeParamUrl = "https://api.powerbi.com/v1.0/myorg/groups/" + groupId + "/datasets/" + datasetId + "/Default.UpdateParameters";
changeParam(changeParamUrl, accessToken, paramData, datasetId)
console.log('---------------finished updating parameter----------------')
} else {
run_getDataset_Report(accessToken)
}
}
else{
removeLoading();
};
}
}
xmlHttp.send();
}
function changeParam(theUrl,accessToken,paramData, datasetId) {
console.log(paramData);
xmlHttp.open("POST",theUrl,true);
xmlHttp.setRequestHeader('Authorization', 'Bearer '+accessToken);
xmlHttp.setRequestHeader("Content-type","application/json");
xmlHttp.onload = function () {
if (xmlHttp.readyState === xmlHttp.DONE) {
if (xmlHttp.status === 200) {
console.log('---------------start refreshing datasets----------------')
var getDatasourceUri = "https://api.powerbi.com/v1.0/myorg/groups/"+ groupId +"/datasets/" + datasetId + "/datasources"
getDatasourceInfo(getDatasourceUri, accessToken, paramData, datasetId)
console.log('---------------finished refreshing datasets----------------')
}
else{
removeLoading();
};
}
}
xmlHttp.send(paramData);
};
现在关于此问题的奇怪之处是我有3个报告,2个已经存在的报告和1个新报告。 此问题仅发生在我要发布的新报告中。 当我使用此代码更新其他两个参数时,效果很好。
现在,我还比较了新报告和旧报告之间的设置:
我唯一能想到的区别是我的新报告是在更新powerBI桌面后创建的, 但我认为这不会对这个问题产生任何影响。
任何见识将不胜感激。
最好