Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Power BI SDK Java

Power BI SDKは以下のものがGitHubで公開されています。

JavaScriptはEmbeddedするさいに利用するクライアントサイドで必要なもので、C# SDK は Embedded を操作するものやらASP.NETのヘルパーやらが用意されています。

C# SDKにふくまれる sdk/PowerBI.Api の部分はEmbeddedを操作するREST APIのラッパとなっています。これは、ご多分に漏れずAutoRestによるSwagger.jsonからの自動生成となっています。

入り用があったので、これをJava向けに自動生成しなおし+αしたものを、以下に置いておきました。

github.com

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で生成されているので、そこは会わせました)

Azure Active Directoryの組織アカウントでPower BIにサインインする

備忘録を兼ねて。以下URLの話なのですが、

カスタムの Azure Active Directory テナントを使用して Power BI (無料) にサインアップする | Microsoft Power BI

要点をかいつまむと、

  • PowerBIにサインインするには組織アカウントが必要
  • Azureのアカウントを持っていれば、新しくAADのテナントを作成
  • 組織アカウントを追加しサインアップ
  • でもメールが受け取れなくて確定できないじゃん?

見たいな話になります。

解決解決作として、

  • 組織アカウントの全体管理者でO365にログイン
  • PBI 無料を購入、ただしクレカが必要 f:id:StateMachine:20161213120257p:plain
  • アカウントにPBIの権限付与 f:id:StateMachine:20161213120508p:plain

みたいな形を取るとサインインできます。ちょっと面倒臭いですけど、使ってみたい方や自分の組織アカウントではという方など。