자습서: R 지원 Power BI 시각적 개체 만들기

개발자는 Power BI 시각적 개체를 직접 만들 수 있습니다. 이러한 시각적 개체는 개발자 본인, 본인이 속한 조직 또는 제3자가 사용할 수 있습니다.

이 문서는 Power BI에 대한 R 기반 시각적 개체를 만들기 위한 단계별 가이드입니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • R 지원 시각적 개체 만들기
  • Power BI Desktop에서 R 스크립트 편집
  • 시각적 개체의 종속성 파일에 라이브러리 추가
  • 정적 속성 추가

필수 조건

시작하기

  1. 시각적 개체용 샘플 데이터를 준비합니다. 이러한 값을 Excel 데이터베이스 또는 ‘.csv’ 파일에 저장하고 Power BI Desktop으로 가져올 수 있습니다.

    월 번호 총 단위
    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. 시각적 개체의 ValuesMonthNoTotal units를 끌어와 데이터를 개발자 시각적 개체에 할당합니다.

    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. 파일에서 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. object capabilities.json 파일에서 호출설정을 정의하고 다음 속성을 제공합니다.

    "settings": {
      "properties": {
        "method": {
          "type": {
            "enumeration": [
              { "value": "circle" },
              { "value": "square" },
              { "value": "ellipse" },
              { "value": "number" },
              { "value": "shade" },
              { "value": "color" },
              { "value": "pie" }
            ]
          }
        }
      }
    }
    
  2. src/settings.ts 파일을 엽니다. VisualCardSettings 코드 상자 벨로우에 표시된 것처럼 공용 속성을 displayNamemethodnameslices 사용하여 클래스를 만듭니다.

    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. pbivis.json 파일에 displayName, supportUrl, description, 작성자의 name, email 및 기타 중요한 정보를 입력합니다.

  2. 시각화 창에서 시각적 개체 아이콘을 변경하려면 assets 폴더의 icon.png 파일을 바꿉니다.

  3. 시각적 개체의 루트 디렉터리에서 다음을 실행합니다.

    pbiviz package
    

    시각적 개체를 패키징하는 방법에 대한 자세한 내용은 사용자 지정 시각적 개체 패키징을 참조하세요.

  4. 시각적 개체의 .pbiviz 파일을 Power BI 보고서로 가져옵니다. 이 작업을 수행하는 방법에 대한 지침은 로컬 컴퓨터에서 Power BI로 시각적 파일 가져오기를 참조하세요.

  5. 최종 시각적 개체는 다음 예제와 같습니다.

Screenshot of R visual settings with changed value.