チュートリアル:R を利用した Power BI 視覚エフェクトを作成する

開発者は、Power BI の独自の視覚化を作成できます。 これらの視覚化は、自分で、組織で、またはサードパーティで使用できます。

この記事は、Power BI に R を利用したビジュアルを作成するための詳細な手順です。

このチュートリアルで学習する内容は次のとおりです。

  • R を利用した視覚エフェクトを作成する
  • Power BI Desktop で R スクリプトを編集する
  • ビジュアルの依存関係ファイルにライブラリを追加する
  • 静的プロパティを追加する

前提条件

はじめに

  1. ビジュアルのサンプル データを準備します。 次の値を Excel データベースまたは .csv ファイルに保存して、Power BI Desktop にインポートできます。

    MonthNo 合計ユニット数
    1 2303
    2 2319
    3 1732
    4 1615
    5 1427
    6 2253
    7 1147
    8 1515
    9 2516
    10 3131
    11 3170
    12 2762
  2. ビジュアルを作成するには、PowerShell またはターミナルを開き、次のコマンドを実行します。

    pbiviz new rVisualSample -t rvisual
    

    このコマンドを使って、rVisualSample ビジュアル用に新しいフォルダーを作成します。 構造は、rvisual テンプレートに基づいて作成されます。 ビジュアルのルート フォルダーに script.r という名前のファイルが作成されます。 このファイルには、ビジュアルのレンダリング時にイメージを生成するために実行される R スクリプトが保持されます。 Power BI Desktop で R スクリプトを作成できます。

  3. 新しく作成した rVisualSample ディレクトリから、次のコマンドを実行します。

    pbiviz start
    
  4. Power BI Desktop で、 [R スクリプト ビジュアル] を選択します。

    Screenshot of the R script visual control in the Power BI Desktop.

  5. ビジュアルの [値]MonthNo合計ユニット数をドラッグして、開発者向けビジュアルにデータを割り当てます。

    Screenshot showing where to add data to values.

  6. 合計ユニット数の集計の種類を [集計しない] に設定します。

    Screenshot of menu with option for not summarizing data.

  7. Power BI Desktop の R スクリプト エディターで、以下を入力します。

    plot(dataset)
    

    このコマンドでは、セマンティック モデル内の値を入力として使用して散布図が作成されます。

  8. [スクリプトの実行] アイコンを選択して、結果を確認します。

    Screenshot of R visual chart with data.

R スクリプトの編集

R スクリプトを変更して、他の種類のビジュアルを作成できます。 折れ線グラフを作成しましょう。

  1. 次の R コードを R スクリプト エディターに貼り付けます。

    x <- dataset[,1] # get the first column from semantic model
    y <- dataset[,2] # get the second column from semantic model
    
    columnNames = colnames(dataset) # get column names
    
    plot(x, y, type="n", xlab=columnNames[1], ylab=columnNames[2]) # draw empty plot with axis and labels only
    lines(x, y, col="green") # draw line plot
    
  2. [スクリプトの実行] アイコンを選択して、結果を確認します。

    Screenshot of the result of running the script, which is a line plot.

  3. R スクリプトの準備ができたら、ビジュアル プロジェクトのルート ディレクトリにある script.r ファイルにコピーします。

  4. capabilities.json ファイルで、dataRoles: namedataset に変更し、dataViewMappings 入力を dataset に設定します。

    {
      "dataRoles": [
        {
          "displayName": "Values",
          "kind": "GroupingOrMeasure",
          "name": "dataset"
        }
      ],
      "dataViewMappings": [
        {
          "scriptResult": {
            "dataInput": {
              "table": {
                "rows": {
                  "select": [
                    {
                      "for": {
                        "in": "dataset"
                      }
                    }
                  ],
                  "dataReductionAlgorithm": {
                    "top": {}
                  }
                }
              }
            },
            ...
          }
        }
      ],
    }
    
  5. src/visual.ts ファイルに、画像のサイズ変更をサポートする次のコードを追加します。

      public onResizing(finalViewport: IViewport): void {
          this.imageDiv.style.height = finalViewport.height + "px";
          this.imageDiv.style.width = finalViewport.width + "px";
          this.imageElement.style.height = finalViewport.height + "px";
          this.imageElement.style.width = finalViewport.width + "px";
      }
    

視覚化パッケージにライブラリを追加する

