共用方式為


使用語意連結和 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 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要加以安裝。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令:

python %pip install -U semantic-link  

SemPy 也會使用從 Power BI 數據源傳播的其他元數據來擴充 pandas DataFrame。 此元資料包括:

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

支援 Spark (PySpark、Spark SQL、R 和 Scala)

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

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

設定 Spark 以使用 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 作業是語意連結的強大功能,可讓您利用語意模型中的量值來增強數據。 此 add_measure 作業僅適用於 SemPy Python 連結庫,且 Spark 原生連接器不支援。 如需方法的詳細資訊 add_measure ,請參閱 FabricDataFrame 類別中的add_measure

若要使用 SemPy Python 連結庫,您必須先在筆記本數據格中執行此程式碼,將其安裝在筆記本核心中:

提示

程式代碼範例假設您已手動建立 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 中現有數據列的結果。