다음을 통해 공유


의미 체계 링크 및 Microsoft Fabric을 사용한 Power BI 연결

Power BI 연결은 의미 체계 링크의 핵심입니다. 이 문서에서는 의미 체계 링크가 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 쿼리메타데이터 실행을 포함하는 기능을 제공합니다.

Spark 3.4 이상의 경우 패브릭을 사용할 때 기본 런타임에서 의미 체계 링크를 사용할 수 있으며 설치할 필요가 없습니다. Spark 3.3 이하를 사용하거나 최신 버전의 의미 체계 링크로 업데이트하려는 경우 다음 명령을 실행할 수 있습니다.

python %pip install -U semantic-link  

또한 SemPy는 Power BI 데이터 원본에서 전파된 추가 메타데이터를 사용하여 pandas DataFrames를 확장합니다. 이 메타데이터에는 다음이 포함됩니다.

  • Power BI 데이터 범주:
    • 지리적: 주소, 장소, 도시 등
    • URL: 웹 URL, 이미지 URL
    • 바코드
  • 테이블 간 관계
  • 계층 구조

Spark 지원(PySpark, Spark SQL, R 및 Scala)

의미 체계 링크 Spark 네이티브 커넥터를 사용하면 Spark 사용자가 Power BI 테이블 및 측정값에 액세스할 수 있습니다. 커넥터는 언어에 구애받지 않으며 PySpark, Spark SQL, R 및 Scala를 지원합니다.

Spark 네이티브 커넥터를 사용하기 위해 의미 체계 모델은 Spark 네임스페이스로 표시되고 Power BI 테이블을 Spark 테이블로 투명하게 노출합니다.

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`

의미 체계 모델Sales Dataset에서 테이블 Customer 의 데이터를 표시합니다.

%%sql
SELECT * FROM pbi.`Sales Dataset`.Customer

Power BI 측정값은 다차원 Power BI를 사용하여 관계형 Spark SQL을 연결하는 가상 _Metrics 테이블을 통해 액세스할 수 있습니다. 다음 예제 Total Revenue 에서는 의미 체계 모델에 정의된 Sales Dataset 측정값이며 Revenue Budget 다시 기본 열은 차원입니다. 집계 함수(예: 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 작업은 의미 체계 모델의 측정값으로 데이터를 보강할 수 있는 의미 체계 링크의 강력한 기능입니다. 이 add_measure 작업은 SemPy Python 라이브러리에서만 사용할 수 있으며 Spark 네이티브 커넥터에서 지원되지 않습니다. 메서드에 대한 add_measure 자세한 내용은 FabricDataFrame 클래스의 add_measure 참조하세요.

Python 라이브러리를 SemPy 사용하려면 먼저 Notebook 셀에서 이 코드를 실행하여 Notebook 커널에 설치해야 합니다.

코드 예제에서는 의미 체계 모델의 측정값으로 보강하려는 데이터를 사용하여 FabricDataFrame을 수동으로 만들었다고 가정합니다.

# %pip and import only needs to be done once per notebook
%pip install semantic-link
from sempy.fabric import 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 구문 참조).
  • 확인된 열 이름을 사용하여 열별로 그룹을 정의합니다.
  • 그룹에서 하나 이상의 측정값 을 수준별로 계산합니다.
  • FabricDataFrame의 기존 행을 사용하여 결과를 필터링합니다.