แชร์ผ่าน


ค้นพบความสัมพันธ์ในแบบจําลองความหมายโดยใช้ลิงก์ความหมาย

บทช่วยสอนนี้แสดงวิธีการใช้สมุดบันทึก Jupyter เพื่อโต้ตอบกับ Power BI และตรวจหาความสัมพันธ์ระหว่างตารางด้วยไลบรารี SemPy

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีการ:

  • ค้นพบความสัมพันธ์ในแบบจําลองความหมาย (ชุดข้อมูล Power BI) โดยใช้ไลบรารี Python ของลิงก์ความหมาย (SemPy)
  • ใช้ส่วนประกอบ SemPy ที่รวมเข้ากับ Power BI และทําการวิเคราะห์คุณภาพข้อมูลโดยอัตโนมัติ คอมโพเนนต์เหล่านี้ประกอบด้วย:
    • FabricDataFrame - โครงสร้างคล้ายแพนด้าที่ปรับปรุงด้วยข้อมูลความหมาย
    • ฟังก์ชันที่ดึงโมเดลความหมายจากพื้นที่ทํางาน Fabric ไปยังสมุดบันทึกของคุณ
    • ฟังก์ชันที่ทดสอบการขึ้นต่อกันของฟังก์ชันและระบุการละเมิดความสัมพันธ์ในแบบจําลองความหมายของคุณ

ข้อกําหนดเบื้องต้น

  • ไปที่ พื้นที่ทํางาน ในบานหน้าต่างนําทาง แล้วเลือกพื้นที่ทํางานของคุณเพื่อตั้งค่าเป็นพื้นที่ทํางานปัจจุบัน

  • ดาวน์โหลดแบบจําลองความหมาย Customer Profitability Sample.pbix และ Customer Profitability Sample (auto).pbix จาก ที่เก็บ GitHub ตัวอย่างผ้า แล้วอัปโหลดไปยังพื้นที่ทํางานของคุณ

ติดตามในสมุดบันทึก

ใช้สมุดบันทึก powerbi_relationships_tutorial.ipynb เพื่อทําตาม

ตั้งค่าสมุดบันทึก

ตั้งค่าสภาพแวดล้อมโน้ตบุ๊กด้วยโมดูลและข้อมูลที่คุณต้องการ

  1. ติดตั้งแพคเกจจาก semantic-link PyPI โดยใช้คําสั่งอิน %pip ไลน์ในสมุดบันทึก

    %pip install semantic-link
    
  2. นําเข้าโมดูลที่คุณ sempy จะใช้ในภายหลัง

    import sempy.fabric as fabric
    
    from sempy.relationships import plot_relationship_metadata
    from sempy.relationships import find_relationships
    from sempy.fabric import list_relationship_violations
    
  3. นําเข้าไลบรารี pandas และตั้งค่าตัวเลือกการแสดงผลสําหรับการจัดรูปแบบเอาต์พุต

    import pandas as pd
    pd.set_option('display.max_colwidth', None)
    

## Explore semantic models

