แชร์ผ่าน


อ่านจากแบบจําลองความหมายและเขียนข้อมูลที่สามารถใช้โดย Power BI โดยใช้ python

ในบทความนี้ คุณจะได้เรียนรู้วิธีการอ่านข้อมูลและเมตาดาต้า และประเมินหน่วยวัดในแบบจําลองความหมายโดยใช้ไลบรารี SemPy python ใน Microsoft Fabric คุณยังได้เรียนรู้วิธีการเขียนข้อมูลที่แบบจําลองความหมายสามารถใช้ได้

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

  • เยี่ยมชมประสบการณ์ด้านวิทยาศาสตร์ข้อมูลใน Microsoft Fabric
  • สร้าง สมุดบันทึกใหม่ เพื่อคัดลอก/วางรหัสลงในเซลล์
  • สําหรับ Spark 3.4 และสูงกว่า ลิงก์ความหมายจะพร้อมใช้งานในรันไทม์เริ่มต้นเมื่อใช้ Fabric และไม่จําเป็นต้องติดตั้ง ถ้าคุณกําลังใช้ Spark 3.3 หรือต่ํากว่า หรือถ้าคุณต้องการอัปเดตเป็นลิงก์ความหมายเวอร์ชันล่าสุด คุณสามารถเรียกใช้คําสั่งได้: python %pip install -U semantic-link  
  • เพิ่มเลคเฮาส์ลงในสมุดบันทึกของคุณ
  • ดาวน์โหลด แบบจําลองความหมาย Customer Profitability Sample.pbix จากโฟลเดอร์ชุดข้อมูลของที่เก็บตัวอย่างสิ่งทอ และบันทึกแบบจําลองความหมายภายในเครื่อง

อัปโหลดแบบจําลองความหมายลงในพื้นที่ทํางานของคุณ

บทความนี้ใช้แบบจําลองความหมาย Customer Profitability Sample.pbix แบบจําลองความหมายนี้อ้างอิงถึงเอกสารการตลาดการผลิตของบริษัท ซึ่งประกอบด้วยข้อมูลผลิตภัณฑ์ ลูกค้า และรายได้ที่สอดคล้องกันสําหรับหน่วยธุรกิจต่าง ๆ

  1. เปิดพื้นที่ทํางานของคุณใน Fabric Data Science
  2. เลือก อัปโหลด>เรียกดู และเลือกแบบจําลองความหมาย ตัวอย่างความสามารถในการทํากําไรสําหรับลูกค้า.pbix

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

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

สกรีนช็อตแสดงรายการจากไฟล์ Power BI ที่อัปโหลดลงในพื้นที่ทํางาน

ใช้ Python เพื่ออ่านข้อมูลจากแบบจําลองความหมาย

SemPy Python API สามารถดึงข้อมูลและเมตาดาต้าจากแบบจําลองความหมายที่ตั้งอยู่ในพื้นที่ทํางานของ Microsoft Fabric API ยังสามารถดําเนินการคิวรีได้

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

  • พื้นที่ทํางานของเลคเฮ้าส์หากคุณแนบเลคเฮาส์เข้ากับโน้ตบุ๊คของคุณ
  • พื้นที่ทํางานของสมุดบันทึกของคุณ ถ้าไม่มีเลคเฮาส์ติดอยู่

หากแบบจําลองความหมายของคุณไม่อยู่ในพื้นที่ทํางานเหล่านี้ คุณต้องระบุพื้นที่ทํางานของแบบจําลองความหมายของคุณเมื่อคุณเรียกใช้เมธอด SemPy

