데이터 블로그

Power BI - Venn Diagram by MAQ Software 예제

PowerBI

Venn Diagram by MAQ Software는 벤 다이어그램 형태로 데이터를 표시할 때 사용한다.

원에 표시할 영역은 범례(Legend)에 해당하는 열의 값으로 0, 1을 사용해 제어할 수 있다.



데이터 


Measure

1

0

30

1

1

10

0

1

50


범례로 "남" 열과 "여" 열을 사용할 것이다.

그러면 두 개의 원이 나타난다.


"남", "여" 열의 값이 1, 1 인 두 번째 행은 두 영역이 교차하는 지점(A ∩ B)을 뜻한다.

"남", "여" 열의 값이 1, 0 인 첫 번째 행은 "남"에 해당하는 영역을 뜻한다.

"남", "여" 열의 값이 0, 1 인 세 번째 행은 "여"에 해당하는 영역을 뜻한다.




구성






결과







Power BI - Journey Chart by MAQ Software 예제

PowerBI

Journey Chart by MAQ Software는 계층 정보를 네트워크 형태로 시각화 할 때 사용한다.



데이터 


Category1

Category2

Measure

A

AA

10

A

AB

20

A

AC

15

B

BB

30

B

BC

20

C

CA

15

C

CB

21

C

CC

25



구성





결과







Power BI - Horizontal Funnel by MAQ Software 예제

PowerBI

Horizontal Funnel by MAQ Software 시각화는 퍼널 분석(Funnel Analysis)의 결과를 표시할때 사용한다. 퍼널 분석은 단계별로 일어나는 일련의 행위를 시각화하여 문제가 있는 단계를 찾기위해 사용한다.



데이터


Series PrimaryMeasure SecondMeasure
Visit 3000 1500
Login 1000 500
View 700 350
Buy 50 25



구성





결과



Power BI - Gantt Chart by MAQ Software 예제

PowerBI


Gantt Chart by MAQ Software 시각화는 간트차트를 KPI와 함께 표시한다. Power BI의 기본 Gantt Chart 시각화에 비해 진행률은 표시할 수 없다.




데이터


Category Start End DataLabel KPI Tooltip
요구사항 정리 2018-08-01 2018-08-05 10 1 Tooltip1
기획 2018-08-06 2018-08-15 20 2 Tooltip2
개발 2018-08-16 2018-09-15 30 3 Tooltip3
테스트 2018-09-16 2018-09-30 40 4 Tooltip4




구성



    • 서식 - KPI column type 항목의 값을 Indicator로 바꿔 KPI를 값이 아닌 Y, O, R, G 아이콘 형태로 나오도록 함



결과



'PowerBI' 카테고리의 다른 글

Power BI - Journey Chart by MAQ Software 예제  (0) 2018.09.21
Power BI - Horizontal Funnel by MAQ Software 예제  (0) 2018.09.09
Power BI - Dual KPI 예제  (0) 2018.09.08
Power BI - Bullet Chart 예제  (0) 2018.09.08
Power BI Python 통합  (0) 2018.09.05

Power BI - Dual KPI 예제

PowerBI

Dual KPI는 두 가지 지표를 동시에 보여줄 때 사용한다. 매출과 수익률과 같이 함께 봐야할 지표를 동시에 표시할 때 사용하면 좋을것 같다.




데이터


Axis TopValues BottomValues WarningState Top% Bottom%
2018-01-01 100 100 -1 2018-01-01 2018-01-05
2018-01-02 110 105 1 2018-01-01 2018-01-05
2018-01-03 100 100 -1 2018-01-01 2018-01-05
2018-01-04 120 99 1 2018-01-01 2018-01-05
2018-01-05 130 95 -1 2018-01-01 2018-01-05
2018-01-06 100 100 1 2018-01-01 2018-01-05
2018-01-07 140 92 -1 2018-01-01 2018-01-05
2018-01-08 145 97 1 2018-01-01 2018-01-05
2018-01-09 150 90 1 2018-01-01 2018-01-05



구성



    • Warning state: 하나의 값을 입력해야 한다. 값이 음수라면 시각화 개체 왼쪽 하단에 ! 표시로 빨간 아이콘이 표시되며 현재 상태가 경고임을 표시한다.
    • Top - % change start date: TOP VALUES 증감 계산의 시작일이다. 보통 KPI에 표시된 첫 번째 날과 마지막 날의 증감이 TOPVALUES(xx %) 이렇게 표시되는데, 데이터 첫 번째 날이 아닌, 임의의 날부터 비교하길 원한다면 지정한다.
    • Bottom - % change start date:  BOTTOM VALUES 증감 계산의 시작일이다. 이 예제에서는 2018년 1월 5일과 2018년 1월 9일을 비교한다.




결과


Power BI - Bullet Chart 예제

PowerBI

