หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ทุกครั้งที่การรีเฟรชตามกําหนดการทํางานสําหรับมุมมองทะเลสาบที่เป็นรูปธรรม Fabric จะกําหนดกลยุทธ์ที่ดีที่สุดที่จะใช้ ไม่มีการรีเฟรช แบบเพิ่มหน่วย หรือแบบเต็ม โดยอิงจากสิ่งที่เปลี่ยนแปลงในข้อมูลต้นทาง ลักษณะการทํางานนี้เรียกว่าการ รีเฟรชที่เหมาะสมที่สุด และช่วยให้คุณอัปเดตมุมมองทะเลสาบที่เป็นรูปธรรมของคุณอยู่เสมอในขณะที่ลดต้นทุนการคํานวณและเวลารีเฟรช
บทความนี้อธิบายวิธีการทํางานของการรีเฟรชที่เหมาะสมที่สุด แต่ละกลยุทธ์ทําอะไร และวิธีการสลับไปยังโหมดการรีเฟรชแบบเต็มเมื่อจําเป็น
หมายเหตุ
การรีเฟรชที่เหมาะสมที่สุดไม่ได้รับการสนับสนุนในสถานการณ์ต่อไปนี้:
- คําจํากัดความของ PySpark: การรีเฟรชที่เหมาะสมที่สุดจะใช้กับ MLV ที่กําหนดด้วย Spark SQL เท่านั้น MLV ที่กําหนดโดย PySpark จะใช้การรีเฟรชแบบเต็มเสมอ
- ตารางต้นทางที่ไม่ใช่เดลต้า: มุมมองทะเลสาบที่เป็นรูปธรรมที่ใช้ตารางที่ไม่ใช่เดลต้าเป็นแหล่งที่มาจะทําการรีเฟรชแบบเต็มเสมอ กลยุทธ์แบบเพิ่มหน่วยและไม่รีเฟรชต้องใช้แหล่งข้อมูลตารางเดลต้า
ประโยชน์ของการรีเฟรชที่เหมาะสมที่สุด
ด้วยการวิเคราะห์การคอมมิตเดลต้าบนตารางต้นทาง การรีเฟรชที่เหมาะสมที่สุดสามารถตัดสินใจได้อย่างชาญฉลาดเกี่ยวกับวิธีการประมวลผลข้อมูลของคุณ หากเป็นไปได้ อาจส่งผลให้:
- ต้นทุนที่ต่ํากว่า: มีการใช้การประมวลผลและที่เก็บข้อมูลน้อยลงเมื่อ Fabric ตรวจพบว่าข้อมูลต้นทางไม่เปลี่ยนแปลงและข้ามการรีเฟรชทั้งหมด ไม่มีค่าธรรมเนียมเพิ่มเติมสําหรับการรีเฟรชที่เหมาะสมที่สุด คุณจะถูกเรียกเก็บเงินตามการใช้งานการประมวลผลระหว่างการดําเนินการรีเฟรช
- ปรับปรุงประสิทธิภาพ: รอบการรีเฟรชที่เร็วขึ้นเมื่อจําเป็นต้องประมวลผลเฉพาะข้อมูลที่เปลี่ยนแปลง ซึ่งช่วยให้คุณส่งมอบข้อมูลเชิงลึกที่สดใหม่ยิ่งขึ้น
- ประหยัดเวลา: ลดระยะเวลาการรีเฟรชเมื่อใช้การประมวลผลส่วนเพิ่มแทนการคํานวณชุดข้อมูลทั้งหมดอีกครั้ง
กลยุทธ์การรีเฟรชที่เหมาะสมที่สุด
ตารางต่อไปนี้อธิบายกลยุทธ์การรีเฟรชที่การรีเฟรชที่เหมาะสมที่สุดสามารถเลือกได้:
| นโยบายการรีเฟรช | คำอธิบาย |
|---|---|
| ไม่มีการรีเฟรช | หากตรวจไม่พบการคอมมิตเดลต้าใหม่บนตารางต้นทาง Fabric จะข้ามการรีเฟรชทั้งหมด เพื่อหลีกเลี่ยงการคํานวณที่ไม่จําเป็น |
| การรีเฟรชแบบเพิ่มหน่วย | ประมวลผลเฉพาะข้อมูลที่เปลี่ยนแปลงเมื่อตรวจพบการคอมมิตเดลต้าใหม่บนตารางต้นทาง |
| รีเฟรชเต็มรูปแบบ | คํานวณมุมมองทะเลสาบที่เป็นรูปธรรมทั้งหมดจากชุดข้อมูลต้นทางทั้งหมด กลยุทธ์นี้ใช้เมื่อตรวจพบนิพจน์ที่ไม่รองรับ เมื่อไม่สามารถประมวลผลการเปลี่ยนแปลงแบบเพิ่มหน่วยได้ หรือเมื่อชุดข้อมูลต้นทางมีขนาดเล็กพอที่การคํานวณซ้ําแบบเต็มจะเร็วกว่าการประมวลผลแบบเพิ่มหน่วย |
สําคัญ
การรีเฟรชแบบเพิ่มหน่วยจะใช้เฉพาะเมื่อทั้งสองข้อต่อไปนี้เป็นจริง:
- ข้อมูลต้นฉบับเป็นแบบผนวกเท่านั้นสําหรับรอบการรีเฟรช หากรอบการรีเฟรชตรวจพบการลบหรือการอัปเดตบนตารางต้นทาง กลไกจัดการจะกลับไปใช้การรีเฟรชแบบเต็ม แม้ว่าจะเปิดใช้งาน CDF และคิวรีจะใช้เฉพาะโครงสร้าง SQL ที่ได้รับการสนับสนุนเท่านั้น สําหรับรายละเอียดเพิ่มเติม โปรดดู การรีเฟรชแบบเพิ่มหน่วยและข้อมูลผนวกอย่างเดียว
-
ฟีดข้อมูลการเปลี่ยนแปลงเดลต้า (CDF) จะเปิดใช้งาน (
delta.enableChangeDataFeed=true) ในตารางแหล่งข้อมูลทั้งหมดที่อ้างอิงในคําจํากัดความของมุมมองทะเลสาบที่เป็นรูปธรรม หากไม่มี CDF การรีเฟรชที่เหมาะสมที่สุดสามารถเลือกได้ระหว่างการไม่รีเฟรชและการรีเฟรชเต็มรูปแบบเท่านั้น สําหรับข้อมูลเพิ่มเติม โปรดดู เปิดใช้งานการรีเฟรชแบบเพิ่มหน่วย
ตั้งค่าการรีเฟรชที่เหมาะสมที่สุด
การสลับการรีเฟรชที่เหมาะสมที่สุดช่วยให้คุณไม่ต้องรีเฟรชและรีเฟรชเต็มรูปแบบโดยไม่ต้องตั้งค่าเพิ่มเติม หากต้องการปลดล็อกกลยุทธ์การรีเฟรชแบบเพิ่มหน่วย คุณจําเป็นต้องเปิดใช้งานฟีดข้อมูลการเปลี่ยนแปลงบนตารางต้นทางของคุณด้วย
เปิดโหมดรีเฟรชที่เหมาะสมที่สุด
โดยค่าเริ่มต้น โหมดการรีเฟรชที่เหมาะสมที่สุดจะเปิดใช้งานสําหรับสายข้อมูลมุมมองทะเลสาบที่เป็นรูปธรรม หากไม่ได้เปิดใช้งาน ให้ทําตามขั้นตอนเหล่านี้เพื่อเปิดใช้:
ไปที่เลคเฮาส์ของคุณแล้วเลือก วิวทะเลสาบที่เป็นรูปธรรม
เลือก จัดการ แล้วเลือกการ สลับ การรีเฟรชที่เหมาะสมที่สุด เพื่อเปิด
การรีเฟรชแบบเพิ่มหน่วยและข้อมูลผนวกเท่านั้น
วันนี้ การรีเฟรชแบบเพิ่มหน่วยจะใช้เฉพาะเมื่อข้อมูลต้นทางเป็น แบบผนวกระหว่าง การรีเฟรชเท่านั้น ถ้าตารางต้นฉบับใดๆ บันทึกการลบหรือการอัปเดต Fabric จะกลับไปใช้การรีเฟรชแบบเต็ม แม้ว่าจะเปิดใช้งาน CDF และแบบสอบถามที่ใช้เฉพาะ รองรับ SQL constructs
กลไกจัดการต้องการวิธีที่เชื่อถือได้ในการระบุแถวที่ถูกลบ เพื่อปรับปรุงประสิทธิภาพ ผู้ใช้สามารถระบุคําแนะนําการรีเฟรชได้ เรากําลังนําร่องสิ่งนี้กับลูกค้าที่เลือก
เปิดใช้งานการรีเฟรชแบบเพิ่มหน่วย
หากต้องการใช้การรีเฟรชแบบเพิ่มหน่วย คุณต้องเปิดใช้งานคุณสมบัติฟีดข้อมูลการเปลี่ยนแปลงเดลต้า (CDF) บนตารางต้นทางทั้งหมดหรือมุมมองทะเลสาบที่เป็นรูปธรรมที่อ้างอิงในข้อกําหนดมุมมองทะเลสาบที่เป็นรูปธรรม CDF ช่วยให้ Fabric อ่านเฉพาะแถวที่เปลี่ยนแปลงตั้งแต่การรีเฟรชครั้งล่าสุด แทนที่จะประมวลผลชุดข้อมูลทั้งหมดอีกครั้ง
หากไม่มีการเปิดใช้งาน CDF การรีเฟรชที่เหมาะสมที่สุดจะสามารถเลือกได้ระหว่างการไม่รีเฟรชและการรีเฟรชแบบเต็มเท่านั้น
Tip
เพื่อช่วยคุณระบุโอกาสในการเพิ่มประสิทธิภาพการรีเฟรช Fabric จะแสดงแบนเนอร์ที่แสดงรายการมุมมองทะเลสาบที่เป็นรูปธรรมที่มีสิทธิ์สําหรับการรีเฟรชแบบเพิ่มหน่วย แต่ถูกบล็อกเนื่องจากไม่ได้เปิดใช้งาน CDF บนตารางแหล่งข้อมูลอย่างน้อยหนึ่งตาราง แบนเนอร์จะปรากฏใน มุมมองสายข้อมูล ในรายละเอียดการ เรียกใช้ล่าสุด และที่ระดับ โหนดแต่ละโหนด คุณจึงสามารถระบุช่องว่างได้จากจุดเริ่มต้นใดก็ได้ที่คุณใช้
วิธีเปิดใช้งาน CDF โดยตรงจากแบนเนอร์
ในแบนเนอร์ ให้เลือกเปิดใช้งาน CDF
ในกล่องโต้ตอบ เปิดใช้งานการเปลี่ยนแปลงฟีดข้อมูล ให้ตรวจสอบรายการมุมมองทะเลสาบที่เป็นรูปธรรมและตารางต้นทางที่จะเปิดใช้งาน CDF
เลือก เปิดใช้งาน การรีเฟรชครั้งต่อไปจะสะท้อนถึงสถานะ CDF ที่อัปเดต
หมายเหตุ
การเปิดใช้งาน CDF บนตารางต้นทางของคุณไม่มีพื้นที่จัดเก็บที่วัดได้หรือผลกระทบด้านประสิทธิภาพสําหรับปริมาณงานแบบผนวกเท่านั้น ซึ่งเป็นสถานการณ์ที่การรีเฟรชแบบเพิ่มหน่วยรองรับ CDF เป็นคุณสมบัติของโต๊ะ Delta Lake มาตรฐานที่คุณสมบัติ Fabric อื่นๆ ก็สามารถได้รับประโยชน์เช่นกัน สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทํางานของ CDF โปรดดู ใช้ฟีดข้อมูลการเปลี่ยนแปลง Delta Lake
คุณสามารถเปิดใช้งาน CDF ในเวลาที่สร้างได้โดยการรวม TBLPROPERTIES ไว้ใน CREATE คําสั่ง:
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
สําหรับตารางต้นฉบับที่มีอยู่ ให้ใช้ ALTER TABLE เพื่อเปิดใช้งาน CDF:
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ตัวอย่างเช่น เมื่อต้องการเปิดใช้งาน CDF บนตารางต้นทางทั้งสองจาก คู่มือเริ่มต้นใช้งาน:
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
โครงสร้าง SQL ที่ได้รับการสนับสนุนโดยการรีเฟรชแบบเพิ่มหน่วย
การรีเฟรชแบบเพิ่มหน่วยจะทํางานเมื่อคําจํากัดความมุมมองทะเลสาบที่เป็นรูปธรรมของคุณใช้เฉพาะโครงสร้าง SQL ที่อธิบายไว้ที่นี่ หากคิวรีของคุณมีโครงสร้างที่ไม่รองรับ เช่น ฟังก์ชันหน้าต่างหรือฟังก์ชันที่ไม่กําหนด Fabric จะยังคงรีเฟรชข้อมูลของคุณ แต่จะกลับไปใช้การรีเฟรชแบบเต็ม
| โครงสร้าง SQL | ข้อสังเกต |
|---|---|
| นิพจน์ SELECT | รองรับฟังก์ชันและนิพจน์ในตัวที่กําหนด ฟังก์ชันที่ไม่กําหนด เช่น rand(), uuid()และ current_timestamp() ไม่ได้รับการสนับสนุน
DISTINCT และฟังก์ชันหน้าต่างไม่ได้รับการสนับสนุน |
| FROM | รองรับตารางเดลต้าและมุมมองทะเลสาบที่เป็นรูปธรรม คิวรีย่อยและ CTE จะทํางานหากใช้เฉพาะส่วนคําสั่งที่รองรับเท่านั้น |
| WHERE | รองรับเฉพาะฟังก์ชันในตัวที่กําหนดเท่านั้น |
| การเข้าร่วมภายใน | สนับสนุน |
| การเข้าร่วมด้านนอกด้านซ้าย / กึ่งเข้าร่วมด้านซ้าย | สนับสนุน การรีเฟรชแบบเพิ่มหน่วยจะทํางานก็ต่อเมื่อตารางด้านขวายังคงไม่เปลี่ยนแปลงในระหว่างรอบการรีเฟรช การเปลี่ยนแปลงใดๆ ในตารางด้านขวาจะทริกเกอร์การรีเฟรชแบบเต็มรูปแบบ |
| GROUP BY / รวม | สนับสนุน การใช้ Aggregates (AVG(), STDDEV(), และอื่น ๆ) ต้องการให้ทุกตารางต้นทางถูกแบ่งพาร์ติชัน และคอลัมน์พาร์ติชันต้องถูกรวมอยู่ใน GROUP BY clause ของคําสั่ง MLV - ข้อกําหนดนี้ช่วยให้ Fabric คํานวณใหม่ทีละน้อยเฉพาะพาร์ติชันที่ได้รับผลกระทบเท่านั้น SUM(), MIN(), MAX(), และ COUNT() (โดยไม่มี DISTINCT) เป็น กรณีพิเศษ: รองรับการรีเฟรชแบบเพิ่มทีละน้อยโดยไม่ต้องมีการแบ่งส่วน การผสมฟังก์ชันรวมอื่น ๆ ที่มี SUM(), COUNT(), MIN(), และMAX()ในคําสั่งเดียวกัน (เช่น SELECT SUM(amount), AVG(price) ...) จะต้องมีเงื่อนไขการแบ่งพาร์ติชันสําหรับคําสั่งทั้งหมด มิฉะนั้น Fabric จะกลับไปเป็นการรีเฟรชเต็มรูปแบบ
GROUP BYคอลัมน์ต้องปรากฏในรายการSELECT |
| ยูเนี่ยนออล | สนับสนุน |
| WITH | นิพจน์ตารางทั่วไป (CTE) หากใช้เฉพาะส่วนคําสั่งที่รองรับ |
| คิวรีย่อยในนิพจน์ | คิวรีย่อยภายในนิพจน์ SELECT หรือ WHERE (เช่น คิวรีย่อยสเกลาร์ หรือ EXISTS) ทริกเกอร์การรีเฟรชแบบเต็มหากตารางที่อ้างอิงมีการเปลี่ยนแปลง |
| ข้อจํากัดด้านคุณภาพข้อมูล | เฉพาะฟังก์ชันในตัวที่กําหนดเท่านั้นที่ได้รับการสนับสนุนในข้อจํากัด |
หมายเหตุ
การใช้โครงสร้างที่ไม่รองรับไม่ได้ป้องกันไม่ให้คุณสร้างมุมมองทะเลสาบที่เป็นรูปธรรม หมายความว่า Fabric ใช้การรีเฟรชแบบเต็มรูปแบบแทนการรีเฟรชแบบเพิ่มหน่วย
รีเฟรชเต็มรูปแบบ
การรีเฟรชที่เหมาะสมที่สุดจะกลับไปรีเฟรชเต็มรูปแบบโดยอัตโนมัติเมื่อจําเป็น ดังนั้นคุณจึงไม่จําเป็นต้องบังคับตามปกติ อย่างไรก็ตาม มีบางกรณีที่คุณอาจต้องการทริกเกอร์การรีเฟรชแบบเต็มด้วยตนเอง เช่น เพื่อแก้ไขปัญหาผลลัพธ์ที่ไม่คาดคิด หรือเพื่อประมวลผลข้อมูลใหม่หลังจากการแก้ไข
เรียกใช้การรีเฟรชแบบเต็มครั้งเดียวด้วย SQL
หากต้องการบังคับให้รีเฟรชมุมมองทะเลสาบที่เป็นรูปธรรมเฉพาะอย่างเต็มรูปแบบ ให้เรียกใช้คําสั่งต่อไปนี้:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
หมายเหตุ
หากชื่อพื้นที่ทํางานของคุณมีช่องว่าง ให้ใส่เครื่องหมายแบ็คติ๊ก: `My Workspace`.lakehouse.schema.view_name
ปิดการรีเฟรชที่เหมาะสมที่สุด
หากคุณต้องการให้ทุกการเรียกใช้ตามกําหนดการทําการรีเฟรชแบบเต็ม คุณสามารถปิดการสลับการรีเฟรชที่เหมาะสมที่สุดได้ การดําเนินการนี้จะปิดใช้งานทั้งกลยุทธ์การไม่รีเฟรชและส่วนเพิ่ม—ทุกครั้งที่เรียกใช้จะคํานวณชุดข้อมูลทั้งหมดใหม่ แม้ว่าจะไม่มีการเปลี่ยนแปลงข้อมูลต้นฉบับก็ตาม
ไปที่เลคเฮาส์ของคุณแล้วเลือก วิวทะเลสาบที่เป็นรูปธรรม
คลิกที่จัดการและปิดการสลับการรีเฟรชที่เหมาะสมที่สุด