Power BI SDKは以下のものがGitHubで公開されています。
- GitHub - Microsoft/PowerBI-CSharp: Welcome to the .NET developer community for Power BI. Here you will find resources for the .NET SDKs for Power BI Embedded.
- GitHub - Microsoft/PowerBI-JavaScript: JavaScript library for embedding Power BI into your apps. Check out the docs website and wiki for more information.
- GitHub - Microsoft/PowerBI-Node: Node SDK and client library for Power BI REST APIs.
JavaScriptはEmbeddedするさいに利用するクライアントサイドで必要なもので、C# SDK は Embedded を操作するものやらASP.NETのヘルパーやらが用意されています。
C# SDKにふくまれる sdk/PowerBI.Api の部分はEmbeddedを操作するREST APIのラッパとなっています。これは、ご多分に漏れずAutoRestによるSwagger.jsonからの自動生成となっています。
入り用があったので、これをJava向けに自動生成しなおし+αしたものを、以下に置いておきました。
READMEにも書いておきましたので特に補足することはないのですが、
JWTの生成や、
PowerBIToken token = PowerBIToken.CreateReportEmbedToken(
workspacename,
workspaceId,
reportId,
username,
null);
String jwt = powerbitoken.Generate(accessKey);
Embeddedのリポートへのアクセスができます。 一部のクラスしか試してないので、すべて動作するかは確認できていません。
TokenCredentials creds = new TokenCredentials("AppKey", key); PowerBIClient client = new PowerBIClientImpl(creds); ServiceResponse<ODataResponseListWorkspace> workspaces = client.getWorkspacesOperations() .getWorkspacesByCollectionName("<<collection name>>"); for (Workspace ws : workspaces.getBody().getValue()) { System.out.printf("%s\n", ws.getWorkspaceId()); ServiceResponse<ODataResponseListReport> reports = client.getReportsOperations().getReports(collectionName, ws.getWorkspaceId()); for (Report report : reports.getBody().getValue()) { System.out.printf(" %s\t%s\t%s\t%s\n", report.getName(), report.getId(), report.getEmbedUrl(), report.getWebUrl()); } }
AutoRestのバージョンが古い(1.6)なので、ちょっと使いにくいクラス群が生成されますが、時間があれば最新で生成し直してみたいと思います。(C#も1.6で生成されているので、そこは会わせました)