Forum Discussion
Power BI Embedded API - Updating a specific table in dataset
- 3 years ago
I tried this but it still did not work.
After looking into details I think the issue is around how I code my request body in JSON. Beacause when I used following code it started working and I can see Enhanced API as request type in PBI service.
Following the final code I used:
var body = @"{ " + "\n" + @" ""type"": ""Full"", " + "\n" + @" ""commitMode"": ""transactional"", " + "\n" + @" ""maxParallelism"": 2, " + "\n" + @" ""retryCount"": 2, " + "\n" + @" ""objects"": [ " + "\n" + @" { " + "\n" + @" ""table"": ""TableName"" " + "\n" + @" " + "\n" + @" } " + "\n" + @" ] " + "\n" + @"}"; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", aadService.GetAccessToken()); try { var test = await client.PostAsync($"https://api.powerbi.com/v1.0/myorg/groups/{groupid}/datasets/{datasetId}/refreshes", new StringContent(body, Encoding.UTF8, "application/json")); } catch (System.Exception) { throw; }Thanks Ibendlin for your support.
Thanks Ibendlin. I've also tried that but whenever I try it from Enhanced refresh it works fine but it does not work from my code.
The new code I used is as below:
var accessToken = aadService.GetAccessToken();
//var parameters = new Dictionary<string, string>
//{
// { "table", "{tablename}" },
// { "refreshType", "Full" }
//};
string jsonText = "{\r\n \"type\": \"full\",\r\n \"commitMode\": \"transactional\",\r\n \"objects\": [\r\n {\r\n \"database\": \"{Databasename}\",\r\n \"table\": \"{tableName}\"\r\n }\r\n ],\r\n \"applyRefreshPolicy\": \"false\"\r\n}";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
try
{
var test = await client.PostAsJsonAsync($"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes",
//new StringContent(JsonConvert.SerializeObject(parameters), Encoding.UTF8, "application/json")
jsonText);
}
catch (System.Exception)
{
throw;
}Is it something wrong with my code?
Thanks,
Mihir
- lbendlin3 years agoSuper User
Applyrefreshpolicy = false will force a full refresh of all dependent partitions.
- mihirsp19883 years agoFrequent Visitor
I tried this but it still did not work.
After looking into details I think the issue is around how I code my request body in JSON. Beacause when I used following code it started working and I can see Enhanced API as request type in PBI service.
Following the final code I used:
var body = @"{ " + "\n" + @" ""type"": ""Full"", " + "\n" + @" ""commitMode"": ""transactional"", " + "\n" + @" ""maxParallelism"": 2, " + "\n" + @" ""retryCount"": 2, " + "\n" + @" ""objects"": [ " + "\n" + @" { " + "\n" + @" ""table"": ""TableName"" " + "\n" + @" " + "\n" + @" } " + "\n" + @" ] " + "\n" + @"}"; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", aadService.GetAccessToken()); try { var test = await client.PostAsync($"https://api.powerbi.com/v1.0/myorg/groups/{groupid}/datasets/{datasetId}/refreshes", new StringContent(body, Encoding.UTF8, "application/json")); } catch (System.Exception) { throw; }Thanks Ibendlin for your support.