共用方式為


使用語意連結的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) 查詢和元數據。

  • 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要安裝它。

  • 針對 Spark 3.3 或更新至最新版本的語意連結,請執行下列命令:

    %pip install -U semantic-link
    

SemPy 也會擴充 pandas DataFrame,並新增從 Power BI 數據源傳播的元數據。 此元資料包括:

  • Power BI 資料類別:
    • 地理:位址、地點、城市
    • URL:Web URL、影像 URL
    • 條碼
  • 數據表之間的關聯性
  • 階層

語意連結 Spark 原生連接器可讓 Spark 使用者存取 Power BI 資料表和量值。 連接器與語言無關,並支援 PySpark、Spark SQL、R 和 Scala。

若要使用 Spark 原生連接器,您可以將語意模型表示為 Spark 命名空間,並以透明方式將 Power BI 數據表公開為 Spark 數據表。

下列命令會將 Spark 設定為使用適用於 Spark SQL 的 Power BI 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 量值可透過虛擬 _Metrics 資料表存取,以透過多維度 Power BI 橋接關係型 Spark SQL。 在下列範例中Sales DatasetTotal RevenueRevenue 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 作業是語意連結的強大功能,可讓您使用語意模型中的量值來增強數據。 這項作業僅適用於 SemPy Python 連結庫,且 Spark 原生連接器不支援。 如需 方法的詳細資訊add_measure,請參閱類別檔中FabricDataFrameadd_measure

若要使用 SemPy Python 連結庫,請在 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 會執行下列步驟:

  1. 將 FabricDataFrame 中的數據行名稱解析為 Power BI 維度。 作業會忽略指定語意模型內無法解析的任何數據行名稱。 如需詳細資訊,請參閱支援的 DAX語法
  2. group by使用解析的數據行名稱定義數據行。
  3. 計算層級的 group by 一或多個量值。
  4. 篩選 FabricDataFrame 中現有數據列的結果。