我正在使用powerbiapi直接调用powerbi。 我已成功进行身份验证,可以成功调用以获取所有数据集
var datasets = await _powerBiClient.Datasets.GetDatasetsAsync(_config.GroupId);
它返回我进行身份验证的用户可以访问的所有数据集。
但是,当我拨打任何其他远离上面列出的电话时,我得到了一个NotFound
例外。
var d = await _powerBiClient.Datasets.GetDatasetByIdAsync(_config.GroupId,datasetKey);
或
var d = await _powerBiClient.Datasets.GetDatasetByIdAsync(datasetKey);
或
var r = await _powerBiClient.Datasets.PostRowsAsync(_config.GroupId,getIdResult.Result, tableName,rows);
我什至尝试绕过 api 并直接通过 webrequest 进行调用
string powerBIApiAddRowsUrl = String.Format("https://api.powerbi.com/v1.0/myorg/datasets/{0}/tables/{1}/rows", getIdResult, tableName);
//POST web request to add rows.
//To add rows to a dataset in a group, use the Groups uri: https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/tables/{table_name}/rows
//Change request method to "POST"
HttpWebRequest request = System.Net.WebRequest.Create(powerBIApiAddRowsUrl) as System.Net.HttpWebRequest;
request.KeepAlive = true;
request.Method = "POST";
request.ContentLength = 0;
request.ContentType = "application/json";
这也抛出了NotFound
例外。
查看 PowerBi 文档,我最初将 datasetKey 作为数据集的名称(即"数据集样本"(传入,我切换到传入 Id,就像文档中的 url 示例一样,我仍然得到一个NotFound
。
有人可以让我深入了解问题所在吗?
NotFound 表示您提供的数据集不存在于您提供的组中。 DatasetId 和 GroupId 都应该是 GUID。您可以使用 GET 请求或您拥有的_powerBIClient获取数据集 ID 和组 ID。
GET /v1.0/myorg/groups
GET /v1.0/myorg/groups/<group id>/datasets
GET /v1.0/myorg/groups/<group id>/datasets/<dataset id>
using powerBIClient:
powerBIClient.Datasets.GetDatasetByIdAsync(groupId, datasetId)
请注意,如果您的数据集位于"我的工作区"中,则 API 会有所不同。 对于这种情况,API 是:
GET /v1.0/myorg/datasets
GET /v1.0/myorg/datasets/<dataset Id>
using powerBIClient:
powerBIClient.Datasets.GetDatasetByIdAsync(datasetId)
为了进行验证,您始终可以使用 powerbi.com 中的 URL 提取组 ID 和数据集 ID。 只需尝试从数据集创建报表并查看浏览器 URL。
如果上述方法对您不起作用,请使用_powerBIClient,打开提琴手并捕获传出请求,然后将其粘贴到此处(当然没有授权标头(。