다음을 통해 공유


자습서: Jupyter Notebook에서 Power BI 측정값 추출 및 계산

이 자습서에서는 SemPy(프리뷰)를 사용하여 의미 체계 모델(Power BI 데이터 세트)의 측정값을 계산하는 방법을 보여 줍니다.

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

  • 의미 체계 링크의 Python 라이브러리(SemPy)의 Python 인터페이스를 통해 프로그래밍 방식으로 Power BI 측정값을 평가합니다.
  • AI와 BI 간의 격차를 해소하는 데 도움이 되는 SemPy의 구성 요소에 대해 알아볼 수 있습니다. 이러한 구성 요소는 다음과 같습니다.
    • FabricDataFrame - 추가적인 의미 체계 정보를 통해 향상된 Pandas와 유사한 구조입니다.
    • 원시 데이터, 구성, 측정값을 포함한 의미 체계 모델을 가져올 수 있는 유용한 함수입니다.

필수 조건

  • 왼쪽 탐색 창에서 작업 영역을 선택하여 내 작업 영역을 찾아 선택합니다. 이 작업 영역은 현재 작업 영역이 됩니다.

  • Retail Analysis Sample PBIX.pbix 의미 체계 모델을 다운로드하여 작업 영역에 업로드합니다.

Notebook에서 따라 하기

이 자습서에는 powerbi_measures_tutorial.ipynb Notebook이 함께 제공됩니다.

이 자습서에 함께 제공되는 Notebook을 열려면 데이터 과학 자습서를 위한 시스템 준비의 지침에 따라 Notebook을 작업 영역으로 가져옵니다.

이 페이지에서 코드를 복사하여 붙여넣으려는 경우 새 Notebook을 만들 수 있습니다.

코드 실행을 시작하기 전에 Notebook에 레이크하우스를 연결해야 합니다.

Notebook 설정

이 섹션에서는 필요한 모듈 및 데이터를 통해 Notebook 환경을 설정합니다.

  1. Notebook 내의 %pip 인라인 설치 기능을 사용하여 PyPI에서 SemPy를 설치합니다.

    %pip install semantic-link
    
  2. 나중에 필요한 모듈을 가져옵니다.

    import sempy.fabric as fabric
    
  3. Power BI 작업 영역에 연결할 수 있습니다. 작업 영역의 의미 체계 모델을 나열합니다.

    fabric.list_datasets()
    
  4. 의미 체계 모델을 로드합니다. 이 자습서에서는 소매 분석 샘플 PBIX 의미 체계 모델을 사용합니다.

    dataset = "Retail Analysis Sample PBIX"
    

작업 영역 측정값 나열

다음과 같이 SemPy의 list_measures 함수를 사용하여 의미 체계 모델의 측정값을 나열합니다.

fabric.list_measures(dataset)

측정값 평가

이 섹션에서는 SemPy의 evaluate_measure 함수를 사용하여 다양한 방법으로 측정값을 평가합니다.

원시 측정값 평가

다음 코드에서는 SemPy의 evaluate_measure 함수를 사용하여 ‘평균 판매 영역 크기’라고 하는 미리 구성된 측정값을 계산합니다. 이전 셀의 출력에서 이 측정값의 기본 수식을 볼 수 있습니다.

fabric.evaluate_measure(dataset, measure="Average Selling Area Size")

groupby_columns을 통해 측정값 평가

추가 매개 변수 groupby_columns을 제공하여 측정값 출력을 특정 열별로 그룹화할 수 있습니다.

fabric.evaluate_measure(dataset, measure="Average Selling Area Size", groupby_columns=["Store[Chain]", "Store[DistrictName]"])

이전 코드에서는 의미 체계 모델에서 Chain 테이블의 열 DistrictNameStore으로 그룹화했습니다.

필터를 통해 측정값 평가

filters 매개 변수를 사용하여 특정 열에 대해 결과에 포함할 수 있는 특정 값을 지정할 수도 있습니다.

fabric.evaluate_measure(dataset, \
                        measure="Total Units Last Year", \
                        groupby_columns=["Store[Territory]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]})

이전 코드에서 Store는 테이블의 이름이고, Territory는 열 이름이며, PA는 필터에서 허용하는 값 중 하나입니다.

여러 테이블에서 측정값 평가

의미 체계 모델에서 여러 테이블에 걸쳐 있는 열별로 측정값을 그룹화할 수 있습니다.

fabric.evaluate_measure(dataset, measure="Total Units Last Year", groupby_columns=["Store[Territory]", "Sales[ItemID]"])

여러 측정값 평가

이 함수 evaluate_measure를 사용하면 여러 측정값의 식별자를 제공하고 계산된 값을 동일한 DataFrame에 출력할 수 있습니다.

fabric.evaluate_measure(dataset, measure=["Average Selling Area Size", "Total Stores"], groupby_columns=["Store[Chain]", "Store[DistrictName]"])

Power BI XMLA 커넥터 사용

기본 의미 체계 모델 클라이언트는 Power BI의 REST API를 통해 지원됩니다. 이 클라이언트에서 쿼리를 실행하는 데 문제가 있는 경우 use_xmla=True를 사용하여 백 엔드를 Power BI의 XMLA 인터페이스로 전환할 수 있습니다. SemPy 매개 변수는 XMLA를 사용한 측정값 계산에서도 동일하게 유지됩니다.

fabric.evaluate_measure(dataset, \
                        measure=["Average Selling Area Size", "Total Stores"], \
                        groupby_columns=["Store[Chain]", "Store[DistrictName]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]}, \
                        use_xmla=True)

의미 체계 링크/SemPy에 대한 다른 자습서를 확인해 볼 수 있습니다.