Tutorial: Crear un objeto visual de Power BI con tecnología de R

Como desarrollador, puede crear sus propios objetos visuales de Power BI. Estos objetos visuales los puede utilizar usted, su organización o terceros.

Este artículo es una guía paso a paso para crear un objeto visual con tecnología de R para Power BI.

En este tutorial, obtendrá información sobre cómo:

  • Crear un objeto visual con tecnología de R
  • Editar el script de R en Power BI Desktop
  • Agregar bibliotecas al archivo de dependencias del objeto visual
  • Agregar una propiedad estática

Requisitos previos

Introducción

  1. Prepare datos de ejemplo para el objeto visual. Puede guardar estos valores en una base de datos de Excel o en un archivo .csv, e importarlo a Power BI Desktop.

    Nº.Mes Total de unidades
    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. Para crear un objeto visual, abra PowerShell o Terminal, y ejecute el comando siguiente:

    pbiviz new rVisualSample -t rvisual
    

    Este comando crea una carpeta para el objeto visual rVisualSample. La estructura se basa en la plantilla rvisual. Crea un archivo denominado script.r en la carpeta raíz del objeto visual. Este archivo contiene el script de R que se ejecuta para generar la imagen cuando se representa el objeto visual. Puede crear el script de R en Power BI Desktop.

  3. Desde el directorio rVisualSample recién creado, ejecute el comando siguiente:

    pbiviz start
    
  4. En Power BI Desktop, seleccione Objeto visual de script de R:

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

  5. Para asignar datos al objeto visual de desarrollador, arrastre MonthNo y Total units (Unidades totales) hasta Valores para el objeto visual.

    Screenshot showing where to add data to values.

  6. Establezca el tipo de agregación de Total units (Unidades totales) en No resumir.

    Screenshot of menu with option for not summarizing data.

  7. En el editor de scripts de R de Power BI Desktop, escriba lo siguiente:

    plot(dataset)
    

    Este comando crea un gráfico de dispersión utilizando los valores del modelo semántico como entrada.

  8. Seleccione el icono Ejecutar script para ver el resultado.

    Screenshot of R visual chart with data.

Edición del script de R

El script de R se puede modificar para crear otros tipos de objetos visuales. A continuación se creará un gráfico de líneas.

  1. Pegue el código de R siguiente en el Editor de scripts de 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. Seleccione el icono Ejecutar script para ver el resultado.

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

  3. Cuando el script de R esté listo, cópielo en el archivo script.r ubicado en el directorio raíz del proyecto de objeto visual.

  4. En el archivo capabilities.json, cambie dataRoles: name a dataset (conjunto de datos), y establezca la entrada dataViewMappings en dataset.

    {
      "dataRoles": [
        {
          "displayName": "Values",
          "kind": "GroupingOrMeasure",
          "name": "dataset"
        }
      ],
      "dataViewMappings": [
        {
          "scriptResult": {
            "dataInput": {
              "table": {
                "rows": {
                  "select": [
                    {
                      "for": {
                        "in": "dataset"
                      }
                    }
                  ],
                  "dataReductionAlgorithm": {
                    "top": {}
                  }
                }
              }
            },
            ...
          }
        }
      ],
    }
    
  5. Agregue el código siguiente para permitir el cambio de tamaño de la imagen en el archivo 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";
      }
    

Incorporación de bibliotecas a un paquete de objetos visuales

El paquete corrplot crea una visualización gráfica de una matriz de correlación. Para más información sobre corrplot, consulte una introducción al paquete corrplot.

  1. Agregue la dependencia de biblioteca corrplot al archivo dependencies.json. Este es un ejemplo del contenido de archivo:

    {
      "cranPackages": [
        {
          "name": "corrplot",
          "displayName": "corrplot",
          "url": "https://cran.r-project.org/web/packages/corrplot/"
        }
      ]
    }
    
  2. Ahora puede empezar a usar el paquete corrplot en el archivo script.r.

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

    El resultado de usar el paquete corrplot es similar a este ejemplo:

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

Adición de una propiedad estática al panel de propiedades

Ahora que tiene un objeto visual corrplot básico, se agregarán propiedades al panel de propiedades que permiten al usuario cambiar la apariencia del objeto visual.

El argumento method se usa para configurar la forma de los puntos de datos. El script predeterminado usa un círculo. Modifique el objeto visual para permitir que el usuario elija entre varias opciones.

  1. Defina un elemento object con el nombre settings en el archivo capabilities.json y asígnele las propiedades siguientes.

    "settings": {
      "properties": {
        "method": {
          "type": {
            "enumeration": [
              { "value": "circle" },
              { "value": "square" },
              { "value": "ellipse" },
              { "value": "number" },
              { "value": "shade" },
              { "value": "color" },
              { "value": "pie" }
            ]
          }
        }
      }
    }
    
  2. Abra el archivo src/settings.ts. Cree una clase VisualCardSettings con las propiedades públicas method, name, displayName y slices como se muestra en el cuadro de código siguiente.

    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];
    }
    

    Después de estos pasos, puede cambiar la propiedad del objeto visual.

    Screenshot of R visual settings.

    Por último, el script de R debe tener una propiedad predeterminada. Si el usuario no cambia el valor de propiedad (en este caso, el valor de forma), el objeto visual usa este valor.

    En el caso de las variables en tiempo de ejecución de R para las propiedades, la convención de nomenclatura es <objectname>_<propertyname>, en este caso, settings_method.

  3. Ejecute el script de R siguiente:

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

Empaquetado e importación del objeto visual

Ahora puede empaquetar el objeto visual e importarlo a cualquier informe de Power BI.

  1. Rellene los valores displayName, supportUrl, description, y name y email del creador, y cualquier otra información importante del archivo pbivis.json.

  2. Si quiere cambiar el icono del objeto visual en el panel de visualización, reemplace el archivo icon.png de la carpeta assets.

  3. Ejecute lo siguiente desde el directorio raíz del objeto visual:

    pbiviz package
    

    Para obtener más información sobre el empaquetado del objeto visual, vea Empaquetado del objeto visual personalizado.

  4. Importe el archivo pbiviz del objeto visual a cualquier informe de Power BI. Vea Importación de un archivo de objeto visual desde el equipo local a Power BI para obtener instrucciones sobre cómo hacerlo.

  5. El objeto visual final es similar al ejemplo siguiente:

Screenshot of R visual settings with changed value.