Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
8 years ago
Solved

How to call PostDatasetInGroup() to create datasets populated by an OData service?

I want to write a C# program to automate the creation of datasets in an app workspace in Power BI Service. I want the program to create 50 datasets by posting JSON dataset definitions to PostDatasetInGroup() 50 times. Each time the program calls PostDatasetInGroup() I want it to:

 

  1. Give the dataset a unique name
  2. Define a table in the dataset
  3. Set the Datasource property of the dataset to specify an OData service hosted in the cloud
  4. After calling PostDatasetInGroup(), the program will call the Refresh API, and that dataset will query the OData service to get its data (it will _not_ call PostRowsInGroup())

My first question: is this possible? In particular, are steps 3 and 4 possible?

 

I have read this tutorial, which explains how to do steps 1 and 2, but says nothing about whether step 3 is possible: https://docs.microsoft.com/en-us/power-bi/developer/walkthrough-push-data-create-dataset

 

Second question: if step 3 is possible, how do I correctly define the Datasource property in JSON, so as to specify that the data comes from an OData service? I've found no examples.

 

Here is the documentation for PostDatasetInGroup(), where it discusses the Datasource property (and its dependent type, DatasourceConnectionDetails), but again, gives no examples, and specifically no example of how to specify in JSON that the datasource is an OData service: https://docs.microsoft.com/en-us/rest/api/power-bi/pushdatasets/datasets_postdatasetingroup#datasourceconnectiondetails

 

So if the answer to my first question is No, then I'd appreciate someone saying so. If it is Yes, then I'd appreciate some help figuring out how to write the JSON.

 

Thanks,

 

Richard

4 Replies

  • v-jiascu-msft's avatar
    v-jiascu-msft
    Microsoft Employee

    Hi Anonymous,

     

    I'm afraid these documents can't be applied in your scenario. The datasets created through APIs are push dataset. The workaround is getting data from the OData service and pushing them into the dataset.

     

    Best Regards,

    Dale

    • Anonymous's avatar
      Anonymous
      Not applicable

      Dale,

       

      Unfortunately, that's what I suspected.

       

      Is there an Suggestion Box where we can vote on this issue? If not I might create one.

       

      Thanks,


      Richard