การรีเฟรชที่เหมาะสมที่สุดสําหรับทิวทัศน์ทะเลสาบในเลคเฮาส์

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

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

หมายเหตุ

การรีเฟรชที่เหมาะสมที่สุดไม่ได้รับการสนับสนุนในสถานการณ์ต่อไปนี้:

  • คําจํากัดความของ PySpark: การรีเฟรชที่เหมาะสมที่สุดจะใช้กับ MLV ที่กําหนดด้วย Spark SQL เท่านั้น MLV ที่กําหนดโดย PySpark จะใช้การรีเฟรชแบบเต็มเสมอ
  • ตารางต้นทางที่ไม่ใช่เดลต้า: มุมมองทะเลสาบที่เป็นรูปธรรมที่ใช้ตารางที่ไม่ใช่เดลต้าเป็นแหล่งที่มาจะทําการรีเฟรชแบบเต็มเสมอ กลยุทธ์แบบเพิ่มหน่วยและไม่รีเฟรชต้องใช้แหล่งข้อมูลตารางเดลต้า

ประโยชน์ของการรีเฟรชที่เหมาะสมที่สุด

ด้วยการวิเคราะห์การคอมมิตเดลต้าบนตารางต้นทาง การรีเฟรชที่เหมาะสมที่สุดสามารถตัดสินใจได้อย่างชาญฉลาดเกี่ยวกับวิธีการประมวลผลข้อมูลของคุณ หากเป็นไปได้ อาจส่งผลให้:

  • ต้นทุนที่ต่ํากว่า: มีการใช้การประมวลผลและที่เก็บข้อมูลน้อยลงเมื่อ Fabric ตรวจพบว่าข้อมูลต้นทางไม่เปลี่ยนแปลงและข้ามการรีเฟรชทั้งหมด ไม่มีค่าธรรมเนียมเพิ่มเติมสําหรับการรีเฟรชที่เหมาะสมที่สุด คุณจะถูกเรียกเก็บเงินตามการใช้งานการประมวลผลระหว่างการดําเนินการรีเฟรช
  • ปรับปรุงประสิทธิภาพ: รอบการรีเฟรชที่เร็วขึ้นเมื่อจําเป็นต้องประมวลผลเฉพาะข้อมูลที่เปลี่ยนแปลง ซึ่งช่วยให้คุณส่งมอบข้อมูลเชิงลึกที่สดใหม่ยิ่งขึ้น
  • ประหยัดเวลา: ลดระยะเวลาการรีเฟรชเมื่อใช้การประมวลผลส่วนเพิ่มแทนการคํานวณชุดข้อมูลทั้งหมดอีกครั้ง

กลยุทธ์การรีเฟรชที่เหมาะสมที่สุด

ตารางต่อไปนี้อธิบายกลยุทธ์การรีเฟรชที่การรีเฟรชที่เหมาะสมที่สุดสามารถเลือกได้:

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

สําคัญ

การรีเฟรชแบบเพิ่มหน่วยจะใช้เฉพาะเมื่อทั้งสองข้อต่อไปนี้เป็นจริง:

  • ข้อมูลต้นฉบับเป็นแบบผนวกเท่านั้นสําหรับรอบการรีเฟรช หากรอบการรีเฟรชตรวจพบการลบหรือการอัปเดตบนตารางต้นทาง กลไกจัดการจะกลับไปใช้การรีเฟรชแบบเต็ม แม้ว่าจะเปิดใช้งาน CDF และคิวรีจะใช้เฉพาะโครงสร้าง SQL ที่ได้รับการสนับสนุนเท่านั้น สําหรับรายละเอียดเพิ่มเติม โปรดดู การรีเฟรชแบบเพิ่มหน่วยและข้อมูลผนวกอย่างเดียว
  • ฟีดข้อมูลการเปลี่ยนแปลงเดลต้า (CDF) จะเปิดใช้งาน (delta.enableChangeDataFeed=true) ในตารางแหล่งข้อมูลทั้งหมดที่อ้างอิงในคําจํากัดความของมุมมองทะเลสาบที่เป็นรูปธรรม หากไม่มี CDF การรีเฟรชที่เหมาะสมที่สุดสามารถเลือกได้ระหว่างการไม่รีเฟรชและการรีเฟรชเต็มรูปแบบเท่านั้น สําหรับข้อมูลเพิ่มเติม โปรดดู เปิดใช้งานการรีเฟรชแบบเพิ่มหน่วย

ตั้งค่าการรีเฟรชที่เหมาะสมที่สุด

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

เปิดโหมดรีเฟรชที่เหมาะสมที่สุด

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

  1. ไปที่เลคเฮาส์ของคุณแล้วเลือก วิวทะเลสาบที่เป็นรูปธรรม

  2. เลือก จัดการ แล้วเลือกการ สลับ การรีเฟรชที่เหมาะสมที่สุด เพื่อเปิด

    ภาพหน้าจอที่แสดงการสลับเพื่อเปิดใช้งานโหมดรีเฟรชที่เหมาะสมที่สุด

การรีเฟรชแบบเพิ่มหน่วยและข้อมูลผนวกเท่านั้น

วันนี้ การรีเฟรชแบบเพิ่มหน่วยจะใช้เฉพาะเมื่อข้อมูลต้นทางเป็น แบบผนวกระหว่าง การรีเฟรชเท่านั้น ถ้าตารางต้นฉบับใดๆ บันทึกการลบหรือการอัปเดต Fabric จะกลับไปใช้การรีเฟรชแบบเต็ม แม้ว่าจะเปิดใช้งาน CDF และแบบสอบถามที่ใช้เฉพาะ รองรับ SQL constructs

กลไกจัดการต้องการวิธีที่เชื่อถือได้ในการระบุแถวที่ถูกลบ เพื่อปรับปรุงประสิทธิภาพ ผู้ใช้สามารถระบุคําแนะนําการรีเฟรชได้ เรากําลังนําร่องสิ่งนี้กับลูกค้าที่เลือก

เปิดใช้งานการรีเฟรชแบบเพิ่มหน่วย

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

หากไม่มีการเปิดใช้งาน CDF การรีเฟรชที่เหมาะสมที่สุดจะสามารถเลือกได้ระหว่างการไม่รีเฟรชและการรีเฟรชแบบเต็มเท่านั้น

Tip

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

สกรีนช็อตที่แสดงแบนเนอร์ บันทึกการรีเฟรชและต้นทุน บนหน้า มุมมองทะเลสาบที่เป็นรูปธรรม พร้อมปุ่ม เปิดใช้งาน CDF

วิธีเปิดใช้งาน CDF โดยตรงจากแบนเนอร์

  1. ในแบนเนอร์ ให้เลือกเปิดใช้งาน CDF

  2. ในกล่องโต้ตอบ เปิดใช้งานการเปลี่ยนแปลงฟีดข้อมูล ให้ตรวจสอบรายการมุมมองทะเลสาบที่เป็นรูปธรรมและตารางต้นทางที่จะเปิดใช้งาน CDF

    สกรีนช็อตของกล่องโต้ตอบ เปิดใช้งาน เปลี่ยนฟีดข้อมูล ที่แสดงรายการมุมมองทะเลสาบที่เป็นรูปธรรมและตารางต้นทางที่จะเปิดใช้งาน CDF

  3. เลือก เปิดใช้งาน การรีเฟรชครั้งต่อไปจะสะท้อนถึงสถานะ 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

ปิดการรีเฟรชที่เหมาะสมที่สุด

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

  1. ไปที่เลคเฮาส์ของคุณแล้วเลือก วิวทะเลสาบที่เป็นรูปธรรม

  2. คลิกที่จัดการและปิดการสลับการรีเฟรชที่เหมาะสมที่สุด

    ภาพหน้าจอที่แสดงการสลับเพื่อเปลี่ยนเป็นโหมดรีเฟรชแบบเต็ม