ในการอ่านข้อมูลจากแบบจําลองความหมาย:

  1. ระบุรายการแบบจําลองความหมายที่มีอยู่ในพื้นที่ทํางานของคุณ

    import sempy.fabric as fabric
    
    df_datasets = fabric.list_datasets()
    df_datasets
    
  2. ระบุรายการตารางที่พร้อมใช้งานใน แบบจําลองความหมายตัวอย่าง ความสามารถในการทํากําไรลูกค้า

    df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True)
    df_tables
    
  3. ระบุรายการหน่วยวัดที่กําหนดใน แบบจําลองความหมายตัวอย่าง ความสามารถในการทํากําไรลูกค้า

    เคล็ดลับ

    ในตัวอย่างโค้ดต่อไปนี้ เราได้ระบุพื้นที่ทํางานสําหรับ SemPy เพื่อใช้สําหรับการเข้าถึงแบบจําลองความหมาย คุณสามารถแทนที่ Your Workspace ด้วยชื่อของพื้นที่ทํางานที่คุณอัปโหลดแบบจําลองแสดงความหมาย (จาก อัปโหลดแบบจําลองแสดงความหมายลงในส่วนพื้นที่ทํางาน ของคุณ)

    df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace")
    df_measures
    

    ที่นี่ เรากําหนดว่า ตารางลูกค้า เป็นตารางที่สนใจ

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

    df_table = fabric.read_table("Customer Profitability Sample", "Customer")
    df_table
    

    หมายเหตุ

    • ข้อมูลจะถูกเรียกใช้โดยใช้ XMLA ซึ่งจําเป็นต้องมีการเปิดใช้งาน XMLA แบบอ่านอย่างเดียวเป็นอย่างน้อย
    • จํานวนข้อมูลที่เรียกได้ถูกจํากัดโดย - หน่วยความจําสูงสุดต่อคิวรี ของความจุ SKU ที่โฮสต์แบบจําลองความหมาย - โหนดโปรแกรมควบคุม Spark (เยี่ยมชม ขนาด โหนดสําหรับข้อมูลเพิ่มเติม) ที่เรียกใช้สมุดบันทึก
    • คําขอทั้งหมดใช้ลําดับความสําคัญต่ําเพื่อลดผลกระทบต่อประสิทธิภาพการทํางานของ Microsoft Azure Analysis Services และจะถูกเรียกเก็บเงินเป็น คําขอแบบโต้ตอบ
  5. ประเมินหน่วยวัดรายได้รวมสําหรับรัฐและวันที่ของลูกค้าแต่ละราย

    df_measure = fabric.evaluate_measure(
        "Customer Profitability Sample",
        "Total Revenue",
        ["'Customer'[State]", "Calendar[Date]"])
    df_measure
    

    หมายเหตุ

    • ตามค่าเริ่มต้น ข้อมูลจะไม่ถูกเรียกใช้โดยใช้ XMLA ดังนั้นจึงไม่จําเป็นต้องเปิดใช้งาน XMLA แบบอ่านอย่างเดียว
    • ข้อมูล ไม่ อยู่ภายใต้ ข้อจํากัด Backend ของ Power BI
    • จํานวนข้อมูลที่เรียกได้ถูกจํากัดโดย - หน่วยความจําสูงสุดต่อคิวรี ของความจุ SKU ที่โฮสต์แบบจําลองความหมาย - โหนดโปรแกรมควบคุม Spark (เยี่ยมชม ขนาด โหนดสําหรับข้อมูลเพิ่มเติม) ที่ใช้งานสมุดบันทึก
    • คําขอทั้งหมดจะถูกเรียกเก็บเงินเป็น คําขอแบบโต้ตอบ
  6. หากต้องการเพิ่มตัวกรองลงในการคํานวณหน่วยวัด ให้ระบุรายการของค่าที่อนุญาตสําหรับคอลัมน์เฉพาะ

    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
    
  7. คุณยังสามารถประเมิน หน่วยวัดรายได้ รวมต่อรัฐและวันที่ของลูกค้าด้วย คิวรี 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 และจะถูกเรียกเก็บเงินเป็นคําขอแบบโต้ตอบ
  8. ใช้เวทมนตร์ของ %%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()
    
  9. คุณสามารถเพิ่มหน่วยวัดไปยังข้อมูลที่ดึงมาจากแหล่งข้อมูลภายนอกได้ วิธีการนี้รวมงานสามอย่าง:

    • ซึ่งแก้ไขชื่อคอลัมน์เป็นมิติ 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: สําหรับค่า "จริง" pandas แปลงคอลัมน์ DataFrame ผลลัพธ์เป็น convert_dtypes dtypeที่ดีที่สุดที่เป็นไปได้ ถ้าพารามิเตอร์นี้ถูกปิด พิมพ์ปัญหาความไม่เข้ากันระหว่างคอลัมน์ของตารางที่เกี่ยวข้องอาจส่งผล; แบบจําลอง Power BI อาจไม่ตรวจพบปัญหาเหล่านั้นเนื่องจากการแปลงประเภทโดยนัยของ DAX

SemPy read_table ยังใช้ข้อมูลแบบจําลองที่ Power BI ให้ไว้

  • multiindex_hierarchies: ถ้า "True" จะแปลง ลําดับชั้น Power BI เป็นโครงสร้าง Pandas MultiIndex

เขียนข้อมูลที่สามารถใช้งานโดยแบบจําลองความหมาย

ตาราง Spark ที่เพิ่มไปยังเลคเฮ้าส์จะถูกเพิ่มโดยอัตโนมัติไปยังแบบจําลองความหมายเริ่มต้นที่สอดคล้องกัน ตัวอย่างนี้สาธิตวิธีการเขียนข้อมูลไปยังเลคเฮ้าส์ที่แนบมา FabricDataFrame ยอมรับข้อมูลป้อนเข้าเดียวกันเป็นกรอบข้อมูล Pandas

from sempy.fabric import FabricDataFrame

df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})

df_forecast.to_lakehouse_table("ForecastTable")

ด้วย Power BI ตาราง ForecastTable สามารถเพิ่มลงในแบบจําลองความหมายแบบรวมด้วยแบบจําลองความหมายของ Lakehouse ได้