แชร์ผ่าน


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

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

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

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

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

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

  2. ดาวน์โหลดไฟล์ Customer Profitability Sample.pbix จากที่เก็บ GitHub ของ fabric-samples

  3. ในพื้นที่ทํางานของคุณ ให้เลือก นําเข้ารายงาน>หรือ>รายงานที่มีการแบ่งหน้า จากคอมพิวเตอร์เครื่องนี้ อัปโหลดไฟล์ Customer Profitability Sample.pbix ไปยังพื้นที่ทํางานของคุณ

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

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

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

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

  1. ใช้เพื่อ %pip ติดตั้ง SemPy จาก PyPI ในโน้ตบุ๊ก

    %pip install semantic-link
    
  2. นําเข้าโมดูลที่คุณต้องการ

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

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

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

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

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

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

    แม้ว่าผลลัพธ์จะดูเหมือน DataFrame ของแพนด้า แต่โค้ดนี้จะเริ่มต้นโครงสร้างข้อมูลที่เรียกว่า a ที่ FabricDataFrame เพิ่มการดําเนินการที่ด้านบนของแพนด้า

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

    type(customer)
    

    ผลลัพธ์แสดงให้เห็นว่า customersempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.

  4. เข้าร่วมและcustomerstateDataFrameวัตถุ

    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 CodeName.

    กราฟไม่แสดงการขึ้นต่อกันระหว่างฟังก์ชันระหว่าง 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 สําหรับ Postal Code.

  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))
    

    ภาพหน้าจอของพล็อตข้อมูลเมตาการพึ่งพาที่มีเกณฑ์เอนโทรปีสูงกว่า

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

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

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

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

    ผลลัพธ์แสดงเมือง Downers Grove ในรัฐอิลลินอยส์และเนแบรสกา อย่างไรก็ตาม Downers Grove เป็น เมืองในรัฐอิลลินอยส์ ไม่ใช่เนแบรสกา

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

    customer_state_df[customer_state_df.City=='Fremont']
    

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

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

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

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

  9. ดูลูกค้า SDI Designอย่างใกล้ชิด :

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

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

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

ดูบทช่วยสอนอื่น ๆ สําหรับ semantic link และ SemPy: