sql-bi / Pbi-PushDataset

Validate and translate regular Tabular models in Push Datasets, also providing helper functions to clear, populate, and simulate real-time transactions.
MIT License
48 stars 15 forks source link

Model produced by generate command not accepted by REST API of Push Dataset #5

Open sdg002 opened 2 years ago

sdg002 commented 2 years ago

Hi All, I have a BIM file generated by SSDT. This is very basic for now . Just 2 tables.

I want to create a Push dataset.

Step 1 - Generate command

I used the command line PbiPushTools.exe tool with the generate command, as follows

PbiPushTools.exe generate -model "ssdt_model.bim" -o "NewModel.bim"

Step 2 - Check command

I then ran the check command as follows

PbiPushTools.exe check -m  "NewModel.bim"

The output was as follows:

** CHECK model **
Checking model: **\NewModel.bim
Model validated.

Step 3 - REST API to create Push dataset

I used the following REST end point via POSTMAN https://api.powerbi.com/v1.0/myorg/groups/[workspaceid]/datasets as documented by Microsoft here

image

I used the JWT token via Get-PowerBIAccessToken

Question

I was under the impression that the tool would convert a BIM file to a model file compatible with PUSH dataset rest api. Microsoft's REST API for creating a PUSH dataset does not appear to be liking the model file that was created by PbiPushTools.exe. SSDT model attached.

What am I doing wrong?

Thanks, Sau Model - Copy.zip

marcosqlbi commented 2 years ago

The format managed by the Power BI REST API is different from the BIM format. The Publish command in PbiPushTools takes care of the conversion. The BIM file you can get from GENERATE is still a BIM file you can edit with Tabular Editor that complies with the limitations of the push datasets.

Technically, we could generate the JSON file used by the Power BI REST API adding a specific command to do that in the tool, but my concern is that it would create more confusion in how to use the tool. Please, can you clarify the use case for that?

Thanks!

sdg002 commented 2 years ago

Hi @marcosqlbi ,

Let me present the big picture. I am championing the use of Power BI in my organization. While Power BI does a splendid job in many aspects, there are several concerns around the "black box" nature of the PBIX/PBIT files.

The binary nature of PBIT does not let my team do effective GIT integration. We are not able to do a PULL REQUEST review or even CI/CD . These are serious shortcomings which prevents Power BI from getting the seal of recognition from management.

To address the above problems, I am exploring if PUSH datasets is a viable alternative.

To support the above -it is important for us to have a tool that converts the BIM of SSDT to JSON of PUSH Dataset.

Thanks, Sau

sdg002 commented 2 years ago

I just realized that I am complaining too much. Is there anyway, I can contribute to the tool? An additional option which validates and converts BIM to JSON?

marcosqlbi commented 2 years ago

You could use the code in https://github.com/sql-bi/Pbi-PushDataset/blob/main/Sqlbi.PbiPushDataset/SchemaBuilder.cs to get the JSON code, and you might extend the tool with a pull request (I don't know when I could add the command in case - even though it should be a simple extension). However, I think you are going on the wrong path. Instead of using the push dataset, which has big limitations and should be considered as a side dataset rather than THE dataset, you should just use the XMLA endpoint and the TOM library. I suggest that you read this series of articles and use Tabular Editor to edit the BIM file. https://tabulareditor.github.io/2019/02/20/DevOps1.html Publishing it is possible with supported APIs and you'll get the same transparency without sacrificing any feature.

sdg002 commented 2 years ago

Will take another look at Tabular Editor. Thank you.

Does Power BI professional support XMLA end points?

marcosqlbi commented 2 years ago

You need Premium, you can use either Premium Capacity or Premium per User.

sdg002 commented 2 years ago

Ok. I think I understand the picture a better now.

It looks like Premium Per User license will unlock SSDT based model development. This is exactly what would make my company happy. Even though, there will be some disappointment that the overall price goes up.

Please, one final question, does the entire organization need to be on Premium per user model? OR can it just be the model developers with PPU, while report viewers and report authors are on Professional ?

Thanks

marcosqlbi commented 2 years ago

All the users who access a dataset published in a Premium per User capacity must have a Premium per User license. However, if you have more than 200 users, usually it makes sense to consider Premium Capacity. I suggest that you look at the licensing details on Microsoft website, there are tons of articles and details about that. https://docs.microsoft.com/en-us/power-bi/admin/service-premium-per-user-faq