corrplot パッケージを使って、相関マトリックスのグラフィカルな表示を作成します。 corrplot の詳細については、「corrplot パッケージの概要」を参照してください。

  1. corrplot ライブラリの依存関係を dependencies.json ファイルに追加します。 ファイルの内容の例を次に示します。

    {
      "cranPackages": [
        {
          "name": "corrplot",
          "displayName": "corrplot",
          "url": "https://cran.r-project.org/web/packages/corrplot/"
        }
      ]
    }
    
  2. これで、script.r ファイル内の corrplot パッケージの使用を開始できます。

    library(corrplot)
    corr <- cor(dataset)
    corrplot(corr, method="circle", order = "hclust")
    

    corrplot パッケージを使用した結果は、次の例のようになります。

    Screenshot of the visualization pane with four ovals created by corrplot.

プロパティ ペインに静的プロパティを追加する

基本の corrplot ビジュアルを作成したので、プロパティ ペインにプロパティを追加して、ユーザーがビジュアルの外観を変更できるようにしましょう。

method 引数を使用して、データ ポイントの形状を構成します。 既定のスクリプトでは、円が使用されます。 視覚エフェクトを変更して、ユーザーが複数のオプションから選択できるようにします。

  1. capabilities.json ファイルで settings という名前の object を定義し、次のプロパティを指定します。

    "settings": {
      "properties": {
        "method": {
          "type": {
            "enumeration": [
              { "value": "circle" },
              { "value": "square" },
              { "value": "ellipse" },
              { "value": "number" },
              { "value": "shade" },
              { "value": "color" },
              { "value": "pie" }
            ]
          }
        }
      }
    }
    
  2. src/settings.ts ファイルを開きます。 次のコード ボックスに示すように、パブリック プロパティ methodnamedisplayNameslices を使用して VisualCardSettings クラスを作成します。

    import ItemDropdown = formattingSettings.ItemDropdown;
    
    const methodOptions = [
        {
            displayName: "Circle",
            value: "circle"
        },
        {
            displayName: "Square",
            value: "square"
        },
        {
            displayName: "Ellipse",
            value: "ellipse"
        },
        {
            displayName: "Number",
            value: "number"
        },
        {
            displayName: "Shade",
            value: "shade"
        },
        {
            displayName: "Color",
            value: "color"
        },
        {
            displayName: "Pie",
            value: "pie"
        }
    ]
    
    class VisualCardSettings extends FormattingSettingsCard {
        method: FormattingSettingsSlice = new ItemDropdown({
            name: "method",
            displayName: "Method",
            items: methodOptions,
            value: methodOptions[0]
        });
    
        name: string = "settings";
        displayName: string = "Settings";
        slices: Array<FormattingSettingsSlice> = [this.method];
    }
    

    これらの手順の後、視覚エフェクトのプロパティを変更できます。

    Screenshot of R visual settings.

    最後に、R スクリプトには既定のプロパティが必要です。 ユーザーがプロパティ値 (この場合は図形設定) を変更しない場合、この値がビジュアルによって使用されます。

    プロパティの R ランタイム変数の名前付け規則は <objectname>_<propertyname> です。この場合は settings_method です。

  3. 次の R スクリプトを実行します。

    library(corrplot)
    corr <- cor(dataset)
    
    if (!exists("settings_method"))
    {
        settings_method = "circle";
    }
    
    corrplot(corr, method=settings_method, order = "hclust")
    

ビジュアルをパッケージ化してインポートする

ビジュアルをパッケージ化して、任意の Power BI レポートにインポートできるようになりました。

  1. displayNamesupportUrldescription、作成者の nameemail、その他の重要な情報を pbivis.json ファイルに入力します。

  2. 視覚化ペインのビジュアルのアイコンを変更する場合は、assets フォルダー内の icon.png ファイルを置き換えます。

  3. ビジュアルのルート ディレクトリから、以下を実行します。

    pbiviz package
    

    ビジュアルのパッケージ化の詳細については、「カスタム ビジュアルのパッケージ化」を参照してください

  4. ビジュアルの pbiviz ファイルを任意の Power BI レポートにインポートします。 これを行う方法については、「ローカル コンピューターから Power BI に視覚化ファイルをインポートする」を参照してください。

  5. 最終的な視覚エフェクトは、次の例のようになります。

Screenshot of R visual settings with changed value.