探索及驗證Power BI語意模型中的關聯性
在本文中,您將瞭解如何使用 SemPy 模組探索和驗證 Power BI 語意模型和 pandas DataFrames 內的關聯性。
在數據科學和機器學習中,請務必了解數據內的結構和關聯性。 雖然 Power BI 是一項功能強大的工具,可讓您建立數據模型並可視化,但您有時需要深入探討語意模型的結構,以取得更多見解或建置機器學習模型。 數據科學家和商務分析師可以使用 SemPy 連結庫中的各種函式,探索 Power BI 語意模型或 pandas DataFrame 內的關聯性。
您將了解:
- 在 Power BI 語意模型中尋找、可視化及探索關聯性
- 尋找及驗證 pandas DataFrame 中的關聯性
必要條件
取得 Microsoft Fabric 訂用帳戶。 或者,註冊免費的 Microsoft Fabric 試用版。
登入 Microsoft Fabric。
使用首頁左側的體驗切換器,切換至 Synapse 資料科學 體驗。
- 移至 Microsoft Fabric 中的 資料科學 體驗。
- 建立 新的筆記本 ,以將程式代碼複製/貼到儲存格中。
- 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要安裝它。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令:
python %pip install -U semantic-link
- 將 Lakehouse 新增至您的筆記本。 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要加以安裝。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令:
python %pip install -U semantic-link
尋找語意模型中的關聯性
函 list_relationships
式可讓您擷取 Power BI 語意模型內找到的所有關聯性清單,以便進一步瞭解數據的結構,以及不同數據表和數據行的連線方式。
函式的運作方式是利用語意連結,其提供批注式 DataFrame,其中包含必要的元數據,以了解語意模型中的關聯性。 這可讓您輕鬆地分析語意模型的結構,並將其用於機器學習模型或其他數據分析工作。
若要使用 函式 list_relationships
,您必須先匯入 sempy.fabric
模組。
然後,您可以使用 Power BI 語意模型的名稱或 UUID 呼叫函式,如下列程式代碼所示:
import sempy.fabric as fabric
fabric.list_relationships("my_dataset")
先前的程式代碼顯示函list_relationships
式是以稱為 my_dataset的 Power BI 語意模型來呼叫。
函式會傳回每個關聯性一個數據列的 pandas DataFrame,讓您輕鬆地探索及分析語意模型中的關聯性。
提示
您的筆記本、語意模型(Power BI 數據集)和 Lakehouse 可以位於相同的工作區或不同的工作區中。 根據預設,SemPy 會嘗試從中存取您的語意模型:
- 如果您已將 Lakehouse 附加至筆記本,則為 Lakehouse 的工作區。
- 筆記本的工作區,如果沒有連結的 Lakehouse。
如果您的語意模型不在 SemPy 嘗試存取的預設工作區中,則必須在呼叫 SemPy 方法時指定語意模型的工作區。
可視化語意模型中的關聯性
函 plot_relationship_metadata
式可協助您可視化語意模型中的關聯性,以便深入瞭解語意模型的結構。
藉由使用此函式,您可以建立圖表來顯示數據表和數據行之間的連接,讓您更輕鬆地了解語意模型的結構,以及不同元素的關聯方式。
下列程式代碼示範如何使用 函 plot_relationship_metadata
式
import sempy.fabric as fabric
from sempy.relationships import plot_relationship_metadata
relationships = fabric.list_relationships("my_dataset")
plot_relationship_metadata(relationships)
在先前的程式代碼中,函list_relationships
式會擷取my_dataset語意模型中的關聯性,而函plot_relationship_metadata
式會建立圖表來可視化這些關聯性。
您可以指定要包含的數據行、如何處理遺漏索引鍵,以及提供更多 graphviz 屬性,來自定義圖形。
探索語意模型中的關聯性違規
既然您已進一步瞭解語意模型中的關聯性,請務必驗證這些關聯性,並找出任何潛在的問題或不一致。 這是函式 list_relationship_violations
的所在位置。
函 list_relationship_violations
式可協助您驗證數據表的內容,以確保它們符合語意模型中定義的關聯性。
藉由使用此函式,您可以找出與指定關聯性多重性不一致的情況,並解決任何問題,再影響數據分析或機器學習模型。
若要使用 函 list_relationship_violations
式,您必須先匯入模組, sempy.fabric
並從語意模型讀取數據表。
然後,您可以使用將數據表名稱對應至具有數據表內容的 DataFrame 的字典來呼叫 函式。
下列程式代碼示範如何列出關聯性違規:
import sempy.fabric as fabric
tables = {
"Sales": fabric.read_table("my_dataset", "Sales"),
"Products": fabric.read_table("my_dataset", "Products"),
"Customers": fabric.read_table("my_dataset", "Customers"),
}
fabric.list_relationship_violations(tables)
在先前的程式代碼中,會list_relationship_violations
使用包含來自my_dataset語意模型的 Sales、Products 和 Customers 數據表的字典來呼叫 函式。
函式會針對每個關聯性違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決語意模型中的任何問題。
您可以藉由指定如何處理遺漏索引鍵、設定涵蓋範圍閾值,以及定義要報告的遺漏索引鍵數目,來自定義函式。
藉由使用 函 list_relationship_violations
式,您可以確保語意模型一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。
尋找 pandas DataFrame 中的關聯性
list_relationships
雖然 Fabric 模組中的 、 plot_relationships_df
和 list_relationship_violations
函式是探索語意模型中關聯性的強大工具,但您可能也需要探索以 pandas DataFrame 形式從其他數據源引進的關聯性。
這是模組中的sempy.relationship
函式作用所在find_relationships
。
函 find_relationships
式可協助數據科學家和商務分析師探索 Pandas DataFrame 清單內的潛在關聯性。
藉由使用此函式,您可以識別數據表和數據行之間的可能連線,讓您進一步了解數據的結構,以及不同元素的關聯方式。
下列程式代碼示範如何在 pandas DataFrame 中尋找關聯性:
from sempy.relationships import find_relationships
tables = [df_sales, df_products, df_customers]
find_relationships(tables)
在上述程式代碼中,會 find_relationships
使用三個 Pandas DataFrame 的清單來呼叫 函式: df_sales
、 df_products
和 df_customers
。
此函式會針對每個潛在關聯性傳回一個數據列的 pandas DataFrame,讓您輕鬆地探索及分析數據中的關聯性。
您可以指定涵蓋範圍臨界值、名稱相似度閾值、要排除的關聯性清單,以及是否包含多對多關聯性,來自定義函式。
驗證 pandas DataFrame 中的關聯性
在 Pandas DataFrames 內探索到潛在關聯性之後,使用函 find_relationships
式,驗證這些關聯性並找出任何潛在問題或不一致至關重要。
這是模組中的sempy.relationships
函式作用所在list_relationship_violations
。
函 list_relationship_violations
式旨在協助您驗證數據表的內容,並確保它們符合探索到的關聯性。
藉由使用此函式,您可以找出與指定關聯性多重性不一致的情況,並解決任何問題,再影響數據分析或機器學習模型。
下列程式代碼示範如何在 pandas DataFrame 中尋找關聯性違規:
from sempy.relationships import find_relationships, list_relationship_violations
tables = [df_sales, df_products, df_customers]
relationships = find_relationships(tables)
list_relationship_violations(tables, relationships)
在上一個程式代碼中,會list_relationship_violations
使用三個 pandas DataFrame 的清單來呼叫 函式,df_products
df_customers
df_sales
以及從 函式取得的find_relationships
關聯性 DataFrame。
函 list_relationship_violations
式會針對每個關聯違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決數據中的任何問題。
您可以藉由指定如何處理遺漏索引鍵、設定涵蓋範圍閾值,以及定義要報告的遺漏索引鍵數目,來自定義函式。
透過搭配 pandas DataFrames 使用 函 list_relationship_violations
式,您可以確保數據一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應