자습서: 의미 체계 링크를 사용하여 의미 체계 모델에서 관계 검색
이 자습서에서는 Jupyter Notebook에서 Power BI와 상호 작용하고 SemPy 라이브러리를 사용하여 테이블 간의 관계를 검색하는 방법을 보여 줍니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 의미 체계 링크의 Python 라이브러리(SemPy)를 사용하여 의미 체계 모델(Power BI 데이터 세트)에서 관계를 검색합니다.
- Power BI와의 통합을 지원하고 데이터 품질 분석을 자동화하는 데 도움이 되는 SemPy의 구성 요소를 사용합니다. 이러한 구성 요소는 다음과 같습니다.
- FabricDataFrame - 추가 의미 체계 정보로 개선된 pandas와 같은 구조체입니다.
- 패브릭 작업 영역에서 Notebook으로 의미 체계 모델을 끌어당기는 함수입니다.
- 함수 종속성에 대한 가설의 평가를 자동화하고 의미 체계 모델에서 관계 위반을 식별하는 함수입니다.
필수 조건
Microsoft Fabric 구독을 구매합니다. 또는 무료 Microsoft Fabric 평가판에 등록합니다.
Microsoft Fabric에 로그인합니다.
홈페이지 왼쪽의 환경 전환기를 사용하여 Synapse 데이터 과학 환경으로 전환합니다.
왼쪽 탐색 창에서 작업 영역을 선택하여 작업 영역을 찾아 선택합니다. 이 작업 영역은 현재 작업 영역이 됩니다.
패브릭 샘플 GitHub 리포지토리에서 고객 수익성 샘플.pbix 및 고객 수익성 샘플(auto).pbix 의미 체계 모델을 다운로드하여 작업 영역에 업로드합니다.
Notebook에서 팔로우
powerbi_relationships_tutorial.ipynb Notebook은 이 자습서와 함께 제공됩니다.
이 자습서에 대해 함께 제공되는 Notebook을 열려면 데이터 과학 자습서를 위해 시스템 준비 자습서의 지침에 따라 Notebook을 작업 영역으로 가져옵니다.
이 페이지에서 코드를 복사하여 붙여 넣으면 새 Notebook을 만들 수 있습니다.
코드 실행을 시작하기 전에 Lakehouse를 Notebook에 연결해야 합니다.
Notebook 설정
이 섹션에서는 필요한 모듈 및 데이터를 사용하여 Notebook 환경을 설정합니다.
Notebook 내의
%pip
인라인 설치 기능을 사용하여 PyPI에서 설치SemPy
합니다.%pip install semantic-link
나중에 필요한 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
출력 서식 지정에 도움이 되는 구성 옵션을 적용하기 위한 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가 자동으로 검색하는 데이터로 제한됩니다.
미리 정의된 의미 체계 모델을 사용하여 샘플 의미 체계 모델 추출
SemPy의
list_relationships
함수를 사용하여 고객 수익성 샘플 의미 체계 모델 내에 미리 정의되고 저장된 관계를 로드합니다. 이 함수는 테이블 형식 개체 모델에서 나열됩니다.dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationships
SemPy의
relationships
plot_relationship_metadata
함수를 사용하여 DataFrame을 그래프로 시각화합니다.plot_relationship_metadata(relationships)
이 그래프는 주제 전문가가 Power BI에서 정의한 방식을 반영하므로 이 의미 체계 모델의 테이블 간 관계에 대한 "근거"를 보여 줍니다.
관계 검색 보완
Power BI가 자동으로 검색한 관계로 시작한 경우 더 작은 집합을 갖게 됩니다.
의미 체계 모델에서 Power BI가 자동으로 검색한 관계를 시각화합니다.
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)
Power BI의 자동 검색에서 많은 관계를 놓쳤습니다. 또한 자동 검색된 관계 중 두 가지는 의미상 올바르지 않습니다.
Executive[ID]
->Industry[ID]
BU[Executive_id]
->Industry[ID]
관계를 표로 인쇄합니다.
autodetected
테이블에 대한
Industry
잘못된 관계가 인덱스 3과 4의 행에 표시됩니다. 이 정보를 사용하여 이러한 행을 제거합니다.잘못 식별된 관계를 카드.
autodetected.drop(index=[3,4], inplace=True) autodetected
이제 정확하지만 불완전한 관계가 있습니다.
다음을 사용하여
plot_relationship_metadata
불완전한 관계를 시각화합니다.plot_relationship_metadata(autodetected)
SemPy
list_tables
및read_table
함수를 사용하여 의미 체계 모델에서 모든 테이블을 로드합니다.tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
테이블 간의 관계를 찾고 로그
find_relationships
출력을 검토하여 이 함수의 작동 방식에 대한 몇 가지 인사이트를 얻습니다.suggested_relationships_all = find_relationships( tables, name_similarity_threshold=0.7, coverage_threshold=0.7, verbose=2 )
새로 검색된 관계를 시각화합니다.
plot_relationship_metadata(suggested_relationships_all)
SemPy는 모든 관계를 검색할 수 있었습니다.
매개 변수를
exclude
사용하여 검색을 이전에 식별되지 않은 추가 관계로 제한합니다.additional_relationships = find_relationships( tables, exclude=autodetected, name_similarity_threshold=0.7, coverage_threshold=0.7 ) additional_relationships
관계 유효성 검사
먼저 고객 수익성 샘플 의미 체계 모델에서 데이터를 로드합니다.
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
함수를 사용하여 기본 및 외래 키 값의 겹침을 확인합니다
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에 대한 다른 자습서를 확인하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기