หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
นําไปใช้กับ:✅ ตําแหน่งข้อมูลการวิเคราะห์ SQL ใน Microsoft Fabric
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีสร้างไปป์ไลน์ Microsoft Fabric เพื่อดําเนินการบํารุงรักษาตารางอัจฉริยะ
โซลูชันนี้เรียกใช้กระบวนงานที่เก็บไว้ sys.sp_get_table_health_metrics T-SQL บนจุดสิ้นสุดการวิเคราะห์ Lakehouse SQL ประเมินผลลัพธ์ และเรียกใช้ OPTIMIZE เฉพาะเมื่อตารางต้องการการบํารุงรักษาจริงๆ เท่านั้น รูปแบบ "ตรวจสอบแล้วดําเนินการ" นี้ช่วยป้องกันการใช้จ่ายในการประมวลผลที่ไม่จําเป็นในตารางที่สมบูรณ์ พร้อมทั้งทําให้แน่ใจว่าตารางที่เสื่อมสภาพจะได้รับการบํารุงรักษาโดยอัตโนมัติ
เหตุใดจึงจําเป็นต้องบํารุงรักษา
ตาราง Lakehouse สามารถสะสมไฟล์ Parquet ขนาดเล็กมากเกินไปเมื่อเวลาผ่านไป ซึ่งส่งผลเสียต่อประสิทธิภาพการสืบค้นบนปลายทางการวิเคราะห์ SQL
แทนที่จะทํางาน OPTIMIZE ตามกําหนดการคงที่โดยไม่คํานึงถึงสถานะของตาราง ไปป์ไลน์นี้จะทําการตัดสินใจอย่างชาญฉลาด: จะตรวจสอบความสมบูรณ์ของตารางก่อน และทริกเกอร์การเพิ่มประสิทธิภาพเมื่อตรวจพบความผิดปกติเท่านั้น
ข้อกำหนดเบื้องต้น
ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:
- พื้นที่ทํางาน Microsoft Fabric ที่มีสิทธิ์ผู้สนับสนุนหรือสูงกว่า
- เลคเฮาส์ในพื้นที่ทํางานนั้นที่มีตารางเดลต้าอย่างน้อยหนึ่งตารางที่คุณต้องการตรวจสอบ บทช่วยสอนนี้ใช้ Lakehouse ชื่อ
SalesDataLakehouse. - ความคุ้นเคยกับไปป์ไลน์ข้อมูล Fabric
- ความคุ้นเคยกับโน้ตบุ๊ก Fabric
โครงสร้างโซลูชัน
ไปป์ไลน์ที่เสร็จสมบูรณ์มีโครงสร้างดังนี้:
-
กิจกรรมสคริปต์: ดําเนินการ
sp_get_table_health_metricsกับตารางเป้าหมายและส่งคืนเมตริกความสมบูรณ์ของตารางเป็นเอาต์พุตที่มีโครงสร้าง -
ถ้ากิจกรรมเงื่อนไข: อ่าน
PotentialAnomalyTypeโดยตรงจากเอาต์พุตสคริปต์และตรวจสอบว่ามีค่ามากกว่าศูนย์หรือไม่ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับPotentialAnomalyType, ดู รหัสชนิดความผิดปกติที่อาจเกิดขึ้น -
กิจกรรมสมุดบันทึก (ภายในสาขา True ): ทํางาน
OPTIMIZEบนตารางจากสมุดบันทึก Spark
ในตอนท้ายของบทช่วยสอนนี้ คุณจะมีสมุดบันทึกที่รับพารามิเตอร์จากไปป์ไลน์และปรับตารางให้เหมาะสมเมื่อถูกทริกเกอร์
ขั้นตอนที่ 1: สร้างสมุดบันทึกการเพิ่มประสิทธิภาพ
สมุดบันทึกยอมรับ Lakehouse, Schema และชื่อตารางเป้าหมายเป็นพารามิเตอร์จากไปป์ไลน์ จากนั้นดําเนินการ OPTIMIZE โดยใช้ Spark SQL
- ในพื้นที่ทํางาน Fabric ของคุณ ให้เลือก+ สมุดบันทึกรายการใหม่>
- ตั้งชื่อสมุดบันทึกว่า Optimize-Table
- ภายใต้ สถานที่ ให้เลือกเลคเฮาส์ที่จัดเก็บตารางที่คุณตรวจสอบ แบบฝึกหัดนี้ใช้เลคเฮาส์ชื่อ
SalesDataLakehouse. - เลือก สร้าง
เพิ่มเซลล์พารามิเตอร์
เซลล์แรกกําหนดตัวแปรที่ไปป์ไลน์แทนที่ในขณะรันไทม์
ในเซลล์แรก ให้ป้อนพารามิเตอร์ต่อไปนี้ ค่าไม่สําคัญ และไปป์ไลน์จะแทนที่ค่าเหล่านั้นในรันไทม์
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"สำคัญ
การกําหนดพารามิเตอร์ทํางานอย่างไรในสมุดบันทึก Fabric: ในขณะรันไทม์ Fabric จะแทรกเซลล์ใหม่ทันทีหลังจากเซลล์พารามิเตอร์ที่กําหนดตัวแปรเหล่านี้ใหม่ด้วยค่าที่ส่งผ่านไปป์ไลน์ ค่าที่คุณตั้งค่าไว้ที่นี่จะเริ่มต้นตัวแปรและปรับปรุงความสามารถในการอ่านเท่านั้น
เลือกเมนูเซลล์ (...) >สลับเซลล์พารามิเตอร์ เพื่อทําเครื่องหมายเซลล์นี้เป็นเซลล์พารามิเตอร์
เพิ่มเซลล์ OPTIMIZE
คําสั่งนี้เป็น OPTIMIZE คําสั่ง Spark SQL ไม่ใช่คําสั่ง T-SQL คุณต้องเรียกใช้ในสภาพแวดล้อม Spark เช่น สมุดบันทึก ข้อกําหนดงาน Spark หรืออินเทอร์เฟซการบํารุงรักษา Lakehouse จุดสิ้นสุดการวิเคราะห์ SQL และตัวแก้ไขคิวรี SQL ของคลังสินค้าไม่สนับสนุนคําสั่งนี้โดยตรง
ในเซลล์ที่สอง ให้ป้อน:
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)เพิ่มเซลล์ Markdown ตามต้องการเพื่อจัดทําเอกสารสมุดบันทึกสําหรับผู้ใช้รายอื่นอย่างถูกต้อง สมุดบันทึกที่เสร็จสมบูรณ์ของคุณควรมีลักษณะดังนี้
หมายเหตุ
ตัวอย่างนี้พิจารณาเลคเฮาส์ที่เปิดใช้งานสคีมา ปรับชื่อ full_name สามส่วนตามนั้นหากคุณไม่ได้ใช้สคีมาเลคเฮาส์
ขั้นตอนที่ 2: สร้างไปป์ไลน์
ในพื้นที่ทํางาน Fabric ของคุณ ให้เลือก +ไปป์ไลน์รายการ>ใหม่
ตั้งชื่อไปป์ไลน์ Check-and-Optimize-Table
เลือกพื้นหลังพื้นที่ทํางานไปป์ไลน์ แล้วเปิดแท็บ พารามิเตอร์ เพิ่มพารามิเตอร์สามตัว:
ชื่อ ประเภท ค่าพื้นฐาน lakehouse_nameสตริง SalesDataLakehouseschema_nameสตริง dbotable_nameสตริง FactSales
ขั้นตอนที่ 3: เพิ่มกิจกรรมสคริปต์
กิจกรรมสคริปต์จะทํางาน sys.sp_get_table_health_metrics บนตําแหน่งข้อมูลการวิเคราะห์ SQL และบันทึกผลลัพธ์
สำคัญ
ใช้กิจกรรมสคริปต์ ไม่ใช่กิจกรรมกระบวนงานที่เก็บไว้ เฉพาะกิจกรรมสคริปต์เท่านั้นที่แสดงชุดผลลัพธ์เป็นเอาต์พุต JSON ที่มีโครงสร้างซึ่งกิจกรรมดาวน์สตรีมสามารถแยกวิเคราะห์ได้
- จากแท็บ กิจกรรม ให้เลือก สคริปต์ เพื่อเพิ่มลงในพื้นที่ทํางาน
- ตั้งชื่อว่า ตรวจสอบความสมบูรณ์ของตาราง
- ในแท็บ การตั้งค่า :
การเชื่อมต่อ: เลือกตําแหน่งข้อมูลการวิเคราะห์ SQL สําหรับ Lakehouse ของคุณ หากไม่อยู่ในรายการ ให้เลือก เรียกดูทั้งหมด ที่ด้านล่างของรายการดรอปดาวน์ จากนั้นค้นหาตําแหน่งข้อมูลการวิเคราะห์ SQL ของ Lakehouse ของคุณ
ชนิดสคริปต์: เลือก คิวรี
สคริปต์: เลือก เพิ่มเนื้อหาแบบไดนามิก และป้อนนิพจน์ต่อไปนี้:
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
นิพจน์นี้สร้างคําสั่ง SQL ที่รันกระบวนงานที่เก็บไว้กับตาราง EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'เป้าหมายของคุณ เช่น
ตรวจสอบเอาต์พุตสคริปต์
เรียกใช้ไปป์ไลน์หนึ่งครั้งและตรวจสอบเอาต์พุตกิจกรรมสคริปต์ คุณเห็นวัตถุ JSON ที่คล้ายกับ:
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
สำคัญ
ผลลัพธ์ที่แท้จริงของคุณอาจแตกต่างกันไปตามสถานะของตารางของคุณ กุญแจสําคัญคือมันส่งคืนคอลัมน์ที่เปิดเผยโดย sys.sp_get_table_health_metrics.
ขั้นตอนที่ 4: เพิ่มกิจกรรม If Condition
กิจกรรม If Condition จะ PotentialAnomalyType อ่านโดยตรงจากเอาต์พุตกิจกรรม Script และทําการตัดสินใจตามผลลัพธ์ ใช้ขั้นตอนต่อไปนี้:
จากแท็บ กิจกรรม ให้เลือก ถ้า เงื่อนไข เพื่อเพิ่มกิจกรรมลงบนพื้นที่ทํางาน
ตั้งชื่อว่าตรวจสอบความผิดปกติ
วาดลูกศร สําเร็จ (สีเขียว) จาก ตรวจสอบความสมบูรณ์ของตาราง เพื่อตรวจสอบความผิดปกติ
ในแท็บ กิจกรรม ของกิจกรรม เงื่อนไข ถ้า ให้ตั้งค่า นิพจน์ เป็น:
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
นิพจน์นี้อ่านแถวแรกที่ส่งคืนโดย sys.sp_get_table_health_metricsส่ง PotentialAnomalyType เป็นจํานวนเต็ม และประเมิน true เมื่อค่ามากกว่าศูนย์ ซึ่งบ่งชี้ถึงความผิดปกติที่ตรวจพบในตารางเป้าหมาย
ขั้นตอนที่ 5: เพิ่มกิจกรรมสมุดบันทึก (สาขาทรู)
เมื่อเลือกกิจกรรม หากเงื่อนไข ให้เลือก แก้ไข (ไอคอนดินสอ) ถัดจาก จริง พื้นที่ทํางานจะสลับไปยังพื้นที่ทํางานย่อยที่มีขอบเขตไปยังสาขา True
ลากกิจกรรมสมุด บันทึก ไปยังพื้นที่ทํางานย่อย True
ตั้งชื่อว่า Run OPTIMIZE
ในแท็บ การตั้งค่า :
สมุดบันทึก: เลือกสมุดบันทึก Optimize-Table ที่คุณสร้างขึ้นในขั้นตอนที่ 1
ขยาย พารามิเตอร์พื้นฐาน แล้วเพิ่มสามแถว:
ชื่อ ประเภท ค่า lakehouse_nameสตริง @pipeline().parameters.lakehouse_nameschema_nameสตริง @pipeline().parameters.schema_nametable_nameสตริง @pipeline().parameters.table_name
ค่าคอลัมน์ชื่อสามค่าต้องตรงกับชื่อตัวแปรในเซลล์พารามิเตอร์ของสมุดบันทึกทุกประการ
หมายเหตุ
คุณสามารถปล่อยให้ กิจกรรมเท็จ ว่างไว้ได้ กิจกรรม ถ้าเงื่อนไข จะถือว่าสาขา False ที่ว่างเปล่าเป็น no-op และรายงานไปป์ไลน์ว่าสําเร็จ
ไปป์ไลน์ที่เสร็จสมบูรณ์ของคุณควรมีลักษณะดังนี้:
ขั้นตอนที่ 6: ตรวจสอบและเรียกใช้
เลือก ตรวจสอบความถูกต้อง บนแถบเครื่องมือไปป์ไลน์เพื่อตรวจสอบข้อผิดพลาดในการกําหนดค่า
เลือก เรียกใช้ เพื่อเรียกใช้ไปป์ไลน์ด้วยตนเอง
ตรวจสอบการวิ่งและยืนยัน:
-
ตรวจสอบความสมบูรณ์ของตาราง: ตรวจสอบผลลัพธ์จากกิจกรรมนี้เมื่อทํางาน คุณควรเห็นผลลัพธ์จาก
sys.sp_get_table_health_metricsกระบวนงานที่เก็บไว้ในรูปแบบ JSON -
ตรวจสอบความผิดปกติ: ประเมินอย่างถูกต้องโดยการอ่าน
PotentialAnomalyTypeโดยตรงจากเอาต์พุตสคริปต์ -
เรียกใช้ OPTIMIZE (เฉพาะเมื่อ
PotentialAnomalyType > 0): หากกิจกรรม ตรวจสอบความผิดปกติ ประเมิน เป็น จริง ให้ตรวจสอบอินพุตของกิจกรรม เรียกใช้ OPTIMIZE เพื่อตรวจสอบว่าใช้พารามิเตอร์ที่ถูกต้อง (ชื่อเลคเฮาส์ สคีมา และชื่อตาราง) และตรวจสอบผลลัพธ์เพื่อตรวจสอบข้อความจากOPTIMIZEการดําเนินการ
-
ตรวจสอบความสมบูรณ์ของตาราง: ตรวจสอบผลลัพธ์จากกิจกรรมนี้เมื่อทํางาน คุณควรเห็นผลลัพธ์จาก
ล้างแหล่งข้อมูล
ถ้าคุณสร้างทรัพยากรสําหรับบทช่วยสอนนี้เท่านั้นและไม่ต้องการอีกต่อไป ให้ลบรายการต่อไปนี้ออกจากพื้นที่ทํางานของคุณ:
- ไปป์ไลน์ Check-and-Optimize-Table
- สมุดบันทึก Optimize-Table