แชร์ผ่าน


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

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

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

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

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

  • เลือก พื้นที่ทํางาน จากบานหน้าต่างนําทางด้านซ้ายเพื่อค้นหาและเลือกพื้นที่ทํางานของคุณ พื้นที่ทํางานนี้จะกลายเป็นพื้นที่ทํางานปัจจุบันของคุณ

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

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

สมุดบันทึก powerbi_relationships_tutorial.ipynb มาพร้อมกับบทช่วยสอนนี้

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

ถ้าคุณต้องการคัดลอกและวางรหัสจากหน้านี้แทน คุณสามารถสร้าง สมุดบันทึกใหม่ได้

ตรวจสอบให้แน่ใจว่าแนบ lakehouse เข้ากับสมุดบันทึก ก่อนที่คุณจะเริ่มเรียกใช้รหัส

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

ในส่วนนี้ คุณตั้งค่าสภาพแวดล้อมของสมุดบันทึกด้วยโมดูลและข้อมูลที่จําเป็น

  1. ติดตั้ง SemPy จาก 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)
    

สํารวจแบบจําลองความหมาย

บทช่วยสอนนี้ใช้แบบจําลองความหมายมาตรฐาน ตัวอย่างความสามารถในการทํากําไรลูกค้าตัวอย่าง.pbix สําหรับคําอธิบายของแบบจําลองความหมาย ดูตัวอย่างความสามารถในการทํากําไรลูกค้าสําหรับ Power BI

  • ใช้ฟังก์ชันของ list_datasets SemPy เพื่อสํารวจแบบจําลองความหมายในพื้นที่ทํางานปัจจุบันของคุณ:

    fabric.list_datasets()
    

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

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

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

  1. โหลดความสัมพันธ์ที่กําหนดไว้ล่วงหน้าและจัดเก็บไว้ภายใน แบบจําลองความหมายตัวอย่าง ความสามารถในการทํากําไรลูกค้าโดยใช้ฟังก์ชันของ list_relationships SemPy ฟังก์ชันนี้แสดงรายการจากแบบจําลองออบเจ็กต์ Tabular:

    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
    

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

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

    autodetected.drop(index=[3,4], inplace=True)
    autodetected
    

    ตอนนี้คุณมีความสัมพันธ์ที่ถูกต้อง แต่ไม่สมบูรณ์

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

    plot_relationship_metadata(autodetected)
    

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

  5. โหลดตารางทั้งหมดจากแบบจําลองแสดงความหมายโดยใช้ฟังก์ชัน และ read_table ของ list_tables SemPy:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. ค้นหาความสัมพันธ์ระหว่างตาราง โดยใช้ find_relationshipsและตรวจทานผลลัพธ์บันทึกเพื่อรับข้อมูลเชิงลึกบางอย่างเกี่ยวกับวิธีการทํางานของฟังก์ชันนี้:

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

    plot_relationship_metadata(suggested_relationships_all)
    

    สกรีนช็อตที่แสดงการแสดงภาพของความสัมพันธ์ที่ค้นพบใหม่

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

  8. 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. ตรวจสอบการทับซ้อนของค่าคีย์หลักและนอก (foreign key) โดยใช้ list_relationship_violations ฟังก์ชัน ใส่เอาต์พุตของ list_relationships ฟังก์ชันเป็นข้อมูลป้อนเข้าไปยัง list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

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

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

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