共用方式為


具有語意連結的 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 功能包括從資料表擷取資料、量值計算,以及執行 Data Analysis Expressions (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 DatasetCustomer 資料表的資料:

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

Power BI 量值可透過虛擬 _Metrics 資料表存取,以透過多維度 Power BI 來橋接關係型 Spark SQL。 在下列範例中,Total RevenueRevenue Budget 是在 Sales Dataset 語意模型中定義的量值,而其他資料行則為維度。 對於量值,會略過 AVG 等彙總函數,些函數的存在只是為了提供與 SQL 的一致性。

該連接器支援將 Spark 運算式中的 Customer[State] in ('CA', 'WA') 等計算的述詞下推至 Power BI 引擎,以便使用 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 儲存格中執行下列程式碼,將其安裝在筆記本核心中:

# %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 中現有資料列的結果。