다음을 통해 공유


자습서: 의미 체계 링크를 사용하여 의미 체계 모델에서 관계 검색

이 자습서에서는 Jupyter Notebook에서 Power BI와 상호 작용하고 SemPy 라이브러리를 사용하여 테이블 간의 관계를 검색하는 방법을 보여 줍니다.

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

  • 의미 체계 링크의 Python 라이브러리(SemPy)를 사용하여 의미 체계 모델(Power BI 데이터 세트)에서 관계를 검색합니다.
  • Power BI와의 통합을 지원하고 데이터 품질 분석을 자동화하는 데 도움이 되는 SemPy의 구성 요소를 사용합니다. 이러한 구성 요소는 다음과 같습니다.
    • FabricDataFrame - 추가 의미 체계 정보로 개선된 pandas와 같은 구조체입니다.
    • 패브릭 작업 영역에서 Notebook으로 의미 체계 모델을 끌어당기는 함수입니다.
    • 함수 종속성에 대한 가설의 평가를 자동화하고 의미 체계 모델에서 관계 위반을 식별하는 함수입니다.

필수 조건

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

  • 패브릭 샘플 GitHub 리포지토리에서 고객 수익성 샘플.pbix고객 수익성 샘플(auto).pbix 의미 체계 모델을 다운로드하여 작업 영역에 업로드합니다.

Notebook에서 팔로우

powerbi_relationships_tutorial.ipynb Notebook은 이 자습서와 함께 제공됩니다.

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

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

코드 실행을 시작하기 전에 Lakehouse를 Notebook에 연결해야 합니다.

Notebook 설정

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

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

    %pip install semantic-link
    
  2. 나중에 필요한 SemPy 모듈의 필요한 가져오기를 수행합니다.

    import sempy.fabric as fabric
    
    from sempy.relationships import plot_relationship_metadata
    from sempy.relationships import find_relationships
    from sempy.fabric import list_relationship_violations
    
  3. 출력 서식 지정에 도움이 되는 구성 옵션을 적용하기 위한 pandas 가져오기:

    import pandas as pd
    pd.set_option('display.max_colwidth', None)
    

의미 체계 모델 살펴보기

이 자습서에서는 표준 샘플 의미 체계 모델 Customer Profitability Sample.pbix를 사용합니다. 의미 체계 모델에 대한 설명은 Power BI에 대한 고객 수익성 샘플을 참조하세요.

  • SemPy의 list_datasets 함수를 사용하여 현재 작업 영역에서 의미 체계 모델을 탐색합니다.

    fabric.list_datasets()
    

이 전자 필기장의 나머지 부분에는 두 가지 버전의 고객 수익성 샘플 의미 체계 모델을 사용합니다.

  • 고객 수익성 샘플: 미리 정의된 테이블 관계가 있는 Power BI 샘플에서 제공되는 의미 체계 모델
  • 고객 수익성 샘플(자동): 동일한 데이터이지만 관계는 Power BI가 자동으로 검색하는 데이터로 제한됩니다.

미리 정의된 의미 체계 모델을 사용하여 샘플 의미 체계 모델 추출

  1. SemPy의 list_relationships 함수를 사용하여 고객 수익성 샘플 의미 체계 모델 내에 미리 정의되고 저장된 관계를 로드합니다. 이 함수는 테이블 형식 개체 모델에서 나열됩니다.

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. SemPy의 relationships plot_relationship_metadata 함수를 사용하여 DataFrame을 그래프로 시각화합니다.

    plot_relationship_metadata(relationships)
    

    의미 체계 모델의 테이블 간 관계 플롯을 보여 주는 스크린샷

이 그래프는 주제 전문가가 Power BI에서 정의한 방식을 반영하므로 이 의미 체계 모델의 테이블 간 관계에 대한 "근거"를 보여 줍니다.

관계 검색 보완

Power BI가 자동으로 검색한 관계로 시작한 경우 더 작은 집합을 갖게 됩니다.

  1. 의미 체계 모델에서 Power BI가 자동으로 검색한 관계를 시각화합니다.

    dataset = "Customer Profitability Sample (auto)"
    autodetected = fabric.list_relationships(dataset)
    plot_relationship_metadata(autodetected)
    

    의미 체계 모델에서 Power BI가 자동으로 검색한 관계를 보여 주는 스크린샷

    Power BI의 자동 검색에서 많은 관계를 놓쳤습니다. 또한 자동 검색된 관계 중 두 가지는 의미상 올바르지 않습니다.

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. 관계를 표로 인쇄합니다.

    autodetected
    

    테이블에 대한 Industry 잘못된 관계가 인덱스 3과 4의 행에 표시됩니다. 이 정보를 사용하여 이러한 행을 제거합니다.

  3. 잘못 식별된 관계를 카드.

    autodetected.drop(index=[3,4], inplace=True)
    autodetected
    

    이제 정확하지만 불완전한 관계가 있습니다.

  4. 다음을 사용하여 plot_relationship_metadata불완전한 관계를 시각화합니다.

    plot_relationship_metadata(autodetected)
    

    잘못된 관계를 제거한 후의 관계 시각화를 보여 주는 스크린샷

  5. SemPy list_tablesread_table 함수를 사용하여 의미 체계 모델에서 모든 테이블을 로드합니다.

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. 테이블 간의 관계를 찾고 로그 find_relationships출력을 검토하여 이 함수의 작동 방식에 대한 몇 가지 인사이트를 얻습니다.

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. 새로 검색된 관계를 시각화합니다.

    plot_relationship_metadata(suggested_relationships_all)
    

    새로 검색된 관계의 시각화를 보여 주는 스크린샷

    SemPy는 모든 관계를 검색할 수 있었습니다.

  8. 매개 변수를 exclude 사용하여 검색을 이전에 식별되지 않은 추가 관계로 제한합니다.

    additional_relationships = find_relationships(
        tables,
        exclude=autodetected,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7
    )
    
    additional_relationships
    

관계 유효성 검사

  1. 먼저 고객 수익성 샘플 의미 체계 모델에서 데이터를 로드합니다.

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. 함수를 사용하여 기본 및 외래 키 값의 겹침을 확인합니다 list_relationship_violations . 함수의 출력을 list_relationships 입력으로 제공합니다.list_relationship_violations

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    관계 위반은 몇 가지 흥미로운 인사이트를 제공합니다. 예를 들어 7개 값 중 1 Fact[Product Key] 개는 존재하지 Product[Product Key]않으며 누락된 키는 다음과 같습니다 50.

예비 데이터 분석은 흥미로운 프로세스이며 데이터 클린. 데이터를 보는 방법, 물어보려는 항목 등에 따라 데이터가 항상 숨기는 것이 있습니다. 의미 체계 링크는 데이터로 더 많은 것을 달성하는 데 사용할 수 있는 새로운 도구를 제공합니다.

의미 체계 링크/SemPy에 대한 다른 자습서를 확인하세요.