แชร์ผ่าน


บทช่วยสอน: วิเคราะห์การขึ้นต่อกันของฟังก์ชันในแบบจําลองความหมาย

ในบทช่วยสอนนี้ คุณสร้างงานที่ทําก่อนหน้านี้โดยนักวิเคราะห์ Power BI และจัดเก็บในรูปแบบของแบบจําลองความหมาย (ชุดข้อมูล Power BI) โดยใช้ SemPy (ตัวอย่าง) ในประสบการณ์วิทยาศาสตร์ข้อมูล Synapse ภายใน Microsoft Fabric คุณสามารถวิเคราะห์การขึ้นต่อกันของฟังก์ชันการทํางานที่มีอยู่ในคอลัมน์ของ DataFrame ได้ การวิเคราะห์นี้ช่วยในการค้นหาปัญหาคุณภาพของข้อมูลที่ไม่เป็นทางการเพื่อให้ได้ข้อมูลเชิงลึกที่ถูกต้องยิ่งขึ้น

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

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

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

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

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

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

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

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

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

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

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

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

  1. ติดตั้ง SemPy จาก PyPI โดยใช้ %pip ความสามารถในการติดตั้งในบรรทัดภายในสมุดบันทึก:

    %pip install semantic-link
    
  2. ทําการนําเข้าโมดูลที่จําเป็นซึ่งคุณจะต้องใช้ในภายหลัง:

    import sempy.fabric as fabric
    from sempy.dependencies import plot_dependency_metadata
    

โหลดและประมวลผลข้อมูลล่วงหน้า

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

  1. โหลดข้อมูล Power BI ลงใน FabricDataFrames โดยใช้ฟังก์ชันของ read_table SemPy:

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. Stateโหลดตารางลงใน FabricDataFrame:

    state = fabric.read_table(dataset, "State")
    state.head()
    

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

  3. ตรวจสอบชนิดข้อมูลของ customer:

    type(customer)
    

    เอาต์พุตยืนยันว่า customer เป็นชนิด sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame. '

  4. customerเข้าร่วม และ state DataFrames:

    customer_state_df = customer.merge(state, left_on="State", right_on="StateCode",  how='left')
    customer_state_df.head()
    

ระบุการขึ้นต่อกันของฟังก์ชันการทํางาน

การแสดงการขึ้นต่อกันของฟังก์ชันการทํางานเป็นความสัมพันธ์แบบหนึ่งต่อกลุ่มระหว่างค่าในคอลัมน์สองคอลัมน์ (หรือมากกว่า) ภายใน DataFrame ความสัมพันธ์เหล่านี้สามารถใช้เพื่อตรวจหาปัญหาคุณภาพของข้อมูลโดยอัตโนมัติ

  1. เรียกใช้ฟังก์ชันของ find_dependencies SemPy บน DataFrame ที่ผสานเพื่อระบุการขึ้นต่อกันของฟังก์ชันการทํางานที่มีอยู่ระหว่างค่าในคอลัมน์:

    dependencies = customer_state_df.find_dependencies()
    dependencies
    
  2. แสดงภาพการขึ้นต่อกันที่ระบุโดยใช้ฟังก์ชันของ plot_dependency_metadata SemPy:

    plot_dependency_metadata(dependencies)
    

    สกรีนช็อตแสดงการลงจุดของเมตาดาต้าการขึ้นต่อกัน

    ตามที่คาดไว้ กราฟการขึ้นต่อกันของฟังก์ชันการทํางานแสดงให้เห็นว่าCustomerคอลัมน์กําหนดบางคอลัมน์เช่น City, Postal CodeและName

    น่าแปลกใจที่กราฟไม่แสดงการขึ้นต่อกันของฟังก์ชันการทํางานระหว่าง City และ Postal Codeอาจเนื่องมาจากมีการละเมิดมากมายในความสัมพันธ์ระหว่างคอลัมน์ คุณสามารถใช้ฟังก์ชันของ plot_dependency_violations SemPy เพื่อแสดงภาพการละเมิดการขึ้นต่อกันระหว่างคอลัมน์ที่ระบุ

สํารวจข้อมูลสําหรับปัญหาด้านคุณภาพ

  1. วาดกราฟด้วยฟังก์ชันการแสดงผลข้อมูลด้วยภาพของ plot_dependency_violations SemPy

    customer_state_df.plot_dependency_violations('Postal Code', 'City')
    

    สกรีนช็อตที่แสดงการลงจุดของการละเมิดการขึ้นต่อกัน

    พล็อตของการละเมิดการขึ้นต่อกันแสดงค่าสําหรับ Postal Code ทางด้านซ้าย มือ และค่าสําหรับ City ทางด้านขวามือ ขอบเชื่อมต่อ Postal Code ทางด้านซ้ายมือทาง City ด้านขวาหากมีแถวที่มีสองค่าเหล่านี้ ขอบจะถูกใส่คําอธิบายประกอบไว้ด้วยการนับจํานวนแถวดังกล่าว ตัวอย่างเช่น มีสองแถวที่มีรหัสไปรษณีย์ 20004 แถวหนึ่งมีเมือง "North Tower" และอีกแถวที่มีเมือง "Washington"

    นอกจากนี้ แผนภูมิยังแสดงการละเมิดบางอย่างและค่าว่างมากมาย

  2. ยืนยันจํานวนค่าว่างสําหรับ Postal Code:

    customer_state_df['Postal Code'].isna().sum()
    

    50 แถวมี NA สําหรับรหัสไปรษณีย์

  3. ทิ้งแถวพร้อมค่าว่าง จากนั้น ค้นหาการขึ้นต่อ find_dependencies กันโดยใช้ฟังก์ชัน โปรดสังเกตพารามิเตอร์ verbose=1 พิเศษที่ให้ตัวอย่างเกี่ยวกับการทํางานภายในของ SemPy:

    customer_state_df2=customer_state_df.dropna()
    customer_state_df2.find_dependencies(verbose=1)
    

    Entropy แบบมีเงื่อนไขสําหรับ Postal Code และ City คือ 0.049 ค่านี้ระบุว่ามีการละเมิดการขึ้นต่อกันของการทํางาน ก่อนที่คุณจะแก้ไขการละเมิด ให้เพิ่มค่าเกณฑ์บน entropy แบบมีเงื่อนไขจากค่าเริ่มต้นของ 0.01 เป็น 0.05เพียงเพื่อดูการขึ้นต่อกัน ค่าเกณฑ์ต่ํากว่าส่งผลให้เกิดการขึ้นต่อกันน้อยลง (หรือตัวเลือกที่สูงขึ้น)

  4. เพิ่มค่าเกณฑ์ใน entropy แบบมีเงื่อนไขจากค่าเริ่มต้นของ 0.01 เป็น 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    พล็อตของเมตาดาต้าการขึ้นต่อกันด้วยค่าเกณฑ์ที่สูงกว่าสําหรับ entropy

    ถ้าคุณนําความรู้โดเมนที่เอนทิตีกําหนดค่าของเอนทิตีอื่น กราฟการขึ้นต่อกันนี้ดูเหมือนถูกต้อง

  5. สํารวจปัญหาคุณภาพของข้อมูลที่ถูกตรวจพบเพิ่มเติม ตัวอย่างเช่น ลูกศรประรวม City และ Regionซึ่งแสดงว่าการขึ้นต่อกันเป็นค่าประมาณเท่านั้น ความสัมพันธ์โดยประมาณนี้อาจหมายความว่ามีการขึ้นต่อกันของฟังก์ชันบางส่วน

    customer_state_df.list_dependency_violations('City', 'Region')
    
  6. ดูแต่ละกรณีที่ค่าไม่ว่าง Region ทําให้เกิดการละเมิดอย่างใกล้ชิด:

    customer_state_df[customer_state_df.City=='Downers Grove']
    

    ผลแสดงเมือง Downers Grove ที่เกิดขึ้นในรัฐอิลลินอยส์และเนแบรสกา อย่างไรก็ตาม Grove ของ Downer เป็น เมืองในอิลลินอยส์ ไม่ใช่เนแบรสกา

  7. ลองดูเมือง เฟรมอนต์:

    customer_state_df[customer_state_df.City=='Fremont']
    

    มีเมืองชื่อว่าเฟรมอนต์ ในแคลิฟอร์เนีย อย่างไรก็ตาม สําหรับเท็กซัส โปรแกรมค้นหาจะส่งกลับ Premont ไม่ใช่ Fremont

  8. เป็นเรื่องน่าสงสัยว่าเห็นการละเมิดการขึ้นต่อกันระหว่าง Name และ Country/Regionตามที่ระบุโดยเส้นประในกราฟเดิมของการละเมิดการขึ้นต่อกัน (ก่อนที่จะทิ้งแถวด้วยค่าว่าง)

    customer_state_df.list_dependency_violations('Name', 'Country/Region')
    

    ซึ่งปรากฏว่าลูกค้า รายหนึ่ง SDI Design มีอยู่ในสองภูมิภาค - สหรัฐอเมริกาและแคนาดา การเกิดขึ้นนี้อาจไม่ใช่การละเมิดความหมาย แต่อาจเป็นกรณีที่ไม่ธรรมดา ถึงกระนั้นก็คุ้มค่าที่จะมองอย่างใกล้ชิด:

  9. ลองดูการออกแบบ SDI ของลูกค้าอย่างใกล้ชิด:

    customer_state_df[customer_state_df.Name=='SDI Design']
    

    การตรวจสอบเพิ่มเติมแสดงให้เห็นว่าเป็นลูกค้าสองรายที่แตกต่างกันจริง ๆ (จากอุตสาหกรรมที่แตกต่างกัน) ที่มีชื่อเดียวกัน

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

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