Bullet Chart는 범주별 현 상황을 목표대비로 시각화하기 좋다.




데이터


범주 대상값 최소 개선필요 만족 양호 매우좋음 최대 대상값2
에어컨 100 120 50 72 96 108 132 144 114
TV 50 30 25 18 24 27 33 36 28.5
냉장고 60 50 30 30 40 45 55 60 47.5
세탁기 30 10 15 6 8 9 11 12 9.5



구성



개선 필요, 만족, 양호, 매우 좋음은 설정에서 값에 대한 비율로 설정할 수 있다.




결과



Power BI Python 통합

PowerBI

최근에 Power BI 2018년 8월 업데이트를 적용하고 옵션을 확인하던 도중 미리 보기 기능에 Python 지원이라는 문구가 보였다. 대박!!! 그토록 염원하던 기능인데, 프리뷰지만 지원한다니 간단히 테스트를 하고 결과를 정리한다.


먼저 Power BI Desktop 옵션에서 미리 보기 기능을 보면 Python 지원을 활성화 할 수 있다.





Python 지원을 활성화하면 시각화 개체 목록에 Python 시각적 개체가 추가된다.





다시 Power BI Desktop에서 옵션을 열어보면 Python 관련 설정이 보인다. Python이 설치된 경로와 IDE에 대해 설정을 할 수 있다. Python 버전에 대한 안내는 없지만 3.6 버전에서 잘 동작하였다. Python IDE은 Python 스크립트를 외부 IDE에서 편집할 수 있게 해준다.





Python 시각적 개체를 보고서 안으로 추가해 보았다. 그러니 화면 아래쪽에 스크립트 편집기 영역이 나타났다. 여기서 바로 스크립트를 작성할 수 있다. 아니면 Python IDE에서 설정한 편집기로 작성중인 스크립트를 띄울 수도 있다.





Python 시각적 개체를 보고서에 추가했으니, 데이터를 지정해보자. 영역에 필요한 필드를 끌어놓으면 된다. 여기서는 간단한 회귀분석을 진행해 보기로 했다. 그래서 x, y 값을 CSV 형식으로 저장한 다음 Power BI Desktop에서 불러와 Python 시각적 개체에 입력하였다.





Python 시각적 개체에 데이터를 입력하니 스크립트 편집기에 뭔가 자동으로 입력된다. 주석으로 처리되어 있지만, 그 내용을 보면 앞에서 입력한 x, y 값을 Pandas Dataframe형식의 dataset이라는 변수로 접근할 수 있음을 알 수 있다. 그리고 필요한 스크립트를 작성해서 데이터를 처리하여 쓰라는 이야기이다.


아무 스크립트를 추가하지 않은 상태에서 Python IDE로 지정한 Visual Studio Code에서 스크립트를 열어 보았다. Python 스크립트 편집기 오른쪽 상단에 버튼을 누르면 바로 열수 있다. Visual Studio Code에 나타난 코드는 아래와 같다.



# Prolog - Auto Generated #
import os, matplotlib.pyplot, uuid, pandas
os.chdir(u'C:/Users/…./PythonEditorWrapper_c6f91fe0-401c-464d-a654-b45c8dcd7871')
dataset = pandas.read_csv('input_df_27b4cbee-ac0c-4f53-90c7-ddbc9d297506.csv')

matplotlib.pyplot.figure(figsize=(5.55555555555556,4.16666666666667))
matplotlib.pyplot.show = lambda args=None,kw=None: matplotlib.pyplot.savefig(str(uuid.uuid1()))
# Original Script. Please update your script content here and once completed copy below section back to the original editing window #
##############################

# Epilog - Auto Generated #
os.chdir(u'C:/Users/…./PythonEditorWrapper_c6f91fe0-401c-464d-a654-b45c8dcd7871')




이제 Power BI Desktop의 데이터를 어떻게 Python에서 불러오는지 명확해진다. Power BI Desktop 데이터를 CSV 형식으로 임시 저장소에  저장하고, 그 파일을 Pandas의 read_csv 메소드로 불러와 dataset 이라는 변수로 접근할 수 있게 해주는 것이다. 또한 Matplotlib가 import 된것을 볼 수 있다. 이것만 보면 모든 것을 알 수 있을듯 하다. Pandas로 데이터를 저장하고, 그 결과는 Matplotlib로 뿌려주는 형식이다.




히스토그램

앞에서 불러온 데이터를 Python 시각적 개체에 나타내어 보자. 먼저 간단하게 히스토그램을 출력해 보았다.


코드

import matplotlib.pyplot as plt
 
plt.hist(dataset['x'], bins=10, facecolor='blue', alpha=0.5)
plt.show()




실행결과




Matplotlib을 import 한것을 보았을 때 결과가 Jupyter Notebook 처럼 나오지 않을까 생각을 했었는데, 그 생각이 맞았다. 이 정도면 Python으로 했던 분석을 Power BI 리포트나 대시보드에 통합하는 것이 문제 없겠다는 생각을 했다.



회귀분석

이번 목표는 기본으로 import 되는 패키지 외에 다른 패키지도 지원하는지 보는 것이다. 다른 패키지도 잘 동작한다면, 그야말로 신세계가 열릴 수 있다. 여기서는 scipy 패키지를 이용해 회귀분석을 수행해 보았다. 추가로 Matplotlib에서 한글 출력 문제가 없는지도 함께 보았다. 그리고 print 문으로 출력하면 어딘가 결과가 혹시나 나올가하여 출력도 해보았다.



코드

import numpy as np
import matplotlib.pyplot as plt

from scipy import stats

plt.scatter(dataset['x'], dataset['y'], c='red', alpha=0.5)
slope, intercept, r_value, p_value, std_err = stats.linregress(dataset['x'], dataset['y'])

plt.text(5,250, 'slope: {}'.format(slope))
plt.text(5,235, 'intercept: {}'.format(intercept))
plt.text(5,220, '결정계수: {}'.format(r_value ** 2))
print("p_value:", p_value)

x_val = np.linspace(0.0, 140.0, 1000)
for predic_x in x_val:
    predic_y = slope * predic_x + intercept
    plt.scatter(predic_x, predic_y, c='blue', alpha=0.5)

plt.show()




실행결과




오호라.. 잘 나온다. 근데 역시나 한글이 깨진다. 해결방법은 구글에서 쉽게 찾을 수 있다. 아래와 같이 코드를 수정(추가) 하였다.


import numpy as np
import matplotlib.pyplot as plt

from scipy import stats
from matplotlib import font_manager, rc

font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
 
plt.scatter(dataset['x'], dataset['y'], c='red', alpha=0.5)
slope, intercept, r_value, p_value, std_err = stats.linregress(dataset['x'], dataset['y'])

plt.text(5,250, 'slope: {}'.format(slope))
plt.text(5,235, 'intercept: {}'.format(intercept))
plt.text(5,220, '결정계수: {}'.format(r_value ** 2))
print("p_value:", p_value)

x_val = np.linspace(0.0, 140.0, 1000)
for predic_x in x_val:
    predic_y = slope * predic_x + intercept
    plt.scatter(predic_x, predic_y, c='blue', alpha=0.5)

plt.show()




결과




이제 한글까지 잘 나온다. 더 많은 패키지를 테스트 해보고 싶었지만, 뭔가 다 확인했다는 마음인지 만사가 귀찮아진다. 구글에서 찾아보니 누가 테스트 해본 결과가 있어 왠만한건 다 되겠구나 싶다. Power BI 블로그에 Python Episode 1 – A New hope라는 글을 보면 Seaborn, Altair, Scikit-Learn, FlashText 등을 테스트한 결과를 볼 수 있다. 모두 잘 나온다.


이제 마지막 테스트만 남았다. 지금까지 작업한 내용을 웹으로 게시하여 웹에서도 잘 나오는지 확인하였다. 결과는 아직 안 된다. 물론 추후 정식 서비스가 될 것이다. 아마도 어느 패키지까지 지원할 것인지, 어떤 이는 이것으로 Machine Learning 돌려서 그 결과도 보려고 할테니 리소스 제한은 어떻게 할 것인지 고심이 많을 것이다.





갈수록 Power BI가 마음에 들어진다.

Power BI에서 Amazon Redshift 연결을 위한 구성

AWS

Power BI에서 Amazon Redshift에 연결하기 위해서는 AWS 보안그룹에서 Power BI쪽 서버들의 아이피 주소를 등록해주어야 한다.


이 작업은 다음 과정을 통해 진행한다.



  1. Power BI 웹 사이트에서 우측 상단의 메뉴에서 [도움말 및 지원] - [Power BI 정보]를 차례로 누른다.


  1. Power BI 정보 창이 나타나면, 데이터 저장 위치를 확인한다. 여기서 데이터 저장 위치가 현재 사용중인 Power BI가 서비스 되고 있는 애저(Azure) 리전을 뜻한다. 아래 화면의 저장 위치 동남 아시아(싱가포르)의 리전은 asiasoutheast 이다.


  1. 다음 사이트에서 애저 데이터센터 아이피 대역대(Microsoft Azure Datacenter IP Ranges)를 정리해 놓은 XML 파일을 다운로드 받는다.


https://www.microsoft.com/en-us/download/details.aspx?id=41653


  1. 앞에서 다운로드 받은 XML 파일을 열어 Power BI가 서비스되고 있는 리전의 아이피 대역을 찾는다. 그리고 필요한 아이피 주소를 AWS 보안그룹에 추가해 즌다.



참고로 애저 리전은 다음 주소에서 확인할 수 있다.

https://azure.microsoft.com/en-us/global-infrastructure/regions/