의미 체계 링크를 통한 Power BI 연결
Power BI 연결은 Microsoft Fabric의 의미 체계 링크의 핵심입니다. 이 문서에서는 의미 체계 링크가 Python Pandas 및 Apache Spark 에코시스템의 사용자를 위한 의미 체계 모델에 대한 연결을 제공하는 방법을 설명합니다.
의미 체계 모델은 일반적으로 업스트림 데이터 처리 및 구체화의 결과인 높은 데이터 표준을 나타냅니다. 비즈니스 분석가는 다음을 수행할 수 있습니다.
- 도메인 지식 및 비즈니스 논리를 Power BI 측정값으로 인코딩합니다.
- 의미 체계 모델을 사용하여 Power BI 보고서를 만듭니다.
- 이러한 보고서를 사용하여 비즈니스 의사 결정을 내릴 수 있습니다.
동일한 의미 체계 모델을 사용하는 데이터 과학자가 서로 다른 코드 환경 또는 언어로 비즈니스 논리를 복제하려고 하면 심각한 오류가 발생할 수 있습니다. 의미 체계 링크는 비즈니스 분석가와 데이터 과학자가 원활하게 협업하고 데이터 불일치를 줄일 수 있는 방법을 제공하기 위해 의미 체계 모델과 Microsoft Fabric 환경의 Synapse 데이터 과학 간의 격차를 해소합니다.
의미 체계 링크는 다음에 대한 연결을 제공합니다.
- SemPy Python 라이브러리를 통한 Python Pandas 에코시스템
- PySpark, Spark SQL, R, Scala를 지원하는 Spark 네이티브 커넥터를 통한 의미 체계 모델
Pandas 사용자를 위한 SemPy Python 라이브러리를 통한 데이터 연결
SemPy Python 라이브러리는 의미 체계 링크 기능의 일부이며 Pandas 사용자에게 제공됩니다. SemPy 기능에는 테이블에서 데이터 검색, 측정값 계산, DAX(Data Analysis Expressions) 쿼리 실행 및 메타데이터가 포함됩니다.
Spark 3.4 이상 버전의 경우 Fabric을 사용할 때 기본 런타임에서 의미 체계 링크를 사용할 수 있으므로 설치할 필요가 없습니다.
Spark 3.3 이하 버전의 경우 또는 최신 버전의 의미 체계 링크로 업데이트하려면 다음 명령을 실행합니다.
%pip install -U semantic-link
또한 SemPy는 Power BI 데이터 원본에서 전파된 추가 메타데이터를 사용하여 Pandas DataFrames를 확장합니다. 메타데이터에는 다음이 포함됩니다.
- Power BI 데이터 범주:
- 지리적: 주소, 장소, 도시
- URL: 웹 URL, 이미지 URL
- 바코드
- 테이블 간 관계
- 계층 구조
의미 체계 링크 Spark 네이티브 커넥터를 통한 데이터 연결
의미 체계 링크 Spark 네이티브 커넥터를 사용하면 Spark 사용자가 Power BI 테이블 및 측정값에 액세스할 수 있습니다. 커넥터는 언어에 구애받지 않으며 PySpark, Spark SQL, R, Scala를 지원합니다.
Spark 네이티브 커넥터를 사용하려면 의미 체계 모델을 Spark 네임스페이스로 표현하고 Power BI 테이블을 Spark 테이블로 투명하게 노출해야 합니다.
다음 명령은 Spark SQL에 대한 Power BI Spark 네이티브 커넥터를 사용하도록 Spark를 구성합니다.
spark.conf.set("spark.sql.catalog.pbi", "com.microsoft.azure.synapse.ml.powerbi.PowerBICatalog")
# Optionally, configure the workspace using its ID
# Resolve workspace name to ID using fabric.resolve_workspace_id("My workspace")
# Replace 00000000-0000-0000-0000-000000000000 with your own workspace ID
# spark.conf.set("spark.sql.catalog.pbi.workspace, "00000000-0000-0000-0000-000000000000")
다음 명령은 Sales Dataset
라는 의미 체계 모델의 모든 테이블을 나열합니다.
%%sql
SHOW TABLES FROM pbi.`Sales Dataset`
다음 명령은 의미 체계 모델 Customer
의 Sales Dataset
테이블의 데이터를 표시합니다.
%%sql
SELECT * FROM pbi.`Sales Dataset`.Customer
가상 _Metrics
테이블을 통해 Power BI 측정값에 액세스하여 관계형 Spark SQL과 다차원 Power BI를 연결할 수 있습니다. 다음 예시에서 Total Revenue
및 Revenue Budget
은 Sales Dataset
의미 체계 모델에 정의된 측정값이고, 다른 열은 차원입니다. AVG
같은 집계 함수는 측정값에 대해 무시되며 SQL과 일관성을 제공하기 위해서만 존재합니다.
커넥터는 Spark 식에서 Power BI 엔진으로 Customer[State] in ('CA', 'WA')
과 같은 계산의 조건자 푸시다운을 지원하여 Power BI 최적화된 엔진을 사용할 수 있도록 지원합니다.
SELECT
`Customer[Country/Region]`,
`Industry[Industry]`,
AVG(`Total Revenue`),
AVG(`Revenue Budget`)
FROM
pbi.`Sales Dataset`.`_Metrics`
WHERE
`Customer[State]` in ('CA', 'WA')
GROUP BY
`Customer[Country/Region]`,
`Industry[Industry]`
Power BI 측정값을 사용한 데이터 증강
add_measure
작업은 의미 체계 모델의 측정값으로 데이터를 보강할 수 있는 의미 체계 링크의 강력한 기능입니다. 이 작업은 SemPy Python 라이브러리에서만 사용할 수 있으며 Spark 네이티브 커넥터에서는 지원되지 않습니다. add_measure
메서드에 대한 자세한 내용은 FabricDataFrame
클래스 설명서의 add_measure를 참조하세요.
SemPy Python 라이브러리를 사용하려면 Notebook 셀에서 다음 코드를 실행하여 Notebook 커널에 설치해야 합니다.
# %pip and import only needs to be done once per notebook
%pip install semantic-link
from sempy.fabric import FabricDataFrame
다음 코드 예시에서는 의미 체계 모델의 측정값으로 보강하려는 데이터가 포함된 기존 FabricDataFrame이 있다고 가정합니다.
df = FabricDataFrame({
"Sales Agent": ["Agent 1", "Agent 1", "Agent 2"],
"Customer[Country/Region]": ["US", "GB", "US"],
"Industry[Industry]": ["Services", "CPG", "Manufacturing"],
}
)
joined_df = df.add_measure(["Total Revenue", "Total Budget"], dataset="Sales Dataset")
add_measure
메서드는 다음 단계를 수행합니다.
- FabricDataFrame의 열 이름을 Power BI 차원으로 확인합니다. 이 작업은 지정된 의미 체계 모델 내에서 확인할 수 없는 모든 열 이름을 무시합니다. 자세한 내용은 지원되는 DAX 구문을 참조하세요.
- 확인된 열 이름을 사용하여
group by
열을 정의합니다. group by
수준에서 하나 이상의 측정값을 계산합니다.- FabricDataFrame의 기존 행으로 결과를 필터링합니다.