Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
I was able to get the rest APIs working quickly in C#. The code works fine without any errors or exceptions, but the PostRows ( ) method didn't seem to work.
The dataset, table, and columns get created fine, but the rows don't seem to get saved/loaded. I verify by going online to Power BI Service and using a table visualization and adding the table columns to it. It does not show the saved data - see screenshot.
Did the rows not save/load? or am I going to the wrong place to see the data?
Thank you for your help.
using package Microsoft.PowerBi.Api
var tableName = "test-table-1";
var table = new Table()
{
Name = tableName,
Columns = new List<Column>()
{
new Column("col1", "string"),
new Column("col2", "string"),
new Column("col3", "string")
}
};
var dataset = await PowerBiClient.Datasets.PostDatasetAsync(new CreateDatasetRequest()
{
Name = "test-dataset-1",
DefaultMode = "Push",
Tables = new List<Table>() {table}
});
var postRows = new PostRowsRequest
{
Rows = new List<object>()
{
new
{
col1 = "sdsdds",
col2 = "rtetete",
col3 = "werwer2423"
},
new
{
col1 = "sd333sdds",
col2 = "rtet234ete",
col3 = "werw1111er"
}
}
};
await PowerBiClient.Datasets.PostRowsAsync(dataset.Id, tableName, postRows);
Solved! Go to Solution.
Further investigation revealed that the sdk doesn't handle serialization of anonymous types and silently blanks them out.
As an example, this can be overcome/verified by specifying serialization settings as below.
PowerBiClient.SerializationSettings.ContractResolver = new DefaultContractResolver(); //anonymous types serialize to blank {} without this
await PowerBiClient.Datasets.PostRowsAsync(dataset.Id, tableName, postRows);
The sdk doesn't have great documentation - almost none actually.
Further investigation revealed that the sdk doesn't handle serialization of anonymous types and silently blanks them out.
As an example, this can be overcome/verified by specifying serialization settings as below.
PowerBiClient.SerializationSettings.ContractResolver = new DefaultContractResolver(); //anonymous types serialize to blank {} without this
await PowerBiClient.Datasets.PostRowsAsync(dataset.Id, tableName, postRows);
The sdk doesn't have great documentation - almost none actually.
I was wondering why it was not working... seems like we have to go see the internal code.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.