อ่านจากแบบจําลองความหมายและเขียนข้อมูลที่สามารถใช้โดย Power BI โดยใช้ python
ในบทความนี้ คุณจะได้เรียนรู้วิธีการอ่านข้อมูลและเมตาดาต้า และประเมินหน่วยวัดในแบบจําลองความหมายโดยใช้ไลบรารี SemPy python ใน Microsoft Fabric นอกจากนี้คุณยังจะได้เรียนรู้วิธีการเขียนข้อมูลที่แบบจําลองความหมายสามารถใช้ได้
ข้อกำหนดเบื้องต้น
รับการสมัครใช้งาน Microsoft Fabric หรือลงทะเบียนเพื่อทดลองใช้งาน Microsoft Fabric ฟรี
ลงชื่อเข้าใช้ Microsoft Fabric
ใช้ตัวสลับประสบการณ์ทางด้านซ้ายของโฮมเพจของคุณเพื่อสลับไปยังประสบการณ์วิทยาศาสตร์ข้อมูล Synapse
- ไปยังประสบการณ์ด้านวิทยาศาสตร์ข้อมูลใน Microsoft Fabric
- สร้าง สมุดบันทึก ใหม่เพื่อคัดลอก/วางรหัสลงในเซลล์
- สําหรับ Spark 3.4 และสูงกว่า ลิงก์ความหมายจะพร้อมใช้งานในรันไทม์เริ่มต้นเมื่อใช้ Fabric และไม่จําเป็นต้องติดตั้ง ถ้าคุณกําลังใช้ Spark 3.3 หรือต่ํากว่า หรือถ้าคุณต้องการอัปเดตเป็นลิงก์ความหมายเวอร์ชันล่าสุด คุณสามารถเรียกใช้คําสั่งได้:
python %pip install -U semantic-link
- เพิ่มเลคเฮาส์ลงในสมุดบันทึกของคุณ
- ดาวน์โหลด แบบจําลองความหมาย Customer Profitability Sample.pbix จากโฟลเดอร์ชุดข้อมูลของที่เก็บ fabric-samples และบันทึกแบบจําลองความหมายภายในเครื่อง
อัปโหลดแบบจําลองความหมายลงในพื้นที่ทํางานของคุณ
ในบทความนี้ เราใช้แบบจําลองความหมาย ตัวอย่างความสามารถในการทํากําไรสําหรับลูกค้า.pbix แบบจําลองความหมายนี้อ้างอิงถึงเอกสารทางการตลาดของการผลิตของบริษัท และประกอบด้วยข้อมูลเกี่ยวกับผลิตภัณฑ์ ลูกค้า และรายได้ที่สอดคล้องกันสําหรับหน่วยธุรกิจต่างๆ
- เปิดพื้นที่ทํางานของคุณใน Fabric Data Science
- เลือก อัปโหลด>เรียกดู และเลือกแบบจําลองความหมาย ตัวอย่างความสามารถในการทํากําไรสําหรับลูกค้า.pbix
เมื่อการอัปโหลดเสร็จสิ้น พื้นที่ทํางานของคุณจะมีวัตถุใหม่สามรายการ: รายงาน Power BI แดชบอร์ด และแบบจําลองความหมายที่ชื่อว่า ตัวอย่างความสามารถในการทํากําไรลูกค้า คุณจะใช้แบบจําลองความหมายนี้สําหรับขั้นตอนในบทความนี้
ใช้ Python เพื่ออ่านข้อมูลจากแบบจําลองความหมาย
SemPy Python API สามารถดึงข้อมูลและเมตาดาต้าจากแบบจําลองความหมายที่ตั้งอยู่ในพื้นที่ทํางาน Microsoft Fabric และดําเนินการคิวรี่
สมุดบันทึก แบบจําลองความหมาย (ชุดข้อมูล Power BI) และ เลคเฮ้าส์ ของคุณสามารถอยู่ในพื้นที่ทํางานเดียวกันหรือในพื้นที่ทํางานที่แตกต่างกันได้ ตามค่าเริ่มต้น SemPy พยายามเข้าถึงแบบจําลองความหมายของคุณจาก:
- พื้นที่ทํางานของเลคเฮาส์ของคุณ ถ้าคุณได้แนบเลคเฮาส์เข้ากับสมุดโน๊ตของคุณ
- พื้นที่ทํางานของสมุดบันทึกของคุณ ถ้าไม่มีเลคเฮ้าส์ติดอยู่
หากแบบจําลองความหมายของคุณไม่อยู่ในพื้นที่ทํางานเริ่มต้นที่ SemPy พยายามเข้าถึง คุณต้องระบุพื้นที่ทํางานของแบบจําลองความหมายของคุณเมื่อคุณเรียกใช้เมธอด SemPy
ในการอ่านข้อมูลจากแบบจําลองความหมาย:
ระบุรายการแบบจําลองความหมายที่มีอยู่ในพื้นที่ทํางานของคุณ
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasets
ระบุรายการตารางที่พร้อมใช้งานใน แบบจําลองความหมายตัวอย่าง ความสามารถในการทํากําไรลูกค้า
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tables
ระบุรายการหน่วยวัดที่กําหนดใน แบบจําลองความหมายตัวอย่าง ความสามารถในการทํากําไรลูกค้า
เคล็ดลับ
ในโค้ดต่อไปนี้ เราได้ระบุพื้นที่ทํางานสําหรับ SemPy เพื่อใช้สําหรับการเข้าถึงแบบจําลองความหมาย คุณสามารถแทนที่
Your Workspace
ด้วยชื่อของพื้นที่ทํางานที่คุณอัปโหลดแบบจําลองแสดงความหมาย (จาก อัปโหลดแบบจําลองแสดงความหมายลงในส่วนพื้นที่ทํางาน ของคุณ)df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace") df_measures
ในตอนนี้เราได้กําหนดว่า ตารางลูกค้า เป็นตารางที่สนใจ
อ่านตารางลูกค้าจากแบบจําลองความหมายตัวอย่างความสามารถในการทํากําไรสําหรับลูกค้า
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_table
หมายเหตุ
- ข้อมูลจะถูกเรียกใช้โดยใช้ XMLA ดังนั้นต้องมีการเปิดใช้งาน XMLA แบบอ่านอย่างเดียวเป็นอย่างน้อย
- จํานวนข้อมูลที่เรียกได้จะถูกจํากัดโดย หน่วยความจําสูงสุดต่อคิวรี ของความจุ SKU ที่โฮสต์แบบจําลองความหมายและโดยโหนดโปรแกรมควบคุม Spark (ดู ขนาดโหนด) ที่กําลังใช้งานสมุดบันทึก
- คําขอทั้งหมดใช้ลําดับความสําคัญต่ําเพื่อลดผลกระทบต่อประสิทธิภาพการทํางานของ Microsoft Azure Analysis Services และจะถูกเรียกเก็บเงินเป็น คําขอแบบโต้ตอบ
ประเมินหน่วยวัดรายได้รวมต่อรัฐและวันที่ของลูกค้า
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measure
หมายเหตุ
- ตามค่าเริ่มต้น ข้อมูลจะไม่ถูกเรียกใช้โดยใช้ XMLA ดังนั้นจึงไม่จําเป็นต้องเปิดใช้งาน XMLA แบบอ่านอย่างเดียว
- นอกจากนี้ ข้อมูล ไม่ อยู่ภายใต้ ข้อจํากัด Backend ของ Power BI
- จํานวนข้อมูลที่เรียกได้จะถูกจํากัดโดย หน่วยความจําสูงสุดต่อคิวรี ของความจุ SKU ที่โฮสต์แบบจําลองความหมายและโดยโหนดโปรแกรมควบคุม Spark (ดู ขนาดโหนด) ที่กําลังใช้งานสมุดบันทึก
- คําขอทั้งหมดจะถูกเรียกเก็บเงินเป็น คําขอแบบโต้ตอบ
คุณสามารถเพิ่มตัวกรองลงในการคํานวณหน่วยวัดโดยระบุรายการของค่าที่สามารถอยู่ในคอลัมน์เฉพาะได้
filters = { "State[Region]": ["East", "Central"], "State[State]": ["FLORIDA", "NEW YORK"] } df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["Customer[State]", "Calendar[Date]"], filters=filters) df_measure
คุณยังสามารถประเมิน หน่วยวัดรายได้ รวมต่อรัฐและวันที่ของลูกค้าโดยใช้ คิวรี DAX
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)
หมายเหตุ
- ข้อมูลจะถูกเรียกใช้โดยใช้ XMLA ดังนั้นต้องมีการเปิดใช้งาน XMLA แบบอ่านอย่างเดียวเป็นอย่างน้อย
- จํานวนข้อมูลที่เรียกได้จะถูกจํากัดโดยหน่วยความจําที่มีอยู่ใน Microsoft Azure Analysis Services และโหนดโปรแกรมควบคุม Spark (ดู ขนาดโหนด)
- คําขอทั้งหมดใช้ลําดับความสําคัญต่ําเพื่อลดผลกระทบต่อประสิทธิภาพการทํางานของ Analysis Services และจะถูกเรียกเก็บเงินเป็นคําขอแบบโต้ตอบ
คุณสามารถประเมินคิวรี DAX เดียวกันโดยไม่จําเป็นต้องนําเข้าไลบรารีโดยใช้เวทมนตร์ของ
%%dax
เซลล์ ลองเรียกใช้เซลล์ด้านล่างเพื่อโหลด%%dax
เวทมนตร์ของเซลล์%load_ext sempy
พารามิเตอร์พื้นที่ทํางานเป็นตัวเลือกและปฏิบัติตามกฎเดียวกันกับพารามิเตอร์พื้นที่ทํางานของ
evaluate_dax
ฟังก์ชัน เวทมนตร์ของเซลล์ยังสนับสนุนการเข้าถึงตัวแปร Python โดยใช้{variable_name}
ไวยากรณ์ เมื่อต้องการใช้วงเล็บปีกกาในคิวรี DAX ให้หลีกเลี่ยงด้วยวงเล็บปีกกาอีกอัน (เช่นEVALUATE {{1}}
)%%dax "Customer Profitability Sample" -w "Your Workspace" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))
ผลลัพธ์ FabricDataFrame จะพร้อมใช้งานผ่าน
_
ตัวแปร ซึ่งจับเอาต์พุตของเซลล์ที่ดําเนินการล่าสุดdf_dax = _ df_dax.head()
อีกวิธีหนึ่งคือ คุณสามารถเพิ่มหน่วยวัดไปยังข้อมูลที่ดึงมาจากแหล่งข้อมูลภายนอกได้ วิธีการนี้รวมสามงาน: จะแก้ไขชื่อคอลัมน์เป็นมิติ Power BI กําหนดกลุ่มตามคอลัมน์และกรองหน่วยวัด ชื่อคอลัมน์ใด ๆ ที่ไม่สามารถแก้ไขภายในแบบจําลองความหมายที่กําหนดจะถูกละเว้น (ดูไวยากรณ์ DAX ที่ได้รับการสนับสนุน)
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", dataset="Customer Profitability Sample") joined_df
พารามิเตอร์พิเศษ
SemPy read_table
และ evaluate_measure
วิธีการ มีพารามิเตอร์เพิ่มเติมที่มีประโยชน์สําหรับการจัดการเอาต์พุต พารามิเตอร์เหล่านี้รวมถึง:
fully_qualified_columns
: ถ้าค่าเป็น "True" วิธีการจะแสดงชื่อคอลัมน์ในแบบฟอร์มTableName[ColumnName]
num_rows
: จํานวนแถวที่จะแสดงผลในผลลัพธ์pandas_convert_dtypes
: ถ้าค่าเป็น "จริง" คอลัมน์ของ DataFrame ผลลัพธ์จะถูกแปลงเป็น dtype ที่ดีที่สุดที่เป็นไปได้ โดยใช้ pandas convert_dtypes หากพารามิเตอร์นี้ถูกปิดใช้งาน ชนิดปัญหาความไม่เข้ากันอาจเกิดขึ้นได้ระหว่างคอลัมน์ของตารางที่เกี่ยวข้องที่อาจไม่ได้รับการตรวจพบในแบบจําลอง Power BI เนื่องจาก การแปลงชนิดโดยนัยของ DAX
SemPy read_table
ยังใช้ข้อมูลแบบจําลองที่ให้มาโดย Power BI
multiindex_hierarchies
: ถ้าเป็นจริง จะ แปลงลําดับชั้น Power BI เป็นโครงสร้าง MultiIndex ของ pandas
เขียนข้อมูลที่สามารถใช้งานโดยแบบจําลองความหมาย
ตาราง Spark ที่เพิ่มไปยังเลคเฮ้าส์จะถูกเพิ่มโดยอัตโนมัติไปยังแบบจําลองความหมายเริ่มต้นที่สอดคล้องกัน ตัวอย่างนี้สาธิตวิธีการเขียนข้อมูลไปยังเลคเฮ้าส์ที่แนบมา FabricDataFrame ยอมรับข้อมูลป้อนเข้าเดียวกันเป็นกรอบข้อมูล Pandas
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
โดยการใช้ Power BI สามารถเพิ่มตาราง ForecastTable ลงในแบบจําลองความหมายแบบรวมโดยใช้แบบจําลองความหมายของเลคเฮ้าส์
เนื้อหาที่เกี่ยวข้อง
คำติชม
https://aka.ms/ContentUserFeedback
เร็วๆ นี้: ตลอดปี 2024 เราจะขจัดปัญหา GitHub เพื่อเป็นกลไกคำติชมสำหรับเนื้อหา และแทนที่ด้วยระบบคำติชมใหม่ สำหรับข้อมูลเพิ่มเติม ให้ดู:ส่งและดูข้อคิดเห็นสำหรับ