This tutorial uses the Customer Profitability Sample semantic model [_Customer Profitability Sample.pbix_](https://github.com/microsoft/fabric-samples/blob/main/docs-samples/data-science/datasets/Customer%20Profitability%20Sample.pbix). Learn about the semantic model in [Customer Profitability sample for Power BI](/power-bi/create-reports/sample-customer-profitability).

- Use SemPy's `list_datasets` function to explore semantic models in your current workspace:

  ```python
  fabric.list_datasets()

สําหรับส่วนที่เหลือของสมุดบันทึกนี้ ให้ใช้แบบจําลองความหมายตัวอย่างความสามารถในการทํากําไรของลูกค้าสองรุ่น:

  • ตัวอย่างความสามารถในการทํากําไรของลูกค้า: แบบจําลองความหมายตามที่ให้มาในตัวอย่าง Power BI พร้อมความสัมพันธ์ของตารางที่กําหนดไว้ล่วงหน้า
  • ตัวอย่างความสามารถในการทํากําไรของลูกค้า (อัตโนมัติ): ข้อมูลเดียวกัน แต่ความสัมพันธ์ถูกจํากัดไว้เฉพาะข้อมูลที่ Power BI ตรวจพบโดยอัตโนมัติ

แยกความสัมพันธ์ที่กําหนดไว้ล่วงหน้าจากแบบจําลองความหมายตัวอย่าง

  1. โหลดความสัมพันธ์ที่กําหนดไว้ล่วงหน้าในแบบจําลองความหมายตัวอย่างความสามารถในการทํากําไรของลูกค้าโดยใช้ฟังก์ชันของ list_relationships SemPy ฟังก์ชันแสดงรายการความสัมพันธ์จากแบบจําลองวัตถุแบบตาราง (TOM)

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. แสดงภาพ relationships DataFrame เป็นกราฟโดยใช้ฟังก์ชันของ plot_relationship_metadata SemPy

    plot_relationship_metadata(relationships)
    

    สกรีนช็อตของกราฟความสัมพันธ์ระหว่างตารางในแบบจําลองความหมาย

    กราฟนี้แสดงความสัมพันธ์ระหว่างตารางในแบบจําลองความหมายนี้ตามที่กําหนดไว้ใน Power BI โดยผู้เชี่ยวชาญเฉพาะเรื่อง

ค้นพบความสัมพันธ์เพิ่มเติม

ถ้าคุณเริ่มต้นด้วยความสัมพันธ์ที่ Power BI ตรวจพบอัตโนมัติ คุณมีชุดที่เล็กกว่า

  1. แสดงภาพความสัมพันธ์ที่ Power BI ตรวจพบโดยอัตโนมัติในแบบจําลองความหมาย:

    dataset = "Customer Profitability Sample (auto)"
    autodetected = fabric.list_relationships(dataset)
    plot_relationship_metadata(autodetected)
    

    สกรีนช็อตของความสัมพันธ์ที่ Power BI ตรวจพบโดยอัตโนมัติในแบบจําลองความหมาย

    การตรวจหาอัตโนมัติของ Power BI พลาดความสัมพันธ์มากมาย นอกจากนี้ ความสัมพันธ์ที่ตรวจพบอัตโนมัติสองความสัมพันธ์ไม่ถูกต้องในเชิงความหมาย:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. พิมพ์ความสัมพันธ์เป็นตาราง:

    autodetected
    

    แถวที่ 3 และ 4 แสดงความสัมพันธ์ที่ไม่ถูกต้องกับ Industry ตาราง ลบแถวเหล่านี้ออก

  3. ละทิ้งความสัมพันธ์ที่ระบุอย่างไม่ถูกต้อง

    # Remove rows 3 and 4 which point incorrectly to Industry[ID]
    autodetected = autodetected[~autodetected.index.isin([3, 4])]
    

    ตอนนี้คุณมีความสัมพันธ์ที่ถูกต้องแต่ไม่สมบูรณ์ แสดงภาพความสัมพันธ์ที่ไม่สมบูรณ์เหล่านี้โดยใช้ plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    ภาพหน้าจอของการแสดงภาพของความสัมพันธ์หลังจากลบความสัมพันธ์ที่ไม่ถูกต้อง

  4. โหลดตารางทั้งหมดจากแบบจําลองความหมายโดยใช้ฟังก์ชันและlist_tablesread_tableฟังก์ชันของ SemPy จากนั้นค้นหาความสัมพันธ์ระหว่างตารางโดยใช้find_relationships ตรวจสอบผลลัพธ์ของบันทึกเพื่อรับข้อมูลเชิงลึกเกี่ยวกับวิธีการทํางานของฟังก์ชันนี้:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  5. แสดงความสัมพันธ์ที่ค้นพบใหม่:

    plot_relationship_metadata(suggested_relationships_all)
    

    ภาพหน้าจอของการแสดงภาพของความสัมพันธ์ที่เพิ่งค้นพบ

    SemPy ตรวจจับความสัมพันธ์ทั้งหมด

  6. ใช้พารามิเตอร์ exclude เพื่อจํากัดการค้นหาสําหรับความสัมพันธ์เพิ่มเติมที่ไม่ได้ระบุไว้ก่อนหน้านี้:

    additional_relationships = find_relationships(
        tables,
        exclude=autodetected,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7
    )
    
    additional_relationships
    

ตรวจสอบความถูกต้องของความสัมพันธ์

  1. ขั้นแรก ให้โหลดข้อมูลจากแบบจําลองความหมายตัวอย่าง ความสามารถในการทํากําไร ของลูกค้า

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. ตรวจสอบคีย์หลักและคีย์ต่างประเทศทับซ้อนกับ list_relationship_violations ฟังก์ชัน ส่งเอาต์พุตของlist_relationshipsฟังก์ชันไปที่list_relationship_violations

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    ผลลัพธ์เผยให้เห็นข้อมูลเชิงลึกที่เป็นประโยชน์ ตัวอย่างเช่น หนึ่งในเจ็ดค่าใน Fact[Product Key] ไม่มีอยู่ใน Product[Product Key]และคีย์ที่ขาดหายไปคือ50

    การวิเคราะห์ข้อมูลเชิงสํารวจและการล้างข้อมูลเป็นแบบซ้ําๆ สิ่งที่คุณเรียนรู้ขึ้นอยู่กับคําถามของคุณและวิธีที่คุณสํารวจข้อมูล ลิงก์ความหมายเพิ่มเครื่องมือที่ช่วยให้คุณทําข้อมูลได้มากขึ้น

สํารวจบทช่วยสอนอื่น ๆ สําหรับลิงก์ความหมายและ SemPy:

